Docker容器部署Nginx負載均衡(二)

2020-08-11 17:43:46

基於一臺物理機,部署1台Nginx均衡2台Tomcat,通過存取Host OS的80埠,能夠存取Tomcat容器中的測試頁面;

1.基於Docker引擎啓動3個Docker容器,首先下載Nginx和Tomcat映象:

docker pull docker.io/nginx
docker pull docker.io/tomcat

 2.其中一個爲Nginx容器,並且對外對映80:80埠規則,啓動Nginx容器:

docker run -itd -p 80:80 docker.io/nginx:latest
docker ps -a
docker inspect 6479f569d49e|grep -i ipaddr

 3.另外兩臺爲Tomcat容器,啓動Tomcat容器(無需對映埠):

docker run -itd docker.io/tomcat:latest 
docker run -itd docker.io/tomcat:latest

4.檢視2台Tomcat容器的IP地址,並且記錄IP地址;

docker inspect `docker ps -a|grep tomcat|awk '{print $1}'`|grep -i ipaddr|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort|uniq

5.設定Nginx均衡2台Tomcat,實現負載均衡+反向代理,操作方式如下:

#進入Nginx容器;
docker exec -it 6479f569d49e /bin/bash

#進入Nginx WEB組態檔目錄;
cd /etc/nginx/conf.d/

#排除#和空行的程式碼;
grep -vE "#|^$" default.conf

1)通過sed或者cat將新內容寫入default.conf檔案中後回車;

cat>default.conf<<EOF
upstream tomcat_web {
	server 172.17.0.3:8080 weight=100 max_fails=2 fail_timeout=15;
	server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15;
}
server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
		proxy_set_header Host \$host;
		proxy_pass http://tomcat_web;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
EOF

2)寫入完成後檢查內容是否正確:使用cat default.conf命令檢查:

3)修改替換未成功的部分參數:

sed -i 's/default.conf/\t/g' default.conf

4)重新啓動Nginx服務:

nginx -t
nginx -s reload

5)瀏覽器存取Nginx均衡的2台Tomcat:

實現目的:當其中一臺tomcat掛掉時,另一臺可以繼續保持存取