PS:建议将所有文件下载后上传至/usr/local/src ;若无其他说明,本教程所有操作均以/usr/local/src作为起手目录
建议安装后, 将redis移动到/usr/local/redis3.2或相似的好记的目录,方便后续操作
安装后查看是否安装成功
cd src ./redis-server ../redis.conf具体参考: redis安装|菜鸟教程
安装完成后,进入sbin目录, 输入 nginx 默认端口80,尝试访问
nginx源码安装较为复杂,参考网上完整安装教程: Nginx安装配置 | 菜鸟教程
解压即安装,启动后默认端口为8080, 自行测试server是否正常开启,若失败,尝试以下命令
systemctl stop firewalld systemctl stop iptabled更改关闭端口,例如8005->8015
<Server port="8005" shutdown="SHUTDOWN"> .....更改启动端口,例如8080->8081
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />其中核心是
upstream tomcatcluster{ server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=1; }
定义一个upstream 标识为tomcatcluster; server:定义一个服务器 ip:port:指定URL weight:权重, 越大
location / { proxy_pass http://tomcatcluster; proxy_redirect default; }
http:// 后接upstream指定的标识 ,如 tomcatcluster
进入nginx目录, 比如我的/usr/local/nginx
cd /usr/local/nignx cd sbin ./nginx启动前可使用nignx -t 检验配置文件是否错误. 浏览器访问80端口, 若无意外, 则显示tomcat的欢迎界面,于是为tomcat添加项目
输入以下内容:
<html> <body> <h1>This is tomcat 1 , sessionId: <%=session.getId()%></h1> <% session.setAttribute("aa","guddqs"); session.setAttribute("bb","bbgudqs"); %> </body> </html>类似的修改8082, 要在jsp上区分出是哪个tomcat服务
修改后,多次刷新页面, 轮次出现2个tomcat的页面. 至此nginx+tomcat负载均衡搭建完毕
PS: 本教程采用tomcat8, 并使用国外某大佬github项目, 对于tomcat7需要另一个redis-session-manager.jar
其中4个jar包需要复制到tomcat的lib目录下
cp commons-logging-1.2.jar /usr/local/tomcat/8081/lib cp commons-pool2-2.4.1.jar /usr/local/tomcat/8081/lib .......RedisDataCache.properties需要复制到tomcat的conf下
cp RedisDataCache.properties /usr/local/tomcat/8081/conf进入tomcat的conf目录, 修改 context.xml文件 再<Context> 节点下加入
<Valve className="com.r.tomcat.session.management.RequestSessionHandlerValve" /> <Manager className="com.r.tomcat.session.management.RequestSessionManager" />然后修改之前复制到conf下的RedisDataCache.properties文件,切记不可修改文件名
vi RedisDataCache.properties单redis配置如下:
redis.hosts=127.0.0.1:6379 # Redis Password redis.password= # set true to enable redis cluster mode redis.cluster.enabled=false # Redis database (default 0) #redis.database=0 # Redis connection timeout (default 2000) #redis.timeout=2000redis cluster模式配置文件如下:
redis.hosts=127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002,127.0.0.1:3003,127.0.0.1:3004,127.0.0.1:3005 # Redis Password redis.password= # set true to enable redis cluster mode redis.cluster.enabled=true # Redis database (default 0) #redis.database=0 # Redis connection timeout (default 2000) #redis.timeout=2000PS: redis.password留空则等于无密码
类似的修改8082下的tomcat配置文件, 复制jar包, RedisDataCache.properties
最后重启2个tomcat, 访问80端口, 刷新页面, 观察页面显示是否达到 2个不同的tomcat服务单具有相同的session id
使用nginx反向代理到2个tomcat服务器, 仅需修改tomcat配置不同的端口,以及为nginx.conf添加upstream配置并将反向代理指向upstream即可 而添加tomcat的session共享则利用了tomcat的提供的外部session存储机制接口,而实现则使用了redis作为储存源.从而实现了session共享.