Docker容器部署Nginx负载均衡(二)
基于一台物理机,部署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挂掉时,另一台可以继续保持访问