Harbor HA:环境与准备
- 全新安装两台harbor,但不要着急执行./install(如果用旧的要清理下数据)
- 要做Harbor高可用,我们需要准备一台NFS服务器共享两台Harbor的数据存储目录,在生产环境中,我们可以选择Ceph或Glusterfs
- 我们需要一台Postgres数据库给Harbor的clair漏洞扫描组件使用
- 我们需要一台MySQL数据库给Harbor使用
- 我们需要一台redis数据库给session使用
主机名 | IP | 用途 | VIP |
---|---|---|---|
Harbor-Master | 192.168.100.108 | Harbor镜像仓库-主 | 192.168.100.244 |
Harbor-Slave | 192.168.100.107 | Harbor镜像仓库-备 | |
LDNS | 192.168.100.106 | DNS服务器 | NFS服务器端(Harbor HA文件存储) |
harbor+keepalived VIP漂移
(1)在LDNS上搭建nfs服务端
[root@localhost named]# mkdir -p /data/nfs
[root@localhost named]# yum -y install nfs-utils
[root@localhost named]# vim /etc/exports
/data/nfs 192.168.100.0/24(rw,no_root_squash)
[root@localhost named]# systemctl start nfs
(2)在harbor主和备上创建数据挂载目录,并安装nfs节点支持包
#harbor主、备都进行如下操作
[root@localhost named]# yum -y install nfs-utils
[root@localhost ~]# mkdir -p /data/storage
[root@localhost ~]# mount 192.168.100.106:/data/nfs /data/storage
#查看主harbor
[root@localhost ~]# df -hT | grep /data/nfs
192.168.100.106:/data/nfs nfs4 17G 2.2G 15G 13% /data/storage
#查看备harbor
[root@localhost harbor]# df -hT | grep /data/nfs
192.168.100.106:/data/nfs nfs4 17G 2.2G 15G 13% /data/storage
(3)在docker-client(NFS服务器端)启动一个redis容器
#下载一个redis镜像(alpine系统目前docker领域很火,因为它容量很小,比centos小很多)
[root@localhost named]# docker pull redis:alpine
#启动redis镜像,映射端口
[root@localhost named]# docker run -dit --name redis_test -p 6379:6379 redis:alpine
2932de59b5c3a234fad7817673312b8e1606b0c4c4a45e09ba9396b5fee36782
[root@localhost named]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2932de59b5c3 redis:alpine "docker-entrypoint.s…" 11 seconds ago Up 8 seconds 0.0.0.0:6379->6379/tcp redis_test
(4)在docker-client(NFS服务器端)启动一个postgreSQL数据库容器
#下载postgres
[root@localhost named]# docker pull postgres
[root@localhost named]# docker run -dit --name postgres_test -p 5432:5432 -e POSTGRES_PASSWORD=123456 postgres
9c56f91a5f714963e2729dbc3f7a8b77a41860a3d3ffb9ac41adae6e071ae1ed
[root@localhost named]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c56f91a5f71 postgres "docker-entrypoint.s…" 14 seconds ago Up 13 seconds 0.0.0.0:5432->5432/tcp postgres_test
2932de59b5c3 redis:alpine "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:6379->6379/tcp redis_test
(5)在docker-client(NFS)服务器端启动一个MySQL数据库容器
#下载MySQL5.6版镜像
[root@localhost ~]# docker pull mysql:5.6
[root@localhost named]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres latest 7602d1365872 2 weeks ago 312MB
mysql 5.6 27e29668a08a 2 weeks ago 256MB
redis alpine b42dc832c855 3 weeks ago 40.9MB
#启动MySQL容器,并映射端口
[root@localhost named]# docker run -dit --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 --character-set-server=utf8
6a3323210de5df0d28c7dcc3e870cbf9590e3c4dd93accadf4b5654384f0a235
[root@localhost named]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a3323210de5 mysql:5.6 "docker-entrypoint.s…" 23 seconds ago Up 21 seconds 0.0.0.0:3306->3306/tcp mysql_test
9c56f91a5f71 postgres "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:5432->5432/tcp postgres_test
2932de59b5c3 redis:alpine "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp redis_test
(6)最后按照用途,我们分别给数据库改一下名称
[root@localhost named]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a3323210de5 mysql:5.6 "docker-entrypoint.s…" 23 seconds ago Up 21