暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

【干货分享】Harbor镜像仓库部署实践(三)

稻壳编程 2019-11-21
855

作者简介

211工程院校贵州大学管理学院硕士研究生、互联网金融行业资深DevOps研发工程师. 曾在国内多家知名互联网公司 平安科技、微众银行、顺丰科技、魅族任职. 具有多年国内一线互联网公司自动化运维平台设计与开发经验。



Harbor高可用集群解决方案--实践篇

多Harbor实例共享后端存储

实验环境:

HarborA 172.16.70.91

HarborB 172.16.70.92

后端存储(NFS、PostgreSQL、Redis) 172.16.70.90

 1 

准备工作

根据上文内容可知,部署Harbor多实例共享后端存储的高可用集群,需要为集群提供的后端存储有NFS、Redis、PostgreSQL。 


1.1 NFS共享存储安装
步骤1. YUM方式安装必需的RPM包
[root@localhost ~]# yum -y install nfs-utils rpcbind   


步骤2. 创建NFS共享目录
[root@localhost ~]# mkdir -p data/harbor_data
[root@localhost ~]# chown nobody:nobody data/harbor_data/ 

步骤3. 修改NFS服务配置文件
[root@localhost ~]# echo "/data/harbor_data 172.16.70.0/24(rw,sync,no_root_squash)"  >> etc/exports 


步骤4. 启动NFS服务器
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs

步骤5. 配置NFS客户端(两台Harbor上都需进行此步骤)
由于Harbor服务器需要使用NFS作为共享存储,此时Harbor服务器作为NFS的客户端,此时需要在两台Harbor服务器上安装nfs-utils。
[root@localhost harbor]# yum -y install nfs-utils  

步骤6. 在NFS客户端上查看NFS的连通性(两台Harbor上都需进行此步骤)
[root@localhost harbor]# showmount -e 172.16.70.90

步骤7. 在Harbor服务器上挂载NFS共享存储(两台Harbor上都需进行此步骤)
修改/etc/fstab配置文件加入以下内容
172.16.70.90:/data/harbor_data mnt/harbor_disk  nfs defaults 0 0 

综上:NFS客户端与服务端部署完成,稍后将配置其与Harbor关联。


1.2 PostgreSQL数据库安装

当前集群中Harbor的版本为v1.8.6,使用的数据库为PostgreSQL,以下将通过YUM的方式部署PostgreSQL数据库。


步骤1.  下载PostgreSQL官方YUM源配置文件包并安装
[root@localhost ~]# wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7.6-x86_64/pgdg-centos96-9.6-3.noarch.rpm 
[root@localhost ~]# rpm -ivh pgdg-centos96-9.6-3.noarch.rpm 


步骤2. 安装PostgreSQL
[root@localhost yum.repos.d]# yum  -y install postgresql96-server postgresql96-contrib 


步骤3. 初始化数据库
[root@localhost ~]# usr/pgsql-9.6/bin/postgresql96-setup initdb  


步骤4. 启动数据库
[root@localhost ~]# systemctl restart postgresql-9.6 
[root@localhost ~]# systemctl enable postgresql-9.6


步骤5. PostgreSQL数据库配置

5.1 修改密码

5.2 开启远程访问

[root@localhost ~]#  vi var/lib/pgsql/9.6/data/postgresql.conf

#listen_addresses = 'localhost'  为  listen_addresses='*'

5.3 信任远程连接
[root@localhost ~]#  vim var/lib/pgsql/9.6/data/pg_hba.conf
加入:
host    all  all  172.16.70.91/32 trust
host    all  all  172.16.70.92/32 trust
host    all  all  172.16.70.90/32 trust

步骤6. 重启PostgreSQL服务

[root@localhost pgsql]# systemctl restart postgresql-9.6  


步骤7. 验证服务

[root@localhost data]# psql -h 172.16.70.90 -p 5432 -U postgres 
综上:PostgreSQL服务器部署完成,稍后将配置其与Harbor关联。


1.3 Redis服务安装

步骤1. 安装redis

[root@localhost ]# yum install epel-release  
[root@localhost ]# yum -y install redis 


步骤2. 修改配置参数

[root@localhost ~]#  sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' etc/redis.conf   
[root@localhost ~]#  sed -i 's/daemonize no/daemonize yes/g' etc/redis.conf   

步骤3. 启动并测试redis连接

[root@localhost ~]# systemctl restart redis
[root@localhost ~]# systemctl enable redis
[root@localhost ~]# redis-cli -h 172.16.70.90
综上:Redis服务部署完成,稍后将配置其与Harbor关联。

 2 

多Harbor实例共享后端存储

组成Harbor项目的容器是由docker-compose编排的,将Harbor的部署架构由单机变更为集群模式,需要对harbor目录下的docker-compose.yml和harbor.yml配置文件进行修改。


2.1   配置Harbor连接外部存储

        修改docker-compose.yml配置文件,找到registry配置区块,按照下图方式进行修改,其中/mnt/harbor_disk/registry为NFS共享存储的本地挂载点。


2.1   配置Harbor连接外部数据库

[root@localhost harbor_disk]#  docker-compose  down

步骤1.

修改docker-compose.yml配置文件,找到PostgreSQL区块,由于使用了外部数据库作为集群多Harbor实例的共享数据库,所以可将该区块所有配置注释掉。


步骤2.        

在配置文件中寻找依赖postgreSQL的配置区块并将其注释。


步骤3.

修改harbor.yml配置文件,添加PostgreSQL相关配置到external_database区块。


步骤4. 迁移数据库

4.1 进入harbor-db容器导出相关表及数据

[root@localhost harbor]# docker exec -it a0b1202b2fca   /bin/bash

Harbor项目有3个数据库分别叫做 registry、notarysigner、notaryserver。


4.2 导出数据库

postgres [ ~ ]$ pg_dump -U postgres registry > tmp/registry.sql 

postgres [ ~ ]$ pg_dump -U postgres notarysigner > tmp/notarysigner.sql  

postgres [ ~ ]$ pg_dump -U postgres notaryserver > tmp/notaryserver.sql


[root@localhost ~]# docker cp a0b1202b2fca:/tmp/registry.sql ./

[root@localhost ~]# docker cp a0b1202b2fca:/tmp/notarysigner.sql ./

[root@localhost ~]# docker cp a0b1202b2fca:/tmp/notaryserver.sql ./


4.3 将数据导入至外部PostgreSQL数据库

postgres=# create database registry

postgres-# create database notarysigner 

postgres-# create database notaryserver


-bash-4.2$ psql -U postgres registry < /tmp/registry.sql           

-bash-4.2$ psql -U postgres notarysigner  < /tmp/notarysigner.sql               

-bash-4.2$ psql -U postgres notaryserver < /tmp/notaryserver.sql


4.4 配置Harbor连接外部redis

步骤1.

修改harbor.yml配置文件,添加redis相关配置到external_redis区块。


步骤2.

修改docker-compose.yml配置文件,删除redis相关区块配置并寻找依赖redis的区块,并将其注释。



4.5 启动Harbor

[root@localhost harbor_disk]#  docker-compose  up -d


4.6 同步配置

将HarborA主机上的docker-compose.yml和harbor.yml拷贝至HarborB,除了harbor.yml中的hostname配置有所区别外,其他配置两台主机需全部保持一致,启动Harbor。


验证集群:



综上两个Harbor实例中的项目与镜像完全一致!

 3 

结束语

如果本文可以对您的工作学习带来帮助,请扫描左侧赞赏码以资鼓励作者;文章勘误请扫描右侧二维码联系作者。



文章转载自稻壳编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论