Harbor的部分高可用(MYSQL分離)
阿新 • • 發佈:2018-12-17
採用雙機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
未完待續
參考資料: