0
点赞
收藏
分享

微信扫一扫

Nginx+tomcat实现负载均衡 部署多个tomcat


下载并安装nginx和tomcat

nginx下载地址,选择版本1.12.2
​​​ http://nginx.org/en/download.html​​​ tomcat下载,选择版本9.0.29
http://tomcat.apache.org/
注意:以上都是下载的解压版

在本机或虚拟机上安装多个tomcat

安装tomcat

这里示例在本机上安装三个tomcat

解压并修改tomcat文件夹名即可。图中圈中部分,忽略其他的tomcat

Nginx+tomcat实现负载均衡  部署多个tomcat_tomcat

配置tomcat

添加环境变量CATALINA_HOME,我这里因为还有其他tomcat所以配置的较多

Nginx+tomcat实现负载均衡  部署多个tomcat_html_02


在环境变量PATH中将刚才添加的三个CATALINA_HOME的lib和bin目录添加进去

%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;

Nginx+tomcat实现负载均衡  部署多个tomcat_html_03


保存后分别进入三个tomcat的bin目录,记事本打开catalina.bat和startup.bat,将其中的CATALINA_HOME全部替换为上述添加的对应的环境变量,比如我这里第一个tomcat对应的环境变量是CATALINA_HOME2,就将文件中所有的CATALINA_HOME替换为CATALINA_HOME2。

Nginx+tomcat实现负载均衡  部署多个tomcat_html_04


上述修改完成后就可以分别成功启动了,但是因为默认都是使用的8080,8005和8009端口,还要进入tomcat的conf目录,修改server中的端口配置,我这里分别将另外两个tomcat的端口设置为了8081,8015,8019和8083,8035,8039(8082端口被我本机的其他应用占用了)

修改tomcat首页title

为了区分不同的tomcat,我们还需要将tomcat的webapps/ROOT/index.jsp文件修改一下,将该文件的title标签值修改为对应的端口号,这样我们待会可以一下子看出tomcat切换了

Nginx+tomcat实现负载均衡  部署多个tomcat_java_05


启动三个tomcat,可以看到页面的title已经显示为了端口号

Nginx+tomcat实现负载均衡  部署多个tomcat_java_06

安装并配置nginx

安装nginx

将nginx的压缩包解压即可安装nginx

解压出来的路径如图所示

Nginx+tomcat实现负载均衡  部署多个tomcat_java_07

配置nginx

nginx的默认端口为80,打开nginx下的/conf/nginx.conf文件

在server一栏可以看到端口配置,这里因为本机80端口已被其他程序占用,修改为8888端口

Nginx+tomcat实现负载均衡  部署多个tomcat_tomcat_08


同时还需要配置nginx的负载均衡策略,并且指定需要分发哪些tomcat的服务

这里创建一个upstream,设定其策略为权重型,权重越大分配访问次数越多。

其中upstream后的blance为自定义的服务名,你可以取名为任何,但是不能出现下划线

同时要保证你在proxy_pass后跟的就是你定义的服务名,如下所示

完整配置文件如下,这里已删除部分注释内容

文件server后的IP指的是tomcat所在服务器IP

#user  nobody;
worker_processes 1;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

#gzip on;

upstream blance{
server IP:8080 weight=1;
server IP:8081 weight=1;
server IP:8083 weight=3;
}

server {
listen 8888;
server_name localhost;

location / {
root html;
index index.html index.htm;
proxy_pass http://blance;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

}

实际上nginx的负载均衡策略有3种,这里不做详谈,大致了解和学习地址可见文章最后

启动nginx

window版

双击目录下的nginx.exe即可

或者在cmd模式下,进入nginx目录

输入命令 start nginx 或者 nginx.exe

Nginx+tomcat实现负载均衡  部署多个tomcat_java_09


停止nginx命令

#快速停止,不保存相关信息

nginx.exe -s stop

#完整有序停止,保存相关信息

nginx.exe -s quit

linux下nginx的相关命令

启动
service nginx stop

systemctl stop nginx
重启
service nginx reload
systemctl restart nginx
关闭
service nginx stop
systemctl stop nginx
开机自启
systemctl enable nginx
取消开机自启
systemctl disable nginx

测试

nginx启动后

进入local:8888,如下图可以看到,服务分配给了8080端口的tomcat

Nginx+tomcat实现负载均衡  部署多个tomcat_nginx_10


再次刷新发现服务又分配给了8083的tomcat。当访问次数达到一定数量后,其分配比例就会无限靠近我们之前设置的权重比例

Nginx+tomcat实现负载均衡  部署多个tomcat_java_11


到此tomcat+nginx的负载均衡就实现了

nginx的负载均衡策略

轮巡

将客户端发起的请求,平均的分配给每一台服务器

upstream 名称 {
server 172.16.80.124:8080;
server 172.16.80.124:8081;
server 172.16.80.124:8083;
}
server {
listen 80;
server_name localhost;

location / {
proxy_pass http://名称;
}
}

权重

会将客户端的请求,根据服务器的权重值不同,分配不同的数量

upstream 名称 {
server 172.16.80.124:8080 weight=1;
server 172.16.80.124:8081 weight=10;
server 172.16.80.124:8083 weight=1;
}
server {
listen 80;
server_name localhost;

location / {
proxy_pass http://名称;
}
}

ip_hash

基于发起请求的客户端的ip地址不同,始终会将请求发送到指定的服务器上

upstream 名称 {
ip_hash;
server 172.16.80.124:8080;
server 172.16.80.124:8081;
server 172.16.80.124:8083;
}
server {
listen 80;
server_name localhost;

location / {
proxy_pass http://名称;
}
}

详细的nginx学习可在如下网址观看,可以更加详尽的了解nginx
​ https://www.bilibili.com/video/BV1W54y1z7GM?p=14​​


举报

相关推荐

0 条评论