Harbor的部分高可用(MYSQL分离)

采用双机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

2.https://tonybai.com/2017/06/09/setup-a-high-availability-private-registry-based-on-harbor-and-cephfs/

3.http://dockone.io/article/1640

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值