采用双机HARBOR连接到同一个MYSQL数据库的方案实现,三台机器分别为:
1.Harbor1 192.168.199.200
2.Harbor2 192.168.199.201
3.MYSQL-SERVER 192.168.199.202
1.在Harbor1和Harbor2上安装Harbor:
1.1.安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose version
1.2.安装harbor
1.获取离线安装包:
wget https://github.com/vmware/harbor/releases/download/v1.5.3/harbor-offline-installer-v1.1.2.tgz
2.解压安装包并进入文件夹
tar -xvf harbor-offline-installer-v1.5.3.tgz && cd harbor
1.3 配置harbor
解压缩之后,目录下回生成harbor.cfg文件,该文件就是Harbor的配置文件,修改如下选项
$ vi harbor.cfg
The IP address or hostname to access admin UI and registry service.
#DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname = 192.168.199.200
...
#######Harbor DB configuration section#######
#The address of the Harbor database. Only need to change when using external db.
db_host = 192.168.199.202
#The password for the root user of Harbor DB. Change this before any production use.
db_password = hello123
#The port of Harbor database host
db_port = 3306
#The user name of Harbor database
db_user = root
...
1.4启动harbor
修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各容器
./install.sh
启动完成后,我们访问刚设置的hostname即可 192.168.199.200,192.168.199.201,默认是80端口.
1.5登陆harbor
用户名admin,密码默认是Harbor12345
1.6 新建项目
点击新建项目,按照需求设置新建项目完毕后,我们就可以用admin账户提交本地镜像到Harbor仓库了。例如我们提交本地nginx镜像。
1.7 客户机docker配置
1.配置docker http连接至Harbor仓库
$ sudo vi /etc/docker/daemon.json
增加 {"insecure-registry" = ["192.168.199.200","192.168.199.201"]}
2.客户机登录harbor hub
$ sudo docker 192.168.199.200
Username: admin
Password:
Login Succeeded
$ sudo docker 192.168.199.201
Username: admin
Password:
Login Succeeded
2.安装MYSQL
2.1 在MYSQL-SERVER上安装MYSQL
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
测试安装是否成功:
sudo netstat -tap | grep mysql
登录操作:
mysql -u root -p
2.2 在Harbor1和Harbor上安装MYSQL-CLIENT
sudo apt-get install mysql-client
3. 配置MYSQL和HARBOR
3.1 设置MYSQL-user权限(这里仅测试环境这么用)
mysql > GRANT ALL ON *.* TO 'harbor'@'%';
3.2 迁移数据
如果此时镜像库中已经有了数据,我们需要做一些迁移工作。
attach到harbor db组件的container中,将registry这张表dump到registry.dump文件中。
#docker exec -i -t 6e1e4b576315 bash
在db container中:
# mysqldump -u root -p --databases registry > registry.dump
回到node,将dump文件从container中copy出来:
#docker cp 6e1e4b576315:/root/registry.dump ./
再mysql login到external Database,将registry.dump文件导入:
# mysql -h external_db_ip -P 3306 -u harbor -p
# mysql> source ./registry.dump;
3.3 修改Harbor组件adminserver配置文件
$ vi ./common/config/adminserver/env
# 如果想一劳永逸的话修改./templates/config/adminserver/env
... ...
MYSQL_HOST=192.168.199.202
MYSQL_PORT=3306
MYSQL_USR=root
MYSQL_PWD=hello123
... ...
RESET=true <--- 改为true,非常关键
$vi ./common/config/db/env
MYSQL_ROOT_PASSWORD=hello123
3.4 删除docker-compose.yml中mysql字段并依赖中的mysql项
这一段不要了
mysql:
image: vmware/harbor-db:v1.5.0
container_name: harbor-db
restart: always
volumes:
- /data/database:/var/lib/mysql:z
networks:
- harbor
env_file:
- ./common/config/db/env
depends_on:
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "mysql"
删除其他组件中depenfs_on的mysql项
3.5 重启Harbor服务
$ sudo docker-compose down -v
$ sudo docker-compose up -d
这样我们访问两个不同IP的harbor时用户数据、配置数据和项目数据就都是一样的了。
4.MYSQL双机同步备份HA
未完待续
参考资料:
1.https://blog.csdn.net/weixin_41465338/article/details/80146218