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埠提供服務!! (如果存取不了就換一個埠號)
程式碼實現:
實驗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