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服务时,如果 ...
随机推荐
- elasticsearch常用配置
允许外网连接network.host,http.port,network.publish_host,network.bind_host别的机器或者网卡才能访问,否则只能是127.0.0.1或者loca ...
- Python学习三|列表、字典、元组、集合的特点以及类的一些定义
此表借鉴于他人 定义 使用方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner', ...
- Android方法引用数超过65535优雅解决
随着应用不断迭代更新,业务线的扩展,应用越来越大(比如:集成了各种第三方SDK或者公共开源的Library文件.jar文件)这样一来,项目耦合性就很高,重复作用的类就越来越多了,SO:问题就来了.相信 ...
- mac zsh环境配置java_home环境变量
用zsh,修改-/.zshrc 修改这些文件之后,重修打开terminal,配置不会丢 首先确保已经安装了jdk: ## check the present running java which ja ...
- 1.网站应用程序 - 《APS.NET本质论》
1.1.HTTP协议 浏览器与WEB服务器的协议是应用层协议,当前遵循HTTP/1.1,HTTP协议是无状态的协议 客户机与服务器通过请求和响应完成一次会话(Session),每次会话中,双方发送的数 ...
- Java编程的逻辑 (67) - 线程的基本协作机制 (上)
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- Kotlin中var和val的区别
Kotlin中有两个关键字定义变量,这两个关键字外形看着差别很小就只差了一个字母,但实际差别很大的. var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量.这种声明变量的方式和Java ...
- 用 scikit-learn 和 pandas 学习线性回归
用 scikit-learn 和 pandas 学习线性回归¶ from https://www.cnblogs.com/pinard/p/6016029.html 就算是简单的算法,也需要跑通整 ...
- 使用VS2013、TFS2013和Git进行分布式团队协作
题记:呵呵,首先声明,题目起的有点大,其实我只想介绍下VS2013和TFS2013新加入的Git功能,也不是在VS中使用Git的详细向导(以后有空再详细分享给大家).这篇文章虽然在写这篇文章<V ...
- 将 Ubuntu 16.04 LTS 升级到 Ubuntu 18.04 LTS
将 Ubuntu 16.04 LTS 升级到 Ubuntu 18.04 LTS Ubuntu 18.04 LTS(Bionic Beaver)即将发布, 如果您正在使用Ubuntu 16.04LT ...