文章目錄
- 自動部署負載均衡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
一、案例
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
5、consul服務器上查看服務(服務端)
curl 127.0.0.1:8500/v1/catalog/services
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
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
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.