300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Nginx+Tomcat+Redis负载均衡实现Session共享

Nginx+Tomcat+Redis负载均衡实现Session共享

时间:2022-11-02 00:08:19

相关推荐

Nginx+Tomcat+Redis负载均衡实现Session共享

Nginx+Tomcat+Redis负载均衡实现Session共享

环境描述

tomcat1:192.168.194.100:18080 tomcat2:192.168.194.100:28080 Nginx: 192.168.194.100:80redis: 192.168.194.100:6379

1. Nginx安装与配置

【1】配置yum下载Nginx

第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo

cd /etc/yum.repos.d/vim nginx.repo

填写如下内容:

[nginx]name=nginx repobaseurl=/packages/centos/6/$basearch/gpgcheck=0enabled=1

保存,则会产生一个/etc/yum.repos.d/nginx.repo文件。

【2】安装Nginx

下面直接执行如下指令即可自动安装好Nginx:

yum install nginx -y

【3】配置Nginx代理tomcat

配置/etc/nginx/nginx.conf 文件

vi /etc/nginx/nginx.conf

在http里面加入如下配置:

#服务器的集群 upstream {#服务器集群名字 随便取 server localhost:18080 weight=1;#服务器配置 weight是权重的意思,权重越大分配的概率越大。 server localhost:28080 weight=2; }#当前的Nginx的配置 server {listen 80; #监听80端口,可以改成其他端口 server_name 192.168.194.100; #当前服务的域名 location / {proxy_pass ; #服务器集群名字 跟上面一致proxy_redirect default; } }

【4】启动Nginx

安装完成,下面直接就可以启动Nginx了:

service nginx start # 启动Nginx服务service nginx stop # 停止Nginx服务

至此,Nginx已经全部配置安装完成。

【5】测试Nginx

浏览器输入http://192.168.194.100:80

Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to mercial support is available at .Thank you for using nginx.

如果得到以上信息,表示nginx启动成功

2. Redis安装与配置

此处忽略

安装与配置完成后,需要启动redis

3. Tomcat+Redis session共享

【1】toncat下载

去官网下载apache-tomcat-7.0.81.tar.gz压缩包,解压两个Tomcat,分别命名为tomcat1和tomcat2。

【2】修改server.xml文件

然后修改这两个Tomcat的启动端口,分别为18080和28080,下面以修改第一台Tomcat为例,打开Tomcat的conf目录下的server.xml:修改如下三处

#修改tomcat1的server.xml<Server port="18005" shutdown="SHUTDOWN"><Connector port="18080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />

第二台Tomcat

#修改tomcat2的server.xml<Server port="28005" shutdown="SHUTDOWN"><Connector port="28080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="28009" protocol="AJP/1.3" redirectPort="8443" />

【3】配置第三方jar和context.xml文件

下载3个jar包,需要将他们放在tomcta的lib文件夹下面。切记是tomcat的lib下面。

tomcat-redis-session-manager1.2.jarjedis-2.7.2.jarcommons-pool2-2.0.jar

jar包已上传,下载地址:

链接:/s/1o8JrgRg 密码:dgqm

配置context.xml

<?xml version='1.0' encoding='utf-8'?><Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="192.168.194.100" port="6379" password="password" 如果设置了密码则在这里配置上database="0" redis默认16个database 第一个是0 最后一个是15maxInactiveInterval="60" /> </Context>

【4】将demo项目分别放到两个tomcat的webapps文件中,然后分别启动两个tomcat

#demo已上传,下载地址:链接:/s/1o8JrgRg 密码:dgqm

【5】通过demo 的登录案例,测试session共享

浏览器登录成功后的页面

用户: huang密码: huangsessionID: DE50FE269D71187B5BC01DAD40394158

然后查看redis客户端

cd /usr/local/redis/./bin/redis-cli #进入客户端127.0.0.1:6379> keys *1) "DE50FE269D71187B5BC01DAD40394158"127.0.0.1:6379> get DE50FE269D71187B5BC01DAD40394158"\xac\xed\x00\x05sr\x00Dcom.orangefunction.tomcat.redissessions.SessionSerializationMetadataB\xd9\xd9\xf7v\xa2\xdbL\x03\x00\x01[\x00\x15sessionAttributesHasht\x00\x02[Bxpw\x14\x00\x00\x00\x10\xf7\nY\x82Z\x91\x06\xa68\xa3\xb8\xf6\xa6\x06Rvxsr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x00\x00\x01^\x97\xa2\b\x15sq\x00~\x00\x03\x00\x00\x01^\x97\xa2\b\x15sr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexq\x00~\x00\x04\x00\x1bw@sr\x00\x11java.lang.Boolean\xcd r\x80\xd5\x9c\xfa\xee\x02\x00\x01Z\x00\x05valuexp\x00sq\x00~\x00\t\x01sq\x00~\x00\x03\x00\x00\x01^\x97\xa2J[t\x00 DE50FE269D71187B5BC01DAD40394158sq\x00~\x00\a\x00\x00\x00\x02t\x00\busernamet\x00\x05huangt\x00\bpasswordt\x00\x05huangw\b\x00\x00\x01^\x97\xa2\b\x15"127.0.0.1:6379>

由此可见,实现了session共享与session读取

注意

【1】Nginx反向代理Tomcat,如果提示13 permission denied while connecting to upstream这个错误,

你可以看到所有可用的列表SELinux httpd使用布尔值

getsebool -a | grep httpd

解决方法:

#解决方案是切换的SELinux布尔值httpd网络连接on(Nginx使用httpd标签)。setsebool httpd_can_network_connect on #注意,每次linux服务器重启就失效了,需要再次执行这个

【2】上面所提供的jar包是针对tomcat7的,只能使用tomcat7。

【3】启动程序的顺序:nginx > redis > tomcat

【4】redis如果存储对象,则需要将对象序列化

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。