linux环境下通过nginx实现tomcat集群实现Session会话问题

linux环境下通过nginx实现tomcat集群

安装nginx之前需要pcre依赖和jvm-remote补丁
一、准备如下软件:
1、nginx-1.1.2.tar.gz,负载均衡/反向代理服务器,可通过http://nginx.org/en/download.html获取。
2、pcre-8.10.tar.gz,正规表达式库,可通过http://sourceforge.net/projects/pcre/获取;
3、nginx-upstream-jvm-route-0.1.tar.gz,是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能,可通过http://code.google.com/p/nginx-upstream-jvm-route/downloads/list获取;

二、安装和安装
1、解压各软件
1
[root@localhost ~]# tar zxvf pcre-8.10.tar.gz
2
[root@localhost ~]# tar zxvf nginx-upstream-jvm-route-0.1.tar.gz
3
[root@localhost ~]# tar nginx-1.1.2.tar.gz
2、安装
1
[root@localhost ~]# cd nginx-1.1.2
2
[root@localhost ~]# patch -p0 < ${nginx-upstream-jvm-route解压目录}/jvm_route.patch
3
[root@localhost ~]# ./configure --prefix=/usr/local/nginx --with-pcre=${pcre解压目录} --with-http_stub_status_module --with-http_ssl_module --add-module=${nginx-upstream-jvm-route解压目录}
4
[root@localhost ~]# make
5
[root@localhost ~]# make install
三、修改配置
1、修改tomcat的server.xml,服务器的tomcat的配置文件中分别找到:
<Engine name="Catalina" defaultHost="localhost" >
分别修改为:
1
Tomcat01:
2
<Engine name="Catalina" defaultHost="localhost" jvmRoute="a">
3
Tomcat02:
4
<Engine name="Catalina" defaultHost="localhost" jvmRoute="b">
5
Tomcat03:
6
<Engine name="Catalina" defaultHost="localhost" jvmRoute="c">
2、修改nginx的nginx.conf文件

01
#运行NGINX所使用的用户和组
02
user  root;
03
#nginx进程数,建议按照cpu数目来指定,一般为它的倍数,每个进程消耗约10M内存
04
worker_processes  1;
05

06
#日志信息
07
error_log  logs/error.log;
08
#error_log  logs/error.log  notice;
09
#error_log  logs/error.log  info;
10

11
pid        logs/nginx.pid;
12

13
events {
14
    #使用epoll的I/O模型
15
    use epoll;
16
    #该值受系统进程最大打开文件数限制,需要使用命令ulimit -n 查看当前设置
17
    worker_connections  1024;
18
}
19

20

21
http {
22
    #这里是您需要修改的地方,修改为您的服务器IP:端口号 srun_id为您在tomcat中所配置的jvmRoute
23
    upstream backend{
24
      server 192.168.12.128:18080 srun_id=a;
25
      server 192.168.12.128:28080 srun_id=b;
26
      server 192.168.12.128:38080 srun_id=c;
27
      jvm_route $cookie_JSESSIONID|sessionid reverse;
28
    }
29
    include       mime.types;
30
    #设置默认类型是二进制流,若未设置时,比如未加载PHP时,是不予解析,用浏览器访问则出现下载窗口
31
    default_type application/octet-stream;
32
    charset UTF-8;
33
    server_names_hash_bucket_size 128;
34
    client_header_buffer_size 32k;
35
    large_client_header_buffers 4 32k;
36
    client_max_body_size 20m;
37
    limit_rate 1024k;
38
    sendfile on;
39
    tcp_nopush     on;
40
    keepalive_timeout 60;
41
    tcp_nodelay on;
42
    fastcgi_connect_timeout 300;
43
    fastcgi_send_timeout 300;
44
    fastcgi_read_timeout 300;
45
    fastcgi_buffer_size 64k;
46
    fastcgi_buffers 4 64k;
47
    fastcgi_busy_buffers_size 128k;
48
    fastcgi_temp_file_write_size 128k;
49
    gzip on;
50
    #gzip_min_length 1k;
51
    gzip_buffers     4 16k;
52
    gzip_http_version 1.0;
53
    gzip_comp_level 2;
54
    gzip_types       text/plain application/x-javascript text/css application/xml;
55
    gzip_vary on;
56
    #limit_zone crawler $binary_remote_addr 10m;
57
    server {
58
        listen       80;
59
        server_name  192.168.12.128; #这里也是您所需要修改的地方,多域名用空格隔开
60
        index index.html index.htm index.jsp;
61
        charset UTF-8;
62
        root /usr/local/tomcats/project/;# 这里也是您所需要修改的地方,虚拟机指向的路径(可能这里有点问题),我的web应用系统放在project下面的
63
        #access_log  logs/host.access.log  main;
64

65
        #这里也是您所需要修改的地方,yourproject更换成您的项目路径
66
        location /yourproject/ {
67
            proxy_pass http://backend;
68
            proxy_redirect off;
69
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
70
            proxy_set_header X-Real-IP $remote_addr;
71
            proxy_set_header Host $http_host;
72
            index  index.html index.htm index.jsp;
73
        }
74
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
75
            expires 30d;
76
        }
77
        location ~ .*\.(js|css)?$ {
78
            expires 1h;
79
        }
80
        location /Nginxstatus{
81
            stub_status on;
82
            access_log off;
83
        }
84
        log_format access '$remote_addr - $remote_user [$time_local] "$request" '
85
             '$status $body_bytes_sent "$http_referer" '
86
             '"$http_user_agent" $http_x_forwarded_for';
87

88
        error_page  404              /404.html;
89

90
        error_page   500 502 503 504  /50x.html;
91
        location = /50x.html {
92
            root   html;
93
        }
94
    }
95
}

3、检查nginx的配置
1
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t -c /usr/nginx/conf/nginx.conf

四、启动测试

1
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
2
/usr/local/tomcats/tomcat-a/bin/startup.sh
3
/usr/local/tomcats/tomcat-b/bin/startup.sh
4
/usr/local/tomcats/tomcat-c/bin/startup.sh
停止服务
1
/usr/local/tomcats/tomcat-a/bin/shutdown.sh
2
/usr/local/tomcats/tomcat-b/bin/shutdown.sh
3
/usr/local/tomcats/tomcat-c/bin/shutdown.sh
4
pkill -9 nginx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现nginxtomcat一起部署springboot项目并实现tomcat集群,需要进行以下步骤: 1. 部署springboot项目到tomcat上,并启动多个tomcat实例,这些实例需要在不同的端口上运行。 2. 配置nginx作为反向代理服务器,将所有请求转发到tomcat集群中的一个实例上。可以使用upstream模块来配置tomcat集群,如下所示: ```nginx http { upstream tomcat_cluster { server tomcat1_ip:tomcat1_port; server tomcat2_ip:tomcat2_port; server tomcat3_ip:tomcat3_port; } server { listen 80; server_name example.com; location / { proxy_pass http://tomcat_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` 在上面的配置中,tomcat_cluster是一个upstream实例,包含了所有tomcat实例的IP地址和端口号。nginx会将请求转发到tomcat_cluster中的一个实例上。 3. 配置session共享,以便在tomcat集群中的不同实例之间共享用户会话信息。可以使用memcached或redis等分布式缓存来实现session共享。 4. 配置负载均衡器,以便nginx可以根据不同的负载均衡算法来分配请求到不同的tomcat实例上。可以使用nginx自带的负载均衡模块或第三方模块,如nginx-upsync-module等。 5. 测试集群的可伸缩性和容错性,以确保tomcat集群可以在高负载和节点故障的情况下正常运行。 总结来说,要实现nginxtomcat一起部署springboot项目并实现tomcat集群,需要进行反向代理、session共享、负载均衡器等多方面的配置和测试。这样可以保证项目的高可用性和可伸缩性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值