Tomcat 负载均衡 及Session共享
原文:https://www.sunjianhua.cn/archives/tomcat-high-availability.html
一、安装java环境
二、安装tomcat(apache-tomcat-7.0.54)
三、安装nginx(tengine-2.2.0)
四、安装redis
五、安装keepalived (keepalived-1.3.5)
a.下载
$ wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz -P /usr/local/src/
b.编译安装
$ cd /usr/local/src/ && tar -zxvf keepalived-1.3.5.tar.gz && cd keepalived-1.3.5
$ ./configure --prefix=/usr/local/keepalived
$ make && make install
六、配置高可用集群
a.配置nginx
#在10.231服务器执行
$ vi /usr/local/nginx/conf/vhosts/tomcats.conf
upstream sunjianhua10231 {
server 192.168.10.232:8080 fail_timeout=10s max_fails=10 weight=5;
server 192.168.10.231:8080 fail_timeout=10s max_fails=10 weight=5;
}
server {
listen 99;
server_name 192.168.10.231;
charset utf-8;
location / {
proxy_pass http://sunjianhua10231/;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#在10.232服务器执行
$ vi /usr/local/nginx/conf/vhosts/tomcats.conf
upstream sunjianhua10232 {
server 192.168.10.232:8080 fail_timeout=10s max_fails=10 weight=5;
server 192.168.10.231:8080 fail_timeout=10s max_fails=10 weight=5;
}
server {
listen 99;
server_name 192.168.10.232;
charset utf-8;
location / {
proxy_pass http://sunjianhua10232/;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
b.配置keepalived
#此处操作两台服务器均执行
$ mkdir -p /etc/keepalived
$ vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
$ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
$ cp keepalived/etc/init.d/keepalived /etc/init.d/
$ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
$ ln -s /usr/local/keepalived/sbin/keepalived /sbin/
$ ln -s /usr/local/sbin/keepalived /usr/sbin/
$ chkconfig keepalived on
$ chmod +x /etc/keepalived/nginx_check.sh
#一个在10.231上 (设置为Master,rid10232为10.231服务器的hostname)
$ vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id rid10232
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.10.232
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass fuckyou
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.10.16
}
}
#一个在10.232上 (设置为BACKUP,rid10232为10.231服务器的hostname)
$ vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id rid10232
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.10.231
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass fuckyou
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.10.16
}
}
七、keepalived+nginx高可用测试
启动两个tomcat
启动10.231中的tomcat:sh /usr/local/tomcat_web/bin/startup.sh
启动10.232中的tomcat:sh /usr/local/tomcat_web/bin/startup.sh
启动两个nginx
启动: /usr/local/nginx/sbin/nginx
关闭:/usr/local/nginx/sbin/nginx -s stop
重启:/usr/local/nginx/sbin/nginx -s reload
启动两个keepalived
启动:service keepalived start
关闭:service keepalived stop
重启:service keepalived restart
Ps:注意防火墙问题
访问vip:http://192.168.10.16:99
访问 nginx1:http://192.168.10.232:99
访问 nginx2:http://192.168.10.231:99
1.关闭nginx1 keepalived会将他重新启动
2.关闭192.168.10.231中的keepalived(service keepalived stop),该节点的网络接口中的vip
将会消失,此时vip已经漂移到了192.168.10.232,在通过vip访问nginx集群,访问到的也是192.168.10.232了
八、Session共享
1.方案一:容器扩展session共享
上传3个jar到/usr/local/tomcat_web/lib/
b.在/usr/local/tomcat_web/conf/context.xml中加入(注意ip,端口,密码)
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.20.250" port="6379" password="redis1234"
database="0" maxInactiveInterval="60"
/>
2.方案二:Spring Session 集群
a.加入maven依赖
b.加入spring session配置在web.xml中
c.加入主从复制及session配置文件



Tomcat 负载均衡 及Session共享的更多相关文章
- Nginx和Tomcat负载均衡实现session共享(转)
以前的项目使用Nginx作为反向代理实现了多个Tomcat的负载均衡,为了实现多个Tomcat之间的session共享,使用了开源的Memcached-Session-Manager框架. 此框架的优 ...
- Nginx和Tomcat负载均衡实现session共享
以前的项目使用Nginx作为反向代理实现了多个Tomcat的负载均衡,为了实现多个Tomcat之间的session共享,使用了开源的Memcached-Session-Manager框架. 此框架的优 ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)
一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...
- keepalived+nginx+tomcat+redis实现负载均衡和session共享(原创)
keepalived+nginx+tomcat+redis实现负载均衡和session共享 直接上链接,码了一天,就不再重写了,希望能帮到大家,有问题欢迎留言交流.
- Nginx+Tomcat8+Memcached实现负载均衡及session共享
1> 基础环境 简易拓扑图: 2> 部署Tomcat [root@node01 ~]# ll -h ~ |egrep 'jdk|tomcat'-rw-r--r-- 1 root root ...
- nginx+tomcat负载均衡和session复制
本文介绍下传统的tomcat负载均衡和session复制. session复制是基于JVM内存的,当然在当今的互联网大数据时代,有更好的替代方案,如将session数据保存在Redis中. 1.安装n ...
- nginx和tomcat实现反向代理、负载均衡和session共享
这类的文章很多,nginx和tomcat实现反向代理.负载均衡实现很容易,可以参照http://blog.csdn.net/liuzhigang1237/article/details/8880752 ...
- 玩转spring boot——负载均衡与session共享
前言 当项目上线后,如果要修复bug或扩充功能,都需要重启tomcat服务.此时,正在使用应用的用户们就需要等待服务器的重启,而这就会造成不好的用户体验.还有,当仅仅只有一台tomcat服务时,如果 ...
随机推荐
- 一个无锁消息队列引发的血案(四)——月:RingQueue(上) 自旋锁
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...
- mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg
mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg ...
- highchart 横轴纵轴数据
1.highchart 横轴为字符串数组,必须加引号:纵轴为数值数组,不能加引号2.series中的json内容,属性不能加引号3.chart.height: Number,图表的高度.默认高度是根据 ...
- Heist
CF#509 div2 A 第一次用自己的号打CF祭. 题目描述 昨晚有一家电子商店被抢劫了. 昨天在商店里的所有键盘都是从x开始按升序编号的.例如,如果x=4,并且商店中有3个键盘,那么编号就为4, ...
- 2018-2019-2 网络对抗技术 20165301 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165301 Exp4 恶意代码分析 实验内容 系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间并分 ...
- 4.类型设计规范《.NET设计规范》
类是引用类型的一般情况,占了框架中的大多情况,类的流行归于它支持面向对象的特征,以及它的普遍的适用性,基类和抽象类是两个特殊的逻辑分组,它们与扩张性有关. 由于CLR不支持多继承,接口类型可以用来模拟 ...
- Qt_mingw搭建opencv开发环境
Qt在windows下共有2个版本:mingw和msvc.其中mingw使用gcc编译器,msvc使用微软的VC编译器.针对不同版本Qt,使用Opencv的方式也不同. 区别 msvc, 可以使用op ...
- weblogic在64位windows的设置
最近遇到一些问题,需要调整weblogic的内存用于做压力测试,weblogic默认的内存是远远不能满足当前测试需求.由于服务器是64位8G的内存,但是在服务器上安装的jdk和weblogic都是32 ...
- 【IObit】五大软件激活码( Advanced Systemcare....)
IObit Malware Fighter 6Pro 破解: 打开软件安装位置,下载替换dll文件 链接: https://pan.baidu.com/s/1Euz87MCANuCnRqZsMQ_w4 ...
- oi初级数学知识
一.先是一些整除的性质: •整除:若a=bk,其中a,b,k都是整数,则b整除a,记做b|a. •也称b是a的约数(因数),a是b的倍数 •显而易见的性质: •1整除任何数,任何数都整除0 •若a|b ...