環境準備:docker環境,兩個tomcat,一個nginx,再加上之前配置的redis同步了session,這個配置就可以實現負載均衡了,我是用來災備了,這篇文章主要講述nginx+tomcat實現負載均衡,其他的教程參考之前的文章。
docker安裝教程:https://blog.csdn.net/buyaopingbixiazai/article/details/89291116
docker安裝配置tomcat:https://blog.csdn.net/buyaopingbixiazai/article/details/89344211
docker安裝配置redis:https://blog.csdn.net/buyaopingbixiazai/article/details/89303538
docker利用redis+tomcat實現session共享:https://blog.csdn.net/buyaopingbixiazai/article/details/89342942
docker安裝配置nginx:https://blog.csdn.net/buyaopingbixiazai/article/details/89389335
開始本篇:docker利用nginx+tomcat實現負載均衡
1.修改配置文件
我這裏是兩個tomcat,一主一備,主(1982.168.29.24:8089),備(192.168.29.24:8090),nginx放在192.168.29.24。
所以第一步先在配置文件裏面添加如下內容:
upstream myproject {
server 192.168.29.24:8089;
server 192.168.29.24:8090 backup;
}
第二步配置缺省訪問路徑:
server {
listen 80;
server_name nginx2tomcat1;
location / {
proxy_pass http://myproject;
}
}
附上我的nginx.conf文件全部內容
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
upstream myproject {
server 192.168.29.24:8089;
server 192.168.29.24:8090 backup;
}
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name nginx2tomcat1;
location / {
proxy_pass http://myproject;
}
}
include /etc/nginx/conf.d/*.conf;
}
2.重啓
重啓nginx: docker restart 容器名稱(容器ID)
3.驗證
首先訪問192.168.29.24,這時候應該訪問到的是192.168.29.24:8089,登陸之後查看你頁面,然後手動關掉8089端口的服務(docker stop jax-tomcat1),再次訪問192.168.29.24,看到進入了192.168.29.24:8089的系統,測試成功!
3.1首次訪問192.168.29.24並登錄
3.2關閉8089端口的服務器,
[root@localhost ~]# docker stop jax-tomcat1
jax-tomcat1
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f9f5c1e142f tomcatwcy "catalina.sh run" 2 days ago Up 15 minutes 80/tcp, 0.0.0.0:8090->8080/tcp jax-tomcat2
d2cec1acd172 redis:latest "docker-entrypoint.s…" 3 days ago Up 7 hours 0.0.0.0:6379->6379/tcp jax_redis
4068c1c383f1 tomcat:7.0.92 "catalina.sh run" 3 weeks ago Up 7 hours 0.0.0.0:8455->8080/tcp checktomcat
6f9726681e83 mysql:5.7.19 "docker-entrypoint.s…" 3 weeks ago Up 7 hours 0.0.0.0:3306->3306/tcp mysql
5eb927494115 nginx "nginx -g 'daemon of…" 5 weeks ago Up 7 hours 0.0.0.0:80->80/tcp nginx_test
f42ef6cc1aca tomcat:7.0.92 "catalina.sh run" 5 weeks ago Up 7 hours 0.0.0.0:8083->8080/tcp tomcat3
3.3再次訪問192.168.29.24
說明:根據標記的地方即可區分是兩個項目