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

Harbor私有镜像仓库(下)_第1张图片


Harbor私有镜像仓库(下)_第2张图片

 

(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

Harbor私有镜像仓库(下)_第3张图片


Harbor私有镜像仓库(下)_第4张图片

 

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

 

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

docker pull redis:alpine

docker images

Harbor私有镜像仓库(下)_第5张图片

 

启动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

Harbor私有镜像仓库(下)_第6张图片

 

(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

Harbor私有镜像仓库(下)_第7张图片

 

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

docker ps -a

docker rename postgres_test clair_db

docker rename mysql_test harbor_db

docker rename redis_test session

docker ps -a

Harbor私有镜像仓库(下)_第8张图片

 

八,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

Harbor私有镜像仓库(下)_第9张图片

 

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

yum -y install mysql

which mysql

Harbor私有镜像仓库(下)_第10张图片

 

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

mysql -uroot -p123123 -h192.168.200.110 -P3306

show databases;

source ha/registry.sql

show databases;

Harbor私有镜像仓库(下)_第11张图片


Harbor私有镜像仓库(下)_第12张图片

 

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

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'

Harbor私有镜像仓库(下)_第13张图片

 

再次导入表registry.sql

mysql -uroot -p123123 -h192.168.200.110 -P3306

show databases;

source ha/registry.sql

show databases;

Harbor私有镜像仓库(下)_第14张图片


Harbor私有镜像仓库(下)_第15张图片

 

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共享目录

Harbor私有镜像仓库(下)_第16张图片


Harbor私有镜像仓库(下)_第17张图片

 

修改/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

Harbor私有镜像仓库(下)_第18张图片


Harbor私有镜像仓库(下)_第19张图片

 

九,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

Harbor私有镜像仓库(下)_第20张图片

 

在备上把证书信任,信任之后重启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

Harbor私有镜像仓库(下)_第21张图片

 

在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

Harbor私有镜像仓库(下)_第22张图片

 

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

docker ps -a

docker start harbor_db

docker startclair_db

docker start session

docker ps -a

Harbor私有镜像仓库(下)_第23张图片

 

启动harbor-master

cd /data/install/harbor

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

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

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

Harbor私有镜像仓库(下)_第24张图片

 

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

https://192.168.200.70

Harbor私有镜像仓库(下)_第25张图片

 

在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

Harbor私有镜像仓库(下)_第26张图片

Harbor私有镜像仓库(下)_第27张图片


Harbor私有镜像仓库(下)_第28张图片

 

上传一个镜像进行测试

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

Harbor私有镜像仓库(下)_第29张图片


Harbor私有镜像仓库(下)_第30张图片

 

在主上查看测试结果

ls /data/storage

Harbor私有镜像仓库(下)_第31张图片

 

启动harbor-slave

cd /data/install/harbor

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

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

Harbor私有镜像仓库(下)_第32张图片

 

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

https://192.168.200.109

Harbor私有镜像仓库(下)_第33张图片

 

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

Harbor私有镜像仓库(下)_第34张图片


Harbor私有镜像仓库(下)_第35张图片

转载于:https://www.cnblogs.com/linyaonie/p/11238385.html

你可能感兴趣的:(Harbor私有镜像仓库(下))