文章目錄

  • 自動部署負載均衡consul+compose+template和私有倉庫harbor
  • 一、案例
  • 1、consul+compose+template(自動部署和負載均衡)
  • 2、harbor(私有倉庫)
  • 二、實驗步驟
  • 實驗1、consul+compose+template(自動部署和負載均衡)
  • 1、實驗準備
  • 2、consul服務安裝(服務端)
  • 3、容器服務自動加入nginx集羣(客户端)
  • 4、驗證http和nginx服務是否註冊到consul
  • 5、consul服務器上查看服務(服務端)
  • 6、準備template nginx模板文件(服務端)
  • 7、編譯安裝nginx(服務端)
  • 8、配置nginx(服務端)
  • 9、配置並啓動template(服務端)
  • 10、查看配置文件(服務端)
  • 11、增加一個nginx容器節點(客户端)
  • 12、查看三台nginx容器日誌(客户端)
  • 實驗2、harbor私有倉庫
  • 1、實驗準備
  • 2、查看Docker-Compose版本(服務端)
  • 3、部署Harbor服務(服務端)
  • 4、遠程連接(客户端)
  • 5、服務器下載(服務端)
  • 6、重啓harbor(服務端)
  • 問題解決
  • 問題1、harbor遠程連接不成功
  • 問題2、harbor重啓報錯

自動部署負載均衡consul+compose+template和私有倉庫harbor

一、案例

openstack docker負載均衡代碼_docker

1、consul+compose+template(自動部署和負載均衡)

2、harbor(私有倉庫)

二、實驗步驟

實驗1、consul+compose+template(自動部署和負載均衡)

1、實驗準備

主機1,服務端,地址為:192.168.150.173

主機2,客户端,地址為:192.168.150.173

兩台主機都採用僅主機模式,安裝docker及優化完成

2、consul服務安裝(服務端)
cd /opt
unzip consul_0.9.2_linux_amd64.zip ##解壓文件
mv consul /usr/bin
consul agent 
 -server 
 -bootstrap 
 -ui 
 -data-dir=/var/lib/consul-data 
 -bind=192.168.150.173 
 -client=0.0.0.0 
 -node=consul-server01 &> /var/log/consul.log &consul members ##查看集羣信息
consul info | grep leader ##查看結點信息
curl 127.0.0.1:8500/v1/status/peers //查看集羣server成員
curl 127.0.0.1:8500/v1/status/leader //集羣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 //集羣節點詳細信息
3、容器服務自動加入nginx集羣(客户端)
docker run -d 
 –name=registrator 
 –net=host 
 -v /var/run/docker.sock:/tmp/docker.sock 
 –restart=always 
 gliderlabs/registrator:latest 
 -ip=192.168.150.174 
 consul://192.168.150.173:8500//測試服務發現功能是否正常
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:88:80 --name test-03 -h test03 httpd
docker run -itd -p:89:80 --name test-04 -h test04 httpd
4、驗證http和nginx服務是否註冊到consul

瀏覽器輸入:http://192.168.150.173:8500

openstack docker負載均衡代碼_#運維_02

5、consul服務器上查看服務(服務端)

curl 127.0.0.1:8500/v1/catalog/services

openstack docker負載均衡代碼_#linux_03

6、準備template nginx模板文件(服務端)

vim /root/consul/nginx.ctmpl ##文件內容如下所示

upstream http_backend {
 {{range service “nginx”}}
 server {{.Address}}:{{.Port}};
 {{end}}
 }
 server {
 listen 83;
 server_name localhost 192.168.150.173;
 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;
 }
 }

7、編譯安裝nginx(服務端)

yum install gcc pcre-devel zlib-devel -y

cd /opt

tar zxvf nginx-1.12.0.tar.gz

make && make install

8、配置nginx(服務端)

vim /usr/local/nginx/conf/nginx.conf


http {

include mime.types;

include vhost/*.conf; //添加虛擬主機目錄

default_type application/octet-stream;


mkdir /usr/local/nginx/conf/vhost ##創建虛擬主機目錄

mkdir /var/log/nginx ##創建日誌文件目錄

/usr/local/nginx/sbin/nginx ##啓動nginx

9、配置並啓動template(服務端)

上傳consul-template_0.19.3_linux_amd64.zip包上傳到/opt

cd /opt

unzip consul-template_0.19.3_linux_amd64.zip

mv consul-template /usr/bin/

consul-template -consul-addr 192.168.150.173:8500
-template “/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload”
–log-level=info

10、查看配置文件(服務端)

重啓打開一個終端查看

cd /usr/local/nginx/conf/vhost

vim kgc.conf

openstack docker負載均衡代碼_docker_04

11、增加一個nginx容器節點(客户端)

docker run -itd -p:85:80 --name test-05 -h test05 nginx

12、查看三台nginx容器日誌(客户端)

//請求正常輪詢到各個容器節點上

docker logs -f test-01

docker logs -f test-02

docker logs -f test-05

實驗2、harbor私有倉庫

最近公司又提出一個新需求,將項目全部打包成鏡像部署私有倉庫服務,經過幾輪商討,最終選擇Docker Harbor

Docker Harbor有可視化的Web管理界面,可以方便管理Docker鏡像,又提供了多個項目的鏡像權限管理及控制功能

1、實驗準備

主機1,服務端,地址為:192.168.150.173

主機2,客户端,地址為:192.168.150.173

兩台主機都採用僅主機模式,安裝docker及優化完成

2、查看Docker-Compose版本(服務端)

cd /opt

cp docker-compose /usr/local/bin/

docker-compose -v ##查看版本信息

3、部署Harbor服務(服務端)

wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz ##下載較慢,採用已經下載好的包

cd /opt

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

vim /usr/local/harbor/harbor.cfg

hostname=192.168.150.173 ##第5行,修改內容,修改為服務端地址

sh /usr/local/harbor/install.sh ##啓動harbor

docker images ##查看鏡像

docker ps -a ##查看容器

打開瀏覽器訪問:http://192.168.150.173,查看管理頁面,默認使用管理員用户名和密碼訪問

admin/Harbor12345

docker login -u admin -p Harbor12345 http://127.0.0.1 //本地登錄

docker pull nginx //下載

docker tag nginx:latest 127.0.0.1/kgc/nginx:v1 //鏡像打標籤

docker push 127.0.0.1/kgc/nginx:v1 //上傳鏡像到Harbor

4、遠程連接(客户端)

iptables -F

setenforce 0

vim /usr/ib/systemd/system/docker.service ##黑色為修改內容

ExecStart=/usr/bin/dockerd -H fd:// –insecure-registry=195.128.150.173 --containerd=/run/containerd/containerd.sock

systemctl daemon-reload

systemctl restart docker

docker login -u admin -p Harbor12345 http://192.168.150.173

docker pull centos:7

docker images ##在瀏覽器上創建項目名稱為kgc

docker tag centos:7 192.168.150.173/kgc/centos7:v1

docker images

docker push 192.168.150.173/kgc/centos7 ##上傳

5、服務器下載(服務端)

docker pull 127.0.0.1/kgc/centos7:v1 ##下載

6、重啓harbor(服務端)

cd /usr/local/harbor/ ##目錄跳轉

docker-compose up -d ##重啓私庫

docker-compose down -v ##移除Harbor服務容器同時保留鏡像數據/數據庫

問題解決

問題1、harbor遠程連接不成功

[root@ client ~]# docker login -u admin -P Harbor12345 http://192.168.195.128

WARNING! Using -password via the CLI is insecure. Use -password-stdin.

Error response from daemon: Get https://192.168. 195.128/v2/: EOF

解決:
[root@client ~]# vim /usr/ib/systemd/system/docker.service ##黑色為修改內容

ExecStart=/usr/bin/dockerd -H fd:// –insecure-registry=195.128.150.173 --containerd=/run/containerd/containerd.sock

openstack docker負載均衡代碼_#docker_05

systemctl daemon-reload

systemctl restart docker

docker login -u admin -P Harbor12345 http://192.168.195.128

遠程登錄成功

問題2、harbor重啓報錯

//報錯:
 docker-compose up -d
 Creating network “harbor_ harbor” with the default driver
 ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:
 (iptables failed: iptables
 -wait -t nat -1 DOCKER -i br-25094fc09b3c -j RETURN: iptables: No chain/target/match by that
 name.
 (exit status 1))//解決:關閉防火牆後,docker 需要重啓
 systemctl restart docker
 docker-compose up -d
 Creating network “harbor_ harbor” with the default driver
 Creatine harbor-loe … done.