NAT集群部署solo之session server
author:JevonWei
版权声明:原创作品
使用Nginx做代理服务器,部署solo,使用session server做会话黏滞
拓扑图
环境
tomcatA 172.16.253.108
tomcatB 172.16.253.105
memcachedA 172.16.253.108
memcachedB 172.16.253.105
代理服务器 172.16.253.191
在Tomcat主机上搭建httpd服务,使httpd代理本机Tomcat应用,Nginx代理Tomcat
搭建Tomcat和Httpd服务器
TomcatA
[root@TomcatA ~]# yum -y install java-1.8.0-openjdk*
[root@TomcatA ~]# yum -y install tomcat-lib tomcat tomcat-webapps tomcat-docs-webapp tomcat-admin-webapps
[root@TomcatA ~]# iptables -F
[root@TomcatA ~]# setenforce 0
[root@TomcatA ~]# systemctl start tomcat
配置Tomcat测试页
[root@TomcatA ~]# mkdir /data/webapps/ROOT/{classes,lib,WEB-INF} -pv
[root@TomcatA ~]# vim /data/webapps/ROOT/index.jsp
<%@ page language="java" %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color="blue">TomcatB.magedu.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("magedu.com","magedu.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
[root@TomcatA ~]# vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="www.jevon1.com">
</Host>
<Host name="www.jevon1.com" appBase="/data/webapps"
unpackWARs="true" autoDeploy="true">
</Host>
[root@TomcatA ~]# systemctl restart tomcat
搭建Httpd
[root@TomcatA ~]# yum -y install httpd
[root@TomcatA ~]# vim /etc/httpd/conf.d/tomcat.conf
<VirtualHost *:80>
ServerName www.jevon1.com
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://172.16.253.108:8080/
ProxyPassReverse / http://172.16.253.108:8080/
<Location />
Require all granted
</Location>
</VirtualHost>
[root@TomcatA ~]# systemctl start httpd
TomcatB
[root@TomcatB ~]# yum -y install java-1.8.0-openjdk*
[root@TomcatB ~]# yum -y install tomcat-lib tomcat tomcat-webapps tomcat-docs-webapp tomcat-admin-webapps
[root@TomcatB ~]# iptables -F
[root@TomcatB ~]# setenforce 0
[root@TomcatB ~]# systemctl start tomcat
配置Tomcat测试页
[root@TomcatB ~]# mkdir /data/webapps/ROOT/{classes,lib,WEB-INF} -pv
[root@TomcatB ~]# vim /data/webapps/ROOT/index.jsp
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color="red">TomcatA.magedu.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("magedu.com","magedu.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
[root@TomcatB ~]# vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="www.jevon2.com">
</Host>
<Host name="www.jevon2.com" appBase="/data/webapps"
unpackWARs="true" autoDeploy="true">
</Host>
[root@TomcatB ~]# systemctl restart tomcat
搭建Httpd
[root@TomcatB ~]# yum -y install httpd
[root@TomcatB ~]# vim /etc/httpd/conf.d/tomcat.conf
<VirtualHost *:80>
ServerName www.jevon2.com
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://172.16.253.108:8080/
ProxyPassReverse / http://172.16.253.108:8080/
<Location />
Require all granted
</Location>
</VirtualHost>
[root@TomcatB ~]# systemctl start httpd
Haproxy代理
[root@nginx ~]# yum -y install haproxy
[root@nginx ~]# vim /etc/hosts
172.16.253.108 www.jevon1.com
172.16.253.105 www.jevon2.com
172.16.250.127 www.danran.com
[root@nginx ~]# vim /etc/nginx/nginx.conf
http {
upstream appsrvs {
server www.jevon1.com:8080;
server www.jevon2.com:8080;
}
server {
listen 80;
server_name www.danran.com;
index index.jsp index.html;
location / {
proxy_pass http://appsrvs/;
}
}
}
[root@nginx ~]# nginx -t
[root@nginx ~]# systemctl start nginx
安装后端memcached服务集群
下载相关程序到Tomcat主机的//usr/share/java/tomcat目录下
javolution-5.4.3.1.jar
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc7-1.8.3.jar
msm-javolution-serializer-1.8.3.jar
spymemcached-2.11.1.jar /usr/share/java/tomcat
memcachedA
[root@TomcatA ~]# yum -y install memcached
[root@TomcatA ~]# systemctl start memcached.service
[root@TomcatA ~]# ss -ntl
memcachedB
[root@TomcatB ~]# yum -y install memcached
[root@TomcatB ~]# systemctl start memcached.service
[root@TomcatB ~]# ss -ntl
配置Tomcat连接memcached服务端
TomcatA
[root@TomcatA ~]# vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="www.jevon1.com" jvmRoute="tcA">
<Host name="www.jevon1.com" appBase="/data/webapps"
unpackWARs="true" autoDeploy="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.16.253.108:11211,n2:172.16.253.105:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
</Host>
[root@TomcatB ~]# systemctl restart tomcat
TomcatB
[root@TomcatB ~]# vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tcB">
</Host>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.16.253.108:11211,n2:172.16.253.105:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
</Host>
[root@TomcatB ~]# systemctl restart tomcat
部署solo
[root@TomcatA ~]# vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tcA">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/solo-2.2.0" docBase="solo-2.2.0" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.16.253.108:11211,n2:172.16.253.105:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
</Context>
[root@TomcatA ~]# vim /etc/tomcat/tomcat-users.xml
<role rolename="manager-gui"/> \\启用manager-gui管理组
<user username="tomcat" password="tomcat" roles="manager-gui"/> \\添加用户到manager-gui管理组中,用户为tomcat,密码为tomcat
[root@danran ~]# systemctl restart tomcat
浏览器http://172.16.253.105:8080/进入Manager App管理界面
选择solo应用的war文件部署
配置Tomcat的服务代理
[root@TomcatB webapps]# vim /etc/httpd/conf.d/tomcat.conf
<VirtualHost *:80>
ServerName www.jevon2.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://172.16.253.105:8080/solo-2.2.0/
ProxyPassReverse / http://172.16.253.105:8080/solo-2.2.0/
<Location />
Require all granted
</Location>
</VirtualHost>
[root@TomcatB webapps]# systemctl restart httpd
修改solo的服务器配置文件
[root@TomcatB ~]# vim /usr/share/tomcat/webapps/solo-2.2.0/WEB-INF/classes/latke.properties
serverHost=172.16.253.105 \\本机Tomcat的IP
[root@TomcatB ~]# systemctl restart tomcat
[root@TomcatB ~]# ss -ntl
TomcatB配置同TomcatA一致
client测试访问
NAT集群部署solo之session server的更多相关文章
- 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享
一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...
- CAS 集群部署session共享配置
背景 前段时间,项目计划搞独立的登录鉴权中心,由于单独开发一套稳定的登录.鉴权代码,工作量大,最终的方案是对开源鉴权中心CAS(Central Authentication Service)作适配修改 ...
- Spring Boot+redis存储session,满足集群部署、分布式系统的session共享
本文讲述spring-boot工程中使用spring-session机制进行安全认证,并且通过redis存储session,满足集群部署.分布式系统的session共享. 原文链接:https://w ...
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...
- ArcGIS Server 9.3集群部署(多som+多soc)
关键字:集群 SOC 分布式 ArcGIS Server http://t.cn/8F8yPF3 http://t.cn/8F8yM4b http://www.netfoucs.com/nj19862 ...
- 理解 OpenStack + Ceph (1):Ceph + OpenStack 集群部署和配置
本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...
- Nginx+Tomcat集群部署
为了获取更好的性能,我们常常需要将tomcat进行集群部署.下文通过nginx转发实现tomcat集群,并通过nginx-upstream-jvm-route插件保证session的粘滞. 应用场景环 ...
- HP DL160 Gen9服务器集群部署文档
HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server Memo ...
随机推荐
- ios 监听TextField中内容
@property (weak, nonatomic) IBOutlet UITextField *UserID; @property (weak, nonatomic) IBOutlet UITex ...
- iframe嵌入页面不能全部展示
在嵌入页面不能全部展示的问题中,可以通过js改变iframe的高度 html部分代码: <iframe src="#" name="i" id=" ...
- swift3.0 移除当前页面的前一个页面
用的是以下的跳转方式 self.navigationController?.pushViewController(viewController, animated: true) 在当前页面移除方式 s ...
- ASP.NET windows验证IIS配置
Windows验证时,需要配置IIS,把匿名验证设为disable,windows验证设为enable,window7 默认为匿名验证为enable,windows验证为disable. 否则会sys ...
- MySQL-InnoDB引擎
InnoDB存储引擎支持事务,其设计目标主要面向在线事务(OLTP)应用,其特点是: 行锁设计,支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁,从MySQL5.5.8 开始,I ...
- VMware Workstation Pro 安装centos6.5
先要安装好VMware Workstation Pro破解版本,下载好centos系统.iso光盘映像文件,本人下载的是CentOS-6.5-i386-bin-DVD1.iso 添加新的虚拟主机可以通 ...
- Python 协程总结
Python 协程总结 理解 协程,又称为微线程,看上去像是子程序,但是它和子程序又不太一样,它在执行的过程中,可以在中断当前的子程序后去执行别的子程序,再返回来执行之前的子程序,但是它的相关信息还是 ...
- 【HTTP权威指南】第三章-HTTP报文
HTTP是因特网的信使,报文就是信使运送的包裹. 这一章包含: 报文如何流动 报文的三个组成部分(起始行,首部,实体的主体部分) 请求报文和响应报文的区别 请求报文支持的各种功能(方法) 响应报文返回 ...
- yii gridview 时间段筛选(一个输入框,自动提交,高清大图)
yii gridview功能强大,但是时间筛选比较麻烦,与数据库的存储格式有关,本文的时间格式是date类型 那么问题来了,yii只提供关于时间的text搜索格式,就是只能查找精确日期比如2017-8 ...
- .Net大局观(2).NET Core 2.0 特性介绍和使用指南
.NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,系统地介绍了.NET Core 2.0及生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路径.提纲来用. ...