溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Harbor多實(shí)例高可用共享存儲(chǔ)該怎么搭建

發(fā)布時(shí)間:2021-10-09 14:41:33 來(lái)源:億速云 閱讀:246 作者:柒染 欄目:系統(tǒng)運(yùn)維

今天就跟大家聊聊有關(guān)Harbor多實(shí)例高可用共享存儲(chǔ)該怎么搭建,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

多實(shí)例共享存儲(chǔ)架構(gòu)圖

Harbor多實(shí)例高可用共享存儲(chǔ)該怎么搭建

本文 LB 不使用 Nginx,使用阿里SLB。

本文架構(gòu)需要考慮三個(gè)問(wèn)題

1、共享存儲(chǔ)的選取,Harbor的后端存儲(chǔ)目前支持AWS S3、Openstack Swift,  Ceph等。本文使用阿里云極速性NAS,磁盤IO性能比單塊磁盤讀寫性能要好。使用 NFS V3 版本掛載。

2、Session 不能在不同的實(shí)例上共享,所以Harbor Redis 需要單獨(dú)部署,并且多個(gè)實(shí)例連接相同的Redis。

3、Harbor多實(shí)例數(shù)據(jù)庫(kù)問(wèn)題,必須單獨(dú)部署一個(gè)數(shù)據(jù)庫(kù),并且多個(gè)實(shí)例連接相同的數(shù)據(jù)庫(kù)。

注意:生產(chǎn)環(huán)境如果使用阿里云NAS,推薦使用 極速性NAS,不推薦使用 通用型NAS。

阿里云NAS性能參考文檔  https://help.aliyun.com/document_detail/124577.html?spm=a2c4g.11186623.6.552.2eb05ea0HJUgUB

部署資源

Harbor多實(shí)例高可用共享存儲(chǔ)該怎么搭建

部署

Harbor 選擇在線部署,使用 docker-compose 部署,docker-compose 和 Docker  部署環(huán)境本文不在介紹,網(wǎng)上可以搜索到相關(guān)文檔。

1、掛載阿里云極速性NAS

harbor1 和 harbor2 機(jī)器都需要執(zhí)行掛載 NAS

配置開(kāi)機(jī)自動(dòng)掛載,打開(kāi) /etc/fstab 配置文件,添加掛載命令。

# 創(chuàng)建 NAS 掛載目錄 $ mkdir /data  # 提高同時(shí)發(fā)起的NFS請(qǐng)求數(shù)量 $ sudo echo "options sunrpc tcp_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf $ sudo echo "options sunrpc tcp_max_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf

掛載NFS v4文件系統(tǒng),添加以下命令:

file-system-id.region.nas.aliyuncs.com:/ /data nfs vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0

如果您要掛載NFS v3文件系統(tǒng),添加以下命令:

  1. file-system-id.region.nas.aliyuncs.com:/ /data nfs vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0 


# 在 /etc/fstab 配置文件添加好掛載,并執(zhí)行掛載 $ mount -a  # 檢查掛載,如果結(jié)果中存在NFS文件系統(tǒng)的掛載地址,則說(shuō)明掛載成功 $ df -h | grep aliyun

2、臨時(shí)部署單機(jī) Harbor

在 harbor1 機(jī)器上操作

# 在線部署Harbor $ cd /opt/ $ wget https://github.com/goharbor/harbor/releases/download/v2.2.1/harbor-online-installer-v2.2.1.tgz $ tar xf harbor-online-installer-v2.2.1.tgz $ cd /opt/harbor $ cp harbor.yml.tmpl harbor.yml  # 創(chuàng)建harbor數(shù)據(jù)存儲(chǔ) $ mkdir /data/harbor  # 添加域名證書,已有域名SSL證書 $ mkdir /data/harbor/cert  # 把SSL證書公鑰和私鑰上傳到 /data/harbor/cert 目錄中 $ scp harbor.example.pem root@192.168.10.10:/data/harbor/cert/ $ scp harbor.example.key root@192.168.10.10:/data/harbor/cert/  # 配置 harbor.yml 文件,下面是修改后文件與原文件比較結(jié)果 $ diff harbor.yml harbor.yml.tmpl  5c5 < hostname: harbor.example.com --- > hostname: reg.mydomain.com 17,18c17,18 <   certificate: /data/harbor/cert/harbor.example.pem <   private_key: /data/harbor/cert/harbor.example.key --- >   certificate: /your/certificate/path >   private_key: /your/private/key/path 29c29 < external_url: https://harbor.example.com --- > # external_url: https://reg.mydomain.com:8433  < data_volume: /data/harbor --- > data_volume: /data  # 生成配置文件 $ cd /opt/harbor  # harbor開(kāi)啟helm charts 和 鏡像漏洞掃描 $ ./prepare --with-notary --with-trivy --with-chartmuseum  # 安裝 $ ./install.sh --with-notary --with-trivy --with-chartmuseum  # 查看 $ docker-compose ps

3、單獨(dú)部署Harbor數(shù)據(jù)庫(kù)和Redis

  1. # 創(chuàng)建 postgres 和 redis 存儲(chǔ)目錄 

  2. $ mkdir -p /data/harbor-redis /data/harbor-postgresql 

  3.  

  4. # 修改所屬組 

  5. $ chown -R 999.999 /data/harbor-redis /data/harbor-postgresql 


# 創(chuàng)建 postgres 和 redis docker-compose.yml 文件 $ vim docker-compose.yml  version: '2.3'  services:   redis:     image: goharbor/redis-photon:v2.2.1     container_name: harbor-redis     restart: always     cap_drop:       - ALL     cap_add:       - CHOWN       - SETGID       - SETUID     volumes:       - /data/harbor-redis:/var/lib/redis     networks:       - harbor-db     ports:       - 6379:6379   postgresql:     image: goharbor/harbor-db:v2.2.1     container_name: harbor-postgresql     restart: always     cap_drop:       - ALL     cap_add:       - CHOWN       - DAC_OVERRIDE       - SETGID       - SETUID     environment:       POSTGRES_USER: postgres       POSTGRES_PASSWORD: test2021     volumes:       - /data/harbor-postgresql:/var/lib/postgresql/data:z     networks:       - harbor-db     ports:       - 5432:5432  networks:  harbor-db:    driver: bridge  # 部署 postgres 和 redis $ docker-compose up -d

4、導(dǎo)入 postgres 數(shù)據(jù)

# 進(jìn)入臨時(shí)harbor-db容器導(dǎo)出相關(guān)表及數(shù)據(jù) $ docker exec -it -u postgres harbor-db bash  # 導(dǎo)出數(shù)據(jù) $ pg_dump -U postgres registry > /tmp/registry.sql $ pg_dump -U postgres notarysigner > /tmp/notarysigner.sql $ pg_dump -U postgres notaryserver > /tmp/notaryserver.sql  # 將數(shù)據(jù)導(dǎo)入單獨(dú)部署的PostgreSQL數(shù)據(jù)庫(kù) $ psql -h 192.168.10.10 -U postgres registry -W < /tmp/registry.sql $ psql -h 192.168.10.10 -U postgres notarysigner -W < /tmp/notarysigner.sql $ psql -h 192.168.10.10 -U postgres notaryserver -W < /tmp/notaryserver.sql

5、清理臨時(shí)部署單機(jī)Harbor數(shù)據(jù)和相關(guān)配置文件

  1. # 清理harbr數(shù)據(jù)和配置文件 

  2. $ cp -a /data/harbor/cert /tmp/ 

  3. $ rm -rf /data/harbor/* 

  4. $ rm -rf /opt/harbor 

  5. $ cp -a /tmp/cert /data/harbor/ 

  6.  

  7. # 重新創(chuàng)建配置文件 

  8. $ cd /opt/ 

  9. $ tar xf harbor-online-installer-v2.2.1.tgz 

  10. $ cd /opt/harbor 

  11.  

  12. # 修改配置文件,連接單獨(dú)部署postgres和redis,注釋harbor自帶的postgres和redis 

  13. $ cp harbor.yml.tmpl harbor.yml 

  14. $ diff harbor.yml harbor.yml.tmpl 

  15.  

  16. 5c5 

  17. < hostname: harbor.example.com 

  18. --- 

  19. > hostname: reg.mydomain.com 

  20. 17,18c17,18 

  21. <   certificate: /data/harbor/cert/harbor.example.pem 

  22. <   private_key: /data/harbor/cert/harbor.example.key 

  23. --- 

  24. >   certificate: /your/certificate/path 

  25. >   private_key: /your/private/key/path 

  26. 29c29 

  27. < external_url: https://harbor.example.com 

  28. --- 

  29. > # external_url: https://reg.mydomain.com:8433 

  30.  

  31. 37c37 

  32. < # database: 

  33. --- 

  34. > database: 

  35. 39c39 

  36. <   # password: root123 

  37. --- 

  38. >   password: root123 

  39. 41c41 

  40. <   # max_idle_conns: 50 

  41. --- 

  42. >   max_idle_conns: 50 

  43. 44c44 

  44. <   # max_open_conns: 1000 

  45. --- 

  46. >   max_open_conns: 1000 

  47. 47c47 

  48.  

  49. < data_volume: /data/harbor 

  50. --- 

  51. > data_volume: /data 

  52.  

  53. 135,158c135,158 

  54. < external_database: 

  55. <   harbor: 

  56. <     host: 192.168.10.10 

  57. <     port: 5432 

  58. <     db_name: registry 

  59. <     username: postgres 

  60. <     password: test2021 

  61. <     ssl_mode: disable 

  62. <     max_idle_conns: 50 

  63. <     max_open_conns: 1000 

  64. <   notary_signer: 

  65. <     host: 192.168.10.10 

  66. <     port: 5432 

  67. <     db_name: notarysigner 

  68. <     username: postgres 

  69. <     password: test2021 

  70. <     ssl_mode: disable 

  71. <   notary_server: 

  72. <     host: 192.168.10.10 

  73. <     port: 5432 

  74. <     db_name: notaryserver 

  75. <     username: postgres 

  76. <     password: test2021 

  77. <     ssl_mode: disable 

  78. --- 

  79. > # external_database: 

  80. > #   harbor: 

  81. > #     host: harbor_db_host 

  82. > #     port: harbor_db_port 

  83. > #     db_name: harbor_db_name 

  84. > #     username: harbor_db_username 

  85. > #     password: harbor_db_password 

  86. > #     ssl_mode: disable 

  87. > #     max_idle_conns: 2 

  88. > #     max_open_conns: 0 

  89. > #   notary_signer: 

  90. > #     host: notary_signer_db_host 

  91. > #     port: notary_signer_db_port 

  92. > #     db_name: notary_signer_db_name 

  93. > #     username: notary_signer_db_username 

  94. > #     password: notary_signer_db_password 

  95. > #     ssl_mode: disable 

  96. > #   notary_server: 

  97. > #     host: notary_server_db_host 

  98. > #     port: notary_server_db_port 

  99. > #     db_name: notary_server_db_name 

  100. > #     username: notary_server_db_username 

  101. > #     password: notary_server_db_password 

  102. > #     ssl_mode: disable 

  103. 161,175c161,175 

  104. < external_redis: 

  105. <   # support redis, redis+sentinel 

  106. <   # host for redis: <host_redis>:<port_redis> 

  107. <   # host for redis+sentinel: 

  108. <   #  <host_sentinel1>:<port_sentinel1>,<host_sentinel2>:<port_sentinel2>,<host_sentinel3>:<port_sentinel3> 

  109. <   host: 192.168.10.10:6379 

  110. <   password: 

  111. <   # sentinel_master_set must be set to support redis+sentinel 

  112. <   #sentinel_master_set: 

  113. <   # db_index 0 is for core, it's unchangeable 

  114. <   registry_db_index: 1 

  115. <   jobservice_db_index: 2 

  116. <   chartmuseum_db_index: 3 

  117. <   trivy_db_index: 5 

  118. <   idle_timeout_seconds: 30 

  119. --- 

  120. > # external_redis: 

  121. > #   # support redis, redis+sentinel 

  122. > #   # host for redis: <host_redis>:<port_redis> 

  123. > #   # host for redis+sentinel: 

  124. > #   #  <host_sentinel1>:<port_sentinel1>,<host_sentinel2>:<port_sentinel2>,<host_sentinel3>:<port_sentinel3> 

  125. > #   host: redis:6379 

  126. > #   password: 

  127. > #   # sentinel_master_set must be set to support redis+sentinel 

  128. > #   #sentinel_master_set: 

  129. > #   # db_index 0 is for core, it's unchangeable 

  130. > #   registry_db_index: 1 

  131. > #   jobservice_db_index: 2 

  132. > #   chartmuseum_db_index: 3 

  133. > #   trivy_db_index: 5 

  134. > #   idle_timeout_seconds: 30 


# 部署第一個(gè)節(jié)點(diǎn) harbor $ cd /opt/harbor  # harbor開(kāi)啟helm charts 和 鏡像漏洞掃描 $ ./prepare --with-notary --with-trivy --with-chartmuseum  # 安裝 $ ./install.sh --with-notary --with-trivy --with-chartmuseum  # 查看 $ docker-compose ps  # 拷貝配置到 harbor2 機(jī)器上 $ scp -r /opt/harbor 192.168.10.11:/opt/

在 harbor2 機(jī)器上操作

# 部署第二個(gè)節(jié)點(diǎn) harbor $ cd /opt/harbor  # harbor開(kāi)啟helm charts 和 鏡像漏洞掃描 $ ./prepare --with-notary --with-trivy --with-chartmuseum  # 安裝 $ ./install.sh --with-notary --with-trivy --with-chartmuseum  # 查看 $ docker-compose ps

這里不具體介紹SLB配置方法,具體配置方法參考下面阿里云SLB配置文檔,配置 443端口,使用 TCP 協(xié)議,后端映射到兩臺(tái) harbor1 和  harbor2 443端口上。

看完上述內(nèi)容,你們對(duì)Harbor多實(shí)例高可用共享存儲(chǔ)該怎么搭建有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI