docker consul容器服務更新與私庫harbor

2020-09-29 15:00:36

一、容器服務的更新與發現拓撲圖:

在這裡插入圖片描述1、架構元件的功能:

  • consul template:(自動生成nginx的組態檔nginx.conf)

  • consul server:服務發現、更新

  • consul agent:對接後面的節點

  • 程式碼實現:

實驗1:conslu
兩個節點:1、做nginx反向代理+consul容器服務     2、nginx和httpd的業務容器節點

1、在監控伺服器1上:14.0.0.10
將docker-compose包拖進來到~目錄下:
chmod +x docker-compose
mv docker-compose /usr/local/bin/

mkdir consul
cd consul
將consul_0.9.2、consul-template的連個包拖進來。
unzip consul_0.9.2_linux_amd64.zip 
mv consul /usr/local/bin/    
        
consul agent \	                                 '//設定代理'
-server \	                                                 '//服務功能'
-bootstrap \	                                 '//參與選舉'
-ui \                                                          '//提供web介面'
-data-dir=/var/lib/consul-data \	'//提供一個代理儲存資料目錄'
-bind=14.0.0.10 \	                '//繫結本地地址'
-client=0.0.0.0 \	                                 '//面對的使用者端地址'
-node=consul-server01 &> /var/log/consul.log &         功能都已開啟

consul member                                                    檢視叢集資訊
consul info | grep leader                                       檢視管理資訊
curl 127.0.0.1:8500/v1/status/peers                    檢視叢集server成員
curl 127.0.0.1:8500/v1/status/leaders                 檢視叢集Raf leader
curl 127.0.0.1:8500/v1/catalog/services              檢視註冊的所有服務
curl 127.0.0.1:8500/v1/catalog/nginx                  檢視nginx服務的資訊
curl 127.0.0.1:8500/v1/catalog/nodes                 叢集節點詳細資訊

在瀏覽器上輸入「14.0.0.10:8500」即可檢視網頁介面  「注意需要關閉防火牆牆的安全機制!!!」

在nginx和httpd的業務容器節點上:14.0.0.11
docker run -d \
--name=registrator \                                              '//定義容器名稱,對接nginx和consul'
--net=host \                                                            '定義網路'
-v /var/run/docker.sock:/tmp/docker.sock \         '指定資料卷,儲存資訊' 
--restart=always \    
gliderlabs/registrator:latest \                                   '定義映象'
-ip=14.0.0.11 \                                                         '指定本地地址'
consul://14.0.0.10:8500
docker ps -a                                                           ‘nginx、httpd與consul成功對接’

docker run -itd -p 83:80 --name test-01 -h test01 nginx
docker run -itd -p 84:80 --name test-02 -h test02 nginx
docker run -itd -p 85:80 --name test-03 -h test03 httpd
docker run -itd -p 86:80 --name test-04 -h test04 httpd      到監控機14.0.0.10:8500上觀察已監控到業務容器!!

2、在監控伺服器14.0.0.10上:
vim /root/consul/nginx.ctmpl
upstream http_backend {
   {{range service "nginx"}}
    server {{.Address}}:{{.Port}};
     {{end}}
   {{range service "httpd"}}
    server {{.Address}}:{{.Port}};
     {{end}}
}

server {
  listen 88;
  server_name localhost 14.0.0.10;
  access_log /var/log/nginx/kgc.cn-access.log;       紀錄檔檔案位置
  index index.html index.php;                                  首頁型別
  location / {                                                             跳轉
    proxy_set_header HOST $host;                            本機地址
    proxy_set_header X-Real-IP $remote_addr;        來訪者
    proxy_set_header Client-IP $remote_addr;          
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
  }
}

部署nginx反向代理伺服器:
cd /opt/   
yum install gcc gcc-c++ make expat* pcre* perl* zlib* -y
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.2
./configure --prefix=/usr/local/nginx
make && make install 
vim /usr/local/nginx/conf/nginx.conf     第19行新增
           include vhost/*.conf;
mkdir /usr/local/nginx/conf/vhost/
mkdir /var/log/nginx
/usr/local/nginx/sbin/nginx                    啟動nginx反向代理服務
cd /root/consul/                                     將consul-template的包拖進來!
unzip consul-template_0.19.3_linux_amd64.zip 
mv  /usr/local/bin/

consul-template -consul-addr 14.0.0.10:8500 \                          
-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info

docker logs -f test-01
docker logs -f test-02
docker logs -f test-03
docker logs -f test-04

在瀏覽器上存取:14.0.0.10:88  監控機上的nginx做反向代理88埠提供服務!! (如果存取不了就換一個埠號)

二、Harbor私庫:

在這裡插入圖片描述

在這裡插入圖片描述

程式碼實現:

實驗2:注意關閉防火牆機制
1、做私庫站點伺服器:14.0.0.13
2、使用者端伺服器:14.0.0.14

第一步:在私庫服務伺服器的節點上:
將docker-compose、harbor拖進來
chmod +x docker-compose
mv dokcer-compose /usr/local/bin/
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
cd /usr/local/harbor/
vim harbor.cfg      第5行修改
    hostname = 14.0.0.13(本機地址)
sh install.sh                                        安裝harbor
到瀏覽器上存取:14.0.0.13,登入harbor系統
使用者名稱:admin
密碼:Harbor12345
本地登入:docker login -u admin -p Harbor12345 http://127.0.0.1
從官網下載映象上傳到自創的私庫裡面:     1、下載映象  2、打標籤   3、上傳動作   「到瀏覽器上檢視是否上傳成功?」
現在瀏覽器上建立kgc的專案組,才能上傳!!!!
docker pull nginx
docker tag nginx:latest 127.0.0.1/kgc/nginx:v1    
docker push 127.0.0.1/kgc/nginx

第二步:在客戶機伺服器的節點上:
vim /usr/lib/systemd/system/docker.service    第14行新增   為了避免https安全機制的干擾
     fd://      --insecure-registry 14.0.0.13        --containerd
systemctl daemon-reload
systemctl restart docker
docker login -u admin -p Harbor12345 http://14.0.0.13
docker tag centos:7 14.0.0.13/kgc/centos7:v1              打標籤並上傳映象!!
docker push 14.0.0.13/kgc/centos7