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服务时,如果 ...
随机推荐
- Docker手动搭建sentry错误日志系统
Sentry介绍 在开发过程中,我们通过debug来排查bug,并且使用logging来记录系统的错误.但是logging有很多不足: 必须登陆到服务器查看日志文件 需要主动去查询 输出日志方式无法把 ...
- html复习之标签整理
<body>标签,网页上显示的内容放在这里开始学习<p>标签,添加段落<hx>标签,为网页添加标题加入强调语气,使用<strong>加粗和<em& ...
- js 获取json对象的Key、value(js遍历json对象的key和value)
<script type="text/javascript"> getJson('age'); function getJson(key){ "," ...
- EntityFrameWork 图解
- CEF 中的那些坑
CEF (Chromium Embedded Framework) 的大名也听说很久了,最近因为客户的需求,简单地研究了一下.结果遇到了一个接一个的坑,且慢慢道来.比之前用QtWebkit的坑还要多和 ...
- JS两种事件的触发方式
一.入侵式触发方式 <input type="button" id="one" onclick="事件" /> 二.非入侵式触发 ...
- [转] map/reduce
如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念. ...
- Vue.js项目集成ElementUI
Vuejs实例-02Vue.js项目集成ElementUI Vuejs实例-02Vue.js项目集成ElementUI 0:前言 vue.js的UI组件库,在git上有多个项目,我见的使用者比较多 ...
- 【AtCoder】ARC092
C - 2D Plane 2N Points 把能连边的点找到然后跑二分图匹配即可 #include <bits/stdc++.h> #define fi first #define se ...
- CSS------如何让ul中的li分为两列甚至多列
转载: http://blog.sina.com.cn/s/blog_7f13f92a0100rkfg.html 只需要复制ul和li中的style样式即可 如果需要自定义多少列,只需要修改li中的w ...