nginx的tomcat集群管理

本文详细介绍了如何在Linux环境下安装Nginx,配置Tomcat集群以及实现动静分离。通过Nginx的upstream模块实现负载均衡,探讨了轮询、最少连接、权重分配和ip_hash等策略,并解决了Session共享问题。
摘要由CSDN通过智能技术生成

Nginx的安装:
1、添加YUM 的Nginx源
为Centos本身默认的yum源不带Nginx,所以YUM安装的话需要增加Nginx的YUM源。否则:
No package nginx available.
Error: Nothing to do
执行命令:
rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
-Uvh:升级软件包
-h:显示进度信息
-v:显示指令执行过程
-U:升级指定的程序包 update
2.安装Nginx
执行命令: yum -y install nginx
-y:自动应答yes

     如果yun被lock了:[root@senqi01 usr]# rm -rf /var/run/yum.pid

3、启动Nginx
service nginx start

或者:
/usr/sbin/nginx 启动
nginx -s stop 快速关闭
nginx -s quit 安全关闭
nginx -s reload 重载配置文件

4、查看Nginx安装路径
whereis nginx

是否安装:rpm -qa | grep nginx
5、查看Nginx服务是否成功
netstat –anotp | grep 80
6、Nginx的HTML存放路径
/usr/share/nginx/html

7、Nginx配置文件存放目录
/etc/nginx/nginx.conf
8、访问测试
http://ip地址
在这里插入图片描述

4.安装第1套Tomcat
1.上传Tomcat到linux上
2.解压Tomcat到/usr/local下
tar -xvf apache-tomcat-8.5.15.tar.gz -C /usr/local

3.修改解压缩后的Tomcat文件夹名字
mv /usr/local/apache-tomcat-8.5.15 /usr/local/tomcat1

4.修改第一套Tomcat配置文件
vi /usr/local/tomcat1/conf/server.xml

保留原值。

5.启动Tomcat服务器1
cd /usr/local/tomcat1/bin
启动命令:./startup.sh

6.测试服务器是否正常启动
打开浏览器输入http://服务器地址:8080
看是否能浏览到TOMCAT欢迎页面。

4.2.安装第2套Tomcat
1.上传Tomcat到linux上
2.解压Tomcat到/usr/local下
tar -xvf apache-tomcat-8.5.15.tar.gz -C /usr/local

3.修改解压缩后的Tomcat文件夹名字
mv /usr/local/apache-tomcat-8.5.15 /usr/local/tomcat2

4.修改第2套Tomcat配置文件
vi /usr/local/tomcat2/conf/server.xml

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.启动Tomcat服务器2
cd /usr/local/tomcat2/bin
启动命令:./startup.sh

6.测试服务器是否正常启动
打开浏览器输入http://服务器地址:8081
看是否能浏览到TOMCAT欢迎页面。

7、在每个tomcat服务器的server.xml文件配置下面路径
此外:不想重复拷贝项目到/usr/tomcat8.5.35/webapps下,可以配置Context节点:
在这里插入图片描述

4.3.配置Nginx负载均衡
1、修改Nginx配置文件
vi /etc/nginx/conf.d/default.conf
upstream sunny{
server 192.168.1.18:8080 max_fails=1 fail_timeout=10s; //Tomcat服务器1
server 192.168.1.18:8081 max_fails=1 fail_timeout=10s; //Tomcat服务器2
}

server {
listen 80;
server_name localhost;

#charset koi8-r;
#access_log  /var/log/nginx/log/host.access.log  main;

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    proxy_pass  http://sunny;         //配置转发
    proxy_connect_timeout  30s;      //和后端服务器建立连接的超时时间,记住不要超过75s         proxy_read_timeout     30s;       //读超时时间
    proxy_send_timeout     30s;       //发送超时时间
}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}

}

关于max_fails 参数:max_fails默认为1,fail_timeout默 认为10秒,也就是说,默认情况下后端服务器在10秒钟之内可以容许有一次的失 败,如果超过1次则视为该服务器有问题,将该服务器标记为不可用。等待10秒后再 将请求发给该服务器,以此类推进行后端服务器的健康检查。但如果我将max_fails设置为0, 则代表不对后端服务器进行健康检查,这样一来fail_timeout参数也就没什么意义了。

proxy_connect_timeout
后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout
连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout
后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
2、配置完成后,重启Nginx服务器
systemctl restart nginx
或者:
nginx -s reload

3、测试,访问nginx的端口(80),看是否可以访问tomcat首页
**注意:**如果代理失败,尝试禁用SELinux(Security-Enhanced Linux)强制访问控制
修改/etc/selinux/config
设置:SELINUX=disabled 然后重启机器或虚拟机reboot

5.Nginx+Tomcat动静分离

1.上传web项目到linux
2.使用部署到2台tomcat
3.分别使用2台tomcat自己的端口号8080,8081访问test1.jsp,nginx的80端口访问test1.jsp,页面正常

1、修改Nginx配置文件
vi /etc/nginx/conf.d/default.conf

在3.3配置的基础上,添加如下配置:
server {

之前location / {} 中的proxy_pass删除

location ~* \.(gif|jpg|jpeg|png|bmp)$ {
   root /usr/share/nginx/html;
}

location ~* \.(jsp|do|action)$ {
   proxy_pass http://sunny;
}

}

location / {
root 指定根目录地址
index 默认首页
}
/:通用匹配,匹配任何未匹配到其它location的请求,相当于switch中的default
location ~ pattern:区分大小写的正则匹配,~* 为不区分

2、重启Nginx

3、访问nginx所在的主机IP地址:http://IP/test1.jsp, 图片不能正常显示

在这里插入图片描述

在Nginx服务器的静态资源目录 上传quan.png(注意和项目的目录保持一致)到
/usr/share/nginx/html/img/quan.png

重新启动nginx
Nginx -s reload

再次浏览,图片可以正常显示了!

6.Nginx+Tomcat集群负载均衡
观察Session Id的值:发现一直改变
6.1解决Session共享:
(1)session复制方式:当任何服务器中session值发生改变,都会将该改变广播给其他服务器,当其他服务器收到广播后也做相应的改变,从而实现session在所有服务器中一直。缺点 当集群中tomcat服务器很多时会增加网络负荷,性能低下。实现方式:
步骤一:2台tomcat放开一段注释
vi /usr/tomcat/conf/server.xml

在这里插入图片描述
步骤二:
在项目的web.xml末尾的标签中添加:(设置应用可以处于集群环境中)

重启再次测试,但首次访问速度较慢。
(2)ip_hash:
在这里插入图片描述

nginx -s reload:
6.3.Nginx负载均衡策略
1、轮询(默认)
每个web请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream nginxDemo {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
2、最少连接
web请求会被转发到连接数最少的服务器上。
upstream nginxDemo {
least_conn;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
3、weight 权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认是1。
#服务器A和服务器B的访问比例为:2-1; 比如有3个请求,前两个会访问A,第三个访问B
upstream nginxDemo {
server 127.0.0.1:8081 weight=2; #服务器A
server 127.0.0.1:8082; #服务器B
}
4、ip_hash
每个请求按访问ip的hash值分配,这样同一IP连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其它服务器。
upstream nginxDemo {
ip_hash;
server 127.0.0.1:8081 weight=2; #服务器A
server 127.0.0.1:8082; #服务器B
}
基于weight的负载均衡和基于ip_hash的负载均衡可以组合在一起使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值