Harbor私有镜像仓库(下)

七,Harbor HA:环境准备

  • 全新安装两台harbor,但不要着急执行./install(如果用旧的要清理下数据)
  • 要做Harbor高可用,我们需要准备一台NFS服务器共享2台harbor的数据存储目录,在生产环境中,我们可以选则Ceph或者Glusterfs
  • 我们需要一台Postgres数据库给Harbor的clair漏洞扫描组件使用
  • 我们需要一台MySQL数据库给Harbor使用
  • 我们需要一台redis数据库给session使用
主机IP用途VIP
harbor-master 192.168.200.70 Harbor镜像仓库-主 192.168.200.244
harbor-slave 192.168.200.109 Harbor镜像仓库-备  
dns-nfs 192.168.200.1110 DNS服务器和NFS服务器端(harbor HA文件存储)  
 

(1)在dns-nfs上搭建nfs服务端 ip4转发开开

为了省事儿把nfs服务端装在DNS服务器上

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

sysctl -p

mkdir -p /data/nfs

yum -y install nfs-utils

vim /etc/exports

cat /etc/exports

 
  1. /data/nfs 192.168.200.0/24(rw,no_root_squash)
  2. #默认root用户存的东西不降权

systemctl start nfs

image_1d0r3cm4497e86odnp1fg61811p.png-169.1kB


image_1d0r3feik17en17691hhn19ph1eg31m.png-152.5kB

 

(2)在harbor主和备上创建数据挂载目录,并安装nfs节点支持包(主备操作都一样)

yum -y install nfs-utils

mkdir -p /data/storage

mount 192.168.200.110:/data/nfs /data/storage

df -hT | grep /data/nfs

image_1d0r3h8j61g4ujjj18mm14c9ata23.png-158kB


image_1d0r3hh32r99j881bf51cg42vt2g.png-158.6kB

 

(3)在LDNS-NFS(NFS服务器端)启动一个redis容器

 

下载一个redis镜像(apline系统目前docker领域很火,因为它容量很小,比centos小很多)

docker pull redis:alpine

docker images

image_1d0r7ol8p1kogmdrc6pqvd10dk3t.png-46.2kB

 

启动redis镜像,映射端口

docker run -dit --name redis_test -p 6379:6379 redis:alpine

docker ps -a

image_1d0r7qb62rltm3712p6138kf704q.png-29.2kB

 

(4) 在LDNS-NFS(NFS服务器端)启动一个postgreSQL数据库容器

 

下载postgres

docker pull postgres

docker images

docker run -dit --name postgres_test -p 5432:5432 -e POSTGRES_PASSWORD=123123 postgres

docker ps -a

image_1d0r7tdsfjhv1p674rm1nt4f2057.png-109.4kB

 

(5) 在LDNS-NFS(NFS服务端)启动一个MySQL数据容器

 

下载MySQL 5.6版镜像

docker pull mysql:5.6

docker images

docker run -dit --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123123 mysql:5.6 --character-set-server=utf8

docker ps -a

image_1d0r8i23hq3k1m9tqav1go35l8k.png-111.3kB

 

(6)最后按照用途,我们分别给数据库改一下名称

docker ps -a

docker rename postgres_test clair_db

docker rename mysql_test harbor_db

docker rename redis_test session

docker ps -a

image_1d0r8ki3h1cd414436p92b0jlpa4.png-71.3kB

 

八,Harbor HA:修改配置

 

8.1 Harbor-Master向mysql_db容器里导入数据表(192.168.200.110)

 

再解压后的harbor的ha目录下的registry.sql表导入到我们之前在NFS服务端上创建的MySQL容器里

cd /data/install/harbor

ls

tree ha

 
  1. ha
  2. ├── docker-compose.clair.tpl
  3. ├── docker-compose.clair.yml
  4. ├── docker-compose.tpl
  5. ├── docker-compose.yml #需要修改的配置文件
  6. ├── registry.sql #需要导入的mysql表格
  7. └── sample
  8. ├── active_active
  9.    ├── check.sh
  10.    └── keepalived_active_active.conf
  11. └── active_standby
  12. ├── check_harbor.sh
  13. └── keepalived_active_standby.conf
  14. 3 directories, 9 files

image_1d0r8p77d1mt13g91hheaa51k1bah.png-56.8kB

 

Harbor-master本地安装mysql客户端连接程序

yum -y install mysql

which mysql

image_1d0r8uevb16jlqk41pm1uk1cence.png-122.5kB

 

远程连接到192.168.200.110(NFS服务器端)的3306端口 导入表registry.sql

mysql -uroot -p123123 -h192.168.200.110 -P3306

show databases;

source ha/registry.sql

show databases;

image_1d0r948b4lk3h2nfpf4nv1t7jfp.png-82.1kB


image_1d0r94mia12ii3eg1tbd138fg35g6.png-84.9kB

 

特别提示:如果导入表格出现如下错误

Specified key was too long; max key length is 767 bytes

这是因为导入的表格建立的索引超过mysql默认上线767bytes >=254 因此我们需要修改导入的表

cat -n ha/registry.sql | sed -n '220p;291p'

 
  1. 220 repository varchar(256) NOT NULL, #将256改成254
  2. 291 resource_name varchar(256), #将256改成254
  3. #改完之后在进行表格导入就不会报错了

vim ha/registry.sql

cat -n ha/registry.sql | sed -n '220p;291p'

image_1d0r9ejuj1b3q1ttetl5n891lnfn2.png-30.2kB

 

再次导入表registry.sql

mysql -uroot -p123123 -h192.168.200.110 -P3306

show databases;

source ha/registry.sql

show databases;

image_1d0r9i3vveuc1fl71r53t3sv6gnf.png-79.6kB


image_1d0r9igrn1iggli49ps18fh1j66ns.png-61.3kB

 

8.2 修改配置文件

 

修改/data/install/ha/docker-compose.yml配置文件(备库也要改!!)

cat -n ha/docker-compose.yml | sed -n '19p'

 
  1. 19 /data/registry:/storage:z

vim ha/docker-compose.yml

cat -n ha/docker-compose.yml | sed -n '19p'

 
  1. 19 /data/storage:/storage:z #修改成我们的nfs共享目录

image_1d0r9lik6f91eco15i4n27eepp9.png-22.7kB


image_1d0r9p42r1c5d124nsfamkd1n2qr9.png-23.6kB

 

修改/data/install/harharbor.cfg文件

cat -n harbor.cfg | sed -n '7p;11p;23p;24p;68p;130p;133p;136p;139p;145p;150p;154p;157p;160p;163p'

 
  1. 7 hostname = reg.mydomain.com #harbor的访问域名
  2. 11 ui_url_protocol = http #web访问连接方式
  3. 23 ssl_cert = /data/cert/server.crt #ca证书路径
  4. 24 ssl_cert_key = /data/cert/server.key #ca密钥路径
  5. 68 harbor_admin_password = Harbor12345 #harbor默认初始密码
  6. 130 db_host = mysql #harbor连接的mysql_db的IP
  7. 133 db_password = root123 #MySQL连接密码
  8. 136 db_port = 3306 #MySQL连接端口
  9. 139 db_user = root #MySQL连接用户
  10. 145 redis_url = redis:6379 #session连接的redis数据库路径
  11. 150 clair_db_host = postgres #clair漏洞检测组件连接的数据库IP
  12. 154 clair_db_password = password #postgres数据库连接密码
  13. 157 clair_db_port = 5432 #postgres数据库连接端口
  14. 160 clair_db_username = postgres #默认的连接用户名
  15. 163 clair_db = postgres #默认的库名
 

修改成如下所示(主备都一样)

vim harbor.cfg

scp harbor.cfg 192.168.200.109:/data/install/harbor/

cat -n harbor.cfg | sed -n '7p;11p;23p;24p;68p;130p;133p;136p;139p;145p;150p;154p;157p;160p;163p'

 
  1. 7 hostname = www.yunjisuan.com
  2. 11 ui_url_protocol = https
  3. 23 ssl_cert = /etc/ssl/harbor/www.yunjisuan.com.crt
  4. 24 ssl_cert_key = /etc/ssl/harbor/www.yunjisuan.com.key
  5. 68 harbor_admin_password = Harbor12345
  6. 130 db_host = 192.168.200.110
  7. 133 db_password = 123123
  8. 136 db_port = 3306
  9. 139 db_user = root
  10. 145 redis_url = 192.168.200.110:6379
  11. 150 clair_db_host = 192.168.200.110
  12. 154 clair_db_password = 123123
  13. 157 clair_db_port = 5432
  14. 160 clair_db_username = postgres
  15. 163 clair_db = postgres

image_1d0rbfa0ntk1lhctffp6l1cfn19.png-76.2kB


image_1d0rbfirq1lp715a74117a05fg1m.png-54.6kB

 

九,Harbor HA:启动Harbor

把证书信任给主,备,DNS-NFS 三台都得信任 ,信任之后都得重启docker!

mkdir -p /etc/ssl/harbor --->提前在nfs服务器创建目录

 

在主上把证书信任,并都发送给备和nfs,信任之后重启docker

cd /data/ssl/

cp www.yunjisuan.com.crt www.yunjisuan.com.key /etc/ssl/harbor

cp www.yunjisuan.com.crt /etc/pki/ca-trust/source/anchors/

scp www.yunjisuan.com.crt www.yunjisuan.com.key 192.168.200.109:/etc/ssl/harbor

scp www.yunjisuan.com.crt www.yunjisuan.com.key 192.168.200.110:/etc/ssl/harbor

update-ca-trust enable

update-ca-trust extract

systemctl restart docker

image_1d0rco7dj3m1530b0i1t0s2m.png-76kB

 

在备上把证书信任,信任之后重启docker

cd /etc/ssl/harbor

cp www.yunjisuan.com.crt /etc/pki/ca-trust/source/anchors/

update-ca-trust enable

update-ca-trust extract

systemctl restart docker

image_1d0rcttit1qnb19jv1it01cns22c3p.png-24.8kB

 

在nfs上把证书信任,信任之后重启docker

cd /etc/ssl/harbor

cp www.yunjisuan.com.crt /etc/pki/ca-trust/source/anchors/

update-ca-trust enable

update-ca-trust extract

systemctl restart docker

image_1d0rcu7bg6nh1eej1m40104c1h646.png-28.1kB

 

DNS-NFS上的docker进程开启 (重启之后就关了)

docker ps -a

docker start harbor_db

docker startclair_db

docker start session

docker ps -a

image_1d0rd06rc877p5v138ve897lh4j.png-73kB

 

启动harbor-master

cd /data/install/harbor

./install.sh --with-clair --ha

因为使用了自定义存储路径,安装途中需要yes确认

主和备两台最好一个一个的启动,免得冲突

image_1d0rd2j1f1e71v11qi412eflui50.png-42.4kB

 

进行Harbor-master的IP浏览器进行访问测试

https://192.168.200.70

image_1d0rda7vr1ojdro4k3h158o1v6u6g.png-92.1kB

 

在DNS-NFS上进行上传测试

 

修改映射

cat /etc/hosts

 
  1. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  2. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  3. 192.168.200.70 www.yunjisuan.com

image_1d0rdc0lm1fsg1oje14vnn3c1bca7d.png-21.2kB

image_1cu1d9gtqlvbqu8610er71dn59.png-233.6kB


image_1cu1da7tid1pbff98gmc3kjrm.png-106.6kB

 

上传一个镜像进行测试

docker login -uadmin -pHarbor12345 www.yunjisuan.com

docker images

docker tag redis:alpine www.yunjisuan.com/library/redis:v1

docker push www.yunjisuan.com/library/redis:v1

image_1d0rdohel1ure1785odv1ati1kud8q.png-81.6kB


image_1d0rdscepbva1eqfqceokb1f9han.png-91.5kB

 

在主上查看测试结果

ls /data/storage

image_1d0rdsk0evh3f0m1u1718dn1in6b4.png-11.8kB

 

启动harbor-slave

cd /data/install/harbor

./install.sh --with-clair --ha

因为使用了自定义存储路径,安装途中需要yes确认

image_1d0rdtr2l1d6amftk70nrf1e2vbh.png-42.4kB

 

进行Harbor-slave的IP浏览器进行访问测试

https://192.168.200.109

image_1d0re8ssr1t3vbpidm04rslinde.png-92.7kB

 

安装keepalived(域名映射在VIP上即可)

image_1cu1dpb2r1oei107q1cc1jd3dfu13.png-239.8kB


image_1cu1dpqk01ieb13nl1q9n1bb36911g.png-133.3kB

原文地址:https://www.cnblogs.com/linyaonie/p/11238385.html