1. 程式人生 > >Harbor的部分高可用(MYSQL分離)

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

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

未完待續

參考資料: