1. 程式人生 > >harbor 高可用部署

harbor 高可用部署

harbor 高可用部署

harbor高可用圖

資料庫使用外接的mysql redis 解決session 問題

1.cephfs 部署

1.1 機器列表

10.0.0.1        harbor-ceph-node1 
10.0.0.2        harbor-ceph-node2 
10.0.0.3        harbor-ceph-node3 
10.0.0.4        harbor-ceph-node4 
10.0.0.5        harbor-ceph-node5 

1.2 安裝ceph-deploy

1.2.1 新增ceph 源

我在跳板機上(10.0.0.10)安裝ceph-deploy    

vim /etc/yum.repos.d/ceph.repo

[ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-luminous/el7/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-luminous/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc 

使用的版本是rpm-luminous,系統為el7

1.2.2 安裝release.asc 金鑰

   rpm --import 'https://download.ceph.com/keys/release.asc'  

1.2.3 安裝ceph-deploy(10.0.0.10)

   yum install ceph-deploy -y 

1.3 安裝NTP SSH

  在所有的ceph 節點安裝NTP 和SSH  
  yum install ntp ntpdate ntp-doc  -y
  yum install openssh-server -y       

1.4 建立ceph 使用者

1.4.1 在各ceph 節點建立新使用者

 useradd -d /home/ceph -m ceph        
 passwd ceph    

1.4.2 確保各ceph節點新建立的使用者都有sudo 許可權

 echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
 chmod 0440 /etc/sudoers.d/ceph

1.4.3 生成ssh金鑰對

   su - ceph 
   ssh-keygen  直接回車就行

1.4.4 把公鑰拷貝到ceph 節點

ssh-copy-id -i .ssh/id_rsa.pub [email protected]      
 ......

1.4.5 使用ssh 配置檔案

su - ceph 
vi  .ssh/config 
  Host node1
    Hostname harbor-ceph-node1
    User ceph
   Host node2
            Hostname harbor-ceph-node2
            User ceph
    Host node3
            Hostname harbor-ceph-node3
            User ceph
    Host node4
            Hostname harbor-ceph-node4
            User ceph
    Host node5
            Hostname harbor-ceph-node5
            User ceph

  chmod  644  .ssh/config  
  需要在ceph 節點上做一下hosts 解析 

1.5 建立分割槽

  為ceph 單獨掛載一個獨立磁碟 
  fdisk /dev/vdc                
  mkfs.xfs /dev/vdc1 
  mkdir /ceph-harbor
  blikd
  寫如到 /etc/fstab 
  mount  /dev/vdc1  /ceph-harbor      

1.6 安裝儲存叢集

建立ceph 儲存叢集,它有3個monitor 和5個osd 守護程序。

在10.0.0.10上面 
su - ceph
mkdir my-cluster 
cd my-cluster 
使用sudo 注意事項
禁用 requiretty
在某些發行版(如 CentOS )上,執行 ceph-deploy 命令時,如果你的 Ceph 節點預設設定了 requiretty 那就會遇到報錯。可以這樣禁用此功能:執行 sudo visudo ,找到 Defaults requiretty 選項,把它改為 Defaults:ceph !requiretty ,這樣 ceph-deploy 就能用 ceph 使用者登入並使用 sudo 了。 
1.6.1 建立叢集
 ceph-deploy new {initial-monitor-node(s)}

 ceph-deploy new  node1 node2 node3  
 #會在介面進行輸出,網路狀態好的情況下應該沒有問題,不行的話可以替換一下hosts,在github上找一個可以翻牆的hosts 檔案

  ceph.conf 配置檔案預設的副本數3,可以在[global] 段: 
  osd pool default size = 2 
  如果有多個網絡卡,可以public network 寫入ceph配置檔案的[global] 
  public network = {ip-address}/{netmask} 
1.6.2 安裝ceph
 ceph-deploy install {ceph-node} [{ceph-node} ...]      
 ceph-deploy install  node1 node2 node3 node4 node5 
 ceph-deploy 將在各節點安裝ceph,

 安裝失敗可以清除重新安裝
 ceph-deploy purge {ceph-node} [{ceph-node}]


 配置初始 monitor(s)、並收集所有金鑰:
 ceph-deploy mon create-initial
1.6.3 配置初始化monitor(s) 並收集所有金鑰
 ceph-deploy mon create-initial

 完成上述操作後,當前目錄裡應該會出現這些金鑰環:
    {cluster-name}.client.admin.keyring
    {cluster-name}.bootstrap-osd.keyring
    {cluster-name}.bootstrap-mds.keyring
    {cluster-name}.bootstrap-rgw.keyring
1.6.4 部署OSD
ceph-deploy osd prepare {ceph-node}:/path/to/directory

ceph-deploy osd prepare harbor-ceph-node1:/ceph-harbor harbor-ceph-node2:/ceph-harbor harbor-ceph-node3:/ceph-harbor harbor-ceph-node4:/ceph-harbor harbor-ceph-node5:/ceph-harbor
1.6.4 啟用OSD
ceph-deploy osd activate {ceph-node}:/path/to/directory

ceph-deploy osd activate harbor-ceph-node1:/ceph-harbor harbor-ceph-node2:/ceph-harbor harbor-ceph-node3:/ceph-harbor harbor-ceph-node4:/ceph-harbor harbor-ceph-node5:/ceph-harbor
1.6.5 檢查叢集狀態
 ceph health   

1.7 建立cephfs

1.7.1 建立元資料庫伺服器
 至少需要一個元資料伺服器才能使用 CephFS ,執行下列命令建立元資料伺服器:  
 ceph-deploy mds create {ceph-node}

 建立mds  
 ceph-deploy mds create harbor-ceph-node1
 # 因為我有3個副本,建立一個mds 就可以了
1.7.2 檢視元資料的狀態
ceph mds stat
e5: 1/1/1 up {0=harbor-ceph-node1=up:active}
1.7.3 建立檔案系統
1.7.4 建立儲存池
要用預設設定為檔案系統建立兩個儲存池
ceph osd pool create cephfs_data <pg_num>  
ceph osd pool create cephfs_metadata <pg_num>

建立儲存池
ceph osd pool create cephfs_data 625
ceph osd pool create cephfs_metadata 625
1.7.6 建立檔案系統
 建立好儲存池後,你可以用fs new 命令建立檔案系統:
 ceph fs new <fs_name> <metadata> <data>  
 ceph fs new cephfs cephfs_metadata cephfs_data 

 ceph fs ls 
 name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ] 
1.7.7 檢視狀態
檔案系統建立完畢後,MDS 伺服器就能active, 比如在一個單MDS 系統中: 
ceph mds stat 
e5: 1/1/1 up {0=harbor-ceph-node1=up:active} 

1.8 客戶端mount cephfs

客戶端: 
   第一步  建立掛載目錄 
        mkdir  /harbor 
   第二步  檢視cephfs 祕鑰 
   name 和secret 在ceph 的osd 下面目錄去獲取 
   cat /etc/ceph/ceph.client.admin.keyring

   第三步 mount 檔案系統 
   如果有多個監視器:
   mount.ceph monhost1,monhost2,monhost3:/ /mnt/foo
   mount -t ceph  10.0.0.1:6789,10.0.0.2:6789,10.0.0.3:6789:/ /harbor  -o name=admin,secret=AQCprj5ZAilVHRAA73bX47zr2fGKpIwgk/DGsA==

   第四步 寫入fstab 
   vim /etc/fstab   
   10.0.0.1:6789,10.0.0.2:6789,10.0.0.3:6789:/ /harbor   ceph    name=admin,secret=AQCprj5ZAilVHRAA73bX47zr2fGKpIwgk/DGsA==,noatime,_netdev    0      0  

2 harbor 安裝

機器列表
 10.0.0.12   harbor02 
 10.0.0.13   harbor03

2.1 安裝docker

yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum install docker-ce  -y

2.2 安裝docker-compose

 curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
 chmod +x /usr/local/bin/docker-compose

 docker-compose --version
 docker-compose version 1.13.0, build 1719ceb 

3.安裝harbor

3.1 下載harbor
 安裝目錄/opt/harbor
 ./prepare
 ./install.sh 
預設安裝匯出資料庫 
3.2 harbor 資料庫匯出
docker exec -ti 2f2df11a189f bash 

#資料庫的預設密碼在cat common/config/adminserver/env  中檢視

mysqldump -u root -p --databases registry > registry.dump

退出container,將備份的資料copy 出來

docker cp 2f2df11a189f:/tmp/registry.dump .  
3.3 匯入資料庫檔案
 mysql -uharbor -h 10.0.0.250 -p 
 source ./registry.dump;
3.4 配置外接資料庫
 cp docker-compose.yml docker-compose.yml.bak       

 修改docker-compose.yml 刪除的部分,並將以前的80埠修改為8090 
mysql:
image: vmware/harbor-db:v1.1.1
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"
  - mysql
3.5 修改harbor 引入的環境變數
 vi common/templates/adminserver/env  
 MYSQL_HOST=mysql
 MYSQL_PORT=3306
 MYSQL_USR=root
 MYSQL_PWD=$db_password  
 # 這裡不需要修改密碼,直接在harbor.cfg 中修改db_password 密碼,然後傳入變數進來   
 RESET=true
3.6 新增redis
 這裡需要注意如果使用  
 vim common/templates/ui/env 在最後一行新增
 _REDIS_URL=reids_ip:port,100,redis_password,0
 _REDIS_URL=10.0.0.10:6379,100,Ar9as445p4vZ,0
3.7 修改配置harbor.cfg
  配置LDAP,新版本的1.1.1 在配置的時候需要不增加使用者的情況下配置LDAP,如果重啟的話也需要去資料庫裡面刪除使用者,然後才可以配置測試LDAP 
  編輯harbor.cfg 主配置檔案
  vim harbor.cfg 
  hostname = 域名
  ui_url_protocol = http
  db_password = 資料庫密碼

  ssl_cert = /harbor/data/cert/server.crt   # 放在共享儲存上
  ssl_cert_key = /harbor/data/cert/server.key    # 放在共享儲存上

  secretkey_path = /harbor/data   # 放在共享儲存上

  harbor_admin_password = Harbor12345    # harbor 登入密碼設定

  #auth_mode = db_auth
  auth_mode = ldap_auth
  這裡需要注意的是,第一次啟動的可以選擇db 認證,在web 介面修改為LDAP之後,也同時也需要在配置檔案中修改LDAP  
  ./prepare 
  ./install.sh  
   harbor 預設只支援一種認證,所以配置LDAP 之後,需要在配置檔案也修改為LDAP認證。  
  備註:在web介面修改的密碼以及配置的郵件同時也需要新增到harbor.cfg 中去     
3.8 節點加入LB
  配置LB 使用keeplived 或者雲平臺的LB選擇ip hash 解析,否則docker login 的時候會報認證的錯誤   


  如果harbor各個節點上harbor.cfg 中的hostname= 配置為ip加埠,那麼harbor 頁面會顯示映象的名稱為ip:port ,但是前面push  pull 仍然可以使用域名可以正常使用。 
3.9 增加節點
 1. 在harbor 上建立一個倉庫,可以設定為私有或者公開,把harbor 所需要的映象上傳到harbor中,然後修改docker-compose.yml 中的映象地址為映象倉庫的地址。 

 2. 直接把其他節點的/opt/harbor 這個目錄打包為harbor.tar.gz 直接copy 到其他節點上,然後解壓直接執行 ./prepare   ./install.sh  執行之後使用ip 訪問,確認沒有問題直接直接加入到LB中  
3.10 修改密碼
因為共用一個數據庫,如果需要修改admin 的密碼那麼在每一個節點的harbor.cfg 中也需要新增新的密碼  

相關推薦

harbor 可用部署

harbor 高可用部署 資料庫使用外接的mysql redis 解決session 問題 1.cephfs 部署 1.1 機器列表 10.0.0.1 harbor-ceph-node1 10.0.0.2 ha

RabbitMQ集群與可用部署

集群 高可用 rabbitmq 未完待續……本文出自 “藍色_風暴” 博客,請務必保留此出處http://270142877.blog.51cto.com/12869137/1984070RabbitMQ集群與高可用部署

Redis 可用部署

Redis 高可用 Redis 高可用原理:Redis使用sentinel機制來實現高可用,sentinel是另外一個集群,主要是用來監控所有的Redis服務器,所以主節點和從節點,監控方式仍然使用的是ping指令,sentinel每隔1秒向master發送【ping】,如果在一段時間內沒有收到【pong】或

Exchange2010可用部署及配置

Exchange2010高可用部署及配置一般企業用戶比較註重以下三個角色的高可用(容錯)方案。對於UM(統一消息)角色和邊緣傳輸角色一般不做容錯。A:Mailbox(郵箱角色)---DAGB:HUB(集線器傳輸角色)---NBLC:CAS(客戶端訪問角色)---CAS Array Exchange DAG部署

Rancher Server HA的可用部署實驗-學習筆記

mysql數據庫 haproxy配置 基礎 cal XA red cor 服務器 學習筆記 轉載於https://blog.csdn.net/csdn_duomaomao/article/details/78771731 Rancher Server HA的高可用部署實驗-

MySQL可用部署MHA

運行 code relay rontab form inter 二進制 for 簡單記錄 MHA簡介 MHA 由兩部分組成: MHA Manager(管理節點)和 MHA Node(數據節點)。 MHA Manager可以單獨部署在一臺獨立的機器上管理多個 master-

Windows Admin Center 可用部署

下一代 可用 引擎 server1 步驟 關註 orm ins 客戶端 本文老王將為大家實作Windows Admin Center的高可用部署,相信有了高可用的架構支持將更進一步推進該產品的落地環境介紹08dc2lan 10.0.0.2 255.0.0.016server

corosync+pacemaker可用部署

entos 結構圖 {} ESS 狀態 null rep download verbose OpenAIS:是實現高可用集群的一種完備解決方案;Corosync是集群管理套件的一部分,通常會與其他資源管理器一起組合使用它在傳遞信息的時候可以通過一個簡單的配置文件來定義信息傳

nginx,keepalived可用部署

環境 172.16.91.218  主 172.16.91.219   安裝包版本 nginx-1.14.0.tar.gz keepalived-2.0.7.tar.gz   把 nginx,keepalived 壓縮包 上傳到 /usr

CDH 可用部署

前期準備 配置hosts 192.168.245.105  scm-node1 192.168.245.106  scm-node2 192.168.245.107  scm-node3 設

hadoop2.7x可用部署方案(+zookeeper)

hadoop高可用的部署,需要有2個namenode,一個是active的,一個是standby的,兩個namenode需要有一個管理員來管理,來決定決定誰active,誰standby,如果處於active狀態的的namenode壞了,立即啟動standby狀態的namenode。這個管理員就是z

Spark HA可用部署

1.說明:    Spark Standalone 叢集是Master--Slaves架構的叢集模式,和大部分的Master--Slaves 結構叢集一樣,存在著Master單點故障的問題。Spark提供了兩種解決方案去解決這個單點故障的問題; 方案一:基於檔案系統的單點恢復 &nb

Keepalived+Redis主從可用部署

機器 A:192.168.252.105 B:192.168.252.106 VIP:192.168.252.101 A|B安裝 keepalived-1.3.5.tar.gz tar -zxvf keepalived-1.3.5.tar.gz cd keepalived-1.

FreeSWITCH折騰筆記7——使用keepalived進行主備切換可用部署

freeSWITCH的高可用部署方式有兩種:主備切換和負載均衡,官方文件介紹的主備切換部署是採用Corosync & Pacemaker,負載均衡採用前置opensips。但對使用keepalived進行主備切換的高可用方式沒有介紹,同時網上對該種部署方式也沒有介

Rainbondv3.5.1全面支援可用部署 – Kubernetes面板_Kubernetes中文社群

Rainbond(雲幫)是一款以應用為中心的開源PaaS,深度整合基於Kubernetes的容器管理、Service Mesh微服務架構最佳實踐、多型別CI/CD應用構建與交付、多資料中心資源管理等技術,為使用者提供雲原生應用全生命週期管理解決方案,構建應用與基礎設施、應用與應用、基礎設施與基礎設施之間互

Spring Cloud 探索 | Eureka 可用部署及 unavailable-replicas 問題

Eureka Server除了單點執行之外,還可以通過執行多個例項,並進行互相註冊的方式來實現高可用的部署。所以我們只需要將Eureke Server配置其他可用的 serviceUrl 就能實現高可用部署。 下面我們在上篇文章的基礎上來實現Eureka Server的高可用部署。部

mongodb可用部署有主從複製和複製集

MongoDB 高可用可用分兩種: Master-Slave 主從複製: 只需要在某一個服務啟動時加上–master 引數,而另一個服務加上–slave 與–source 引數,即可實現同步。MongoDB 的最新版本已不再推薦此方案。主從複製雖然可以承受一定的負載壓力,但

MySQL5.6 雙機HA可用部署方案

注:主、備機只有ucast一個引數不一樣。 8、新增資源配置檔案 vi /etc/ha.d/haresources mysql1 192.168.2.9/24/eth0:1 Filesystem::/dev/sdb1::/hadata::ext4 mysqld 注:主、備機的設定一致。 9、新增認證檔

flume ng可用部署

一、flume簡介 flume是一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸系統,Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,Flume提供對資料進行簡單的處理,並寫到各類資料接受方(可定製)的能力。Flume1.x版

Rabbitmq叢集可用部署詳細

序言 清風萬里的季節,週末本該和親人朋友一起消遣這爛漫的花花草草,或是懶洋洋的晒個太陽聽聽風聲鳥鳴。無奈工作使然,理想使然,我回到啦公司,敲起啦鍵盤,擼起啦程式碼,程式狗的世界一片黯然,一片黯然,願天下所有努力的程式狗都夢想成真吧!! 回到正題,為什麼搭建rabbitmq叢