Tomcat Cluster负载均衡
author:JevonWei
版权声明:原创作品
Tomcat Cluster负载均衡
环境
tomcatA 172.16.253.108
tomcatB 172.16.253.105
代理服务器 172.16.253.191
Tomcat集群
Tomcat A
[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 ~]# mkdir -pv /data/webapps/ROOT/{classes,lib,WEB-INF}
[root@tomcatA ~]# vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="www.jevon1.com"> \\修改默认主机为www.jevon1.com
<Host name="www.jevon1.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="true" >
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="jevon_access_log" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
[root@tomcatA ~]# 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@tomcatA ~]# systemctl start tomcat
[root@tomcatA ~]# ss -ntl
Tomcat B
[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 ~]# mkdir -pv /data/webapps/ROOT/{classes,lib,WEB-INF}
[root@tomcatB ~]# vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="www.jevon2.com"> \\修改默认主机为www.jevon21.com
<Host name="www.jevon2.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="true" >
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="jevon_access_log" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
[root@TomcatB ~]# 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@tomcatB ~]# systemctl start tomcat
[root@tomcatB ~]# ss -ntl
Nginx代理
代理服务器
[root@danran ~]# vim /etc/hosts
172.16.253.108 www.jevon1.com
172.16.253.105 www.jevon2.com
[root@danran ~]# yum -y install nginx
[root@danran ~]# 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;
root /usr/share/nginx/html;
location / {
proxy_pass http://appsrvs/;
}
}
[root@danran ~]# nginx -t
[root@danran ~]# nginx start nginx
client
elinks www.danran.com

elinks www.danran.com

Haproxy代理
代理服务器
[root@danran ~]# vim /etc/hosts
172.16.253.108 www.jevon1.com
172.16.253.105 www.jevon2.com
[root@httpd ~]# yum -y install haproxy
[root@httpd ~]# vim /etc/haproxy/haproxy.cfg
frontend tomcat
bind *:80
default_backend appsrvs
backend appsrvs
balance roundrobin
server app1 www.jevon1.com:8080 check
server app2 www.jevon2.com:8080 check
listen stats
bind *:9009
stats enable
[root@httpd ~]# systemctl start haproxy
[root@httpd ~]# ss -ntl
client
elinks www.danran.com

elinks www.danran.com

http://www.danran.com:9009/haproxy?stats

Htppd代理
代理服务器
[root@httpd ~]# yum -y install httpd
[root@httpd ~]# httpd -M \\确保以下三个模块
proxy_balancer_module (shared)
proxy_module (shared)
proxy_http_module (shared)
或
proxy_ajp_module (shared)
[root@httpd ~]# vim /etc/httpd/conf.d/tomcat-http.conf
<proxy balancer://appsrvs> \\定义balancer集群组
BalancerMember http://www.jevon1.com:8080
BalancerMember http://www.jevon2.com:8080
ProxySet lbmethod=byrequests \\调度算法byrequests为轮询;bybusyness根据繁忙程度调度,相当于least-connest;bytraffic根据流量调度
</Proxy>
<VirtualHost *:80>
ServerName www.danran.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://appsrvs/
ProxyPassReverse / balancer://appsrvs/
<Location />
Require all granted
</Location>
</VirtualHost>
[root@httpd ~]# httpd -t
[root@httpd ~]# systemctl start httpd
client
elinks www.danran.com

elinks www.danran.com

httpd的AJP协议代理
代理服务器
[root@httpd ~]# vim /etc/httpd/conf.d/tomcat-ajp.conf
<proxy balancer://appsrvs> \\定义balancer集群组
BalancerMember ajp://www.jevon1.com:8009 \\tomcat服务的8080端口不支持ajp协议,8009端口支持aip协议
BalancerMember ajp://www.jevon2.com:8009
ProxySet lbmethod=byrequests \\调度算法byrequests为轮询;bybusyness根据繁忙程度调度,相当于least-connest;bytraffic根据流量调度
</Proxy>
<VirtualHost *:80>
ServerName www.danran.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://appsrvs/
ProxyPassReverse / balancer://appsrvs/
<Location />
Require all granted
</Location>
</VirtualHost>
[root@httpd ~]# httpd -t
[root@httpd ~]# systemctl start httpd
client
elinks www.danran.com

elinks www.danran.com

实现Tomcat集群的session粘性
Tomcat A
[root@danran ~]# vim /etc/httpd/conf.d/tomcat-ajp.conf
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://appsrvs>
BalancerMember ajp://www.jevon1.com:8009 route=tcA \\route=tcA为cookie标识,tcA为自定义信息
BalancerMember ajp://www.jevon2.com:8009 route=tcB
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID \\ROUTEID同header上设置的Sookie信息一致;
</Proxy>
<VirtualHost *:80>
ServerName www.danran.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://appsrvs/
ProxyPassReverse / balancer://appsrvs/
<Location />
Require all granted
</Location>
</VirtualHost>
balancer的状态界面
<Location /balancer-manager> 管理接口的状态界面的自定义URL
SetHandler balancer-manager 启用的内部处理器为balancer-manager,固定的
ProxyPass ! \\不反代
Require all granted \\运行某
</Location>
[root@danran ~]# httpd -t
[root@danran ~]# systemctl restart httpd
client访问www.danran.com实现会话粘性
[root@danran ~]# curl -I www.danran.com
HTTP/1.1 200 OK
Date: Sun, 03 Sep 2017 00:47:42 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) PHP/5.4.16
Set-Cookie: JSESSIONID=F36265B9FF2CC34C7203E41372FE4A0A; Path=/; HttpOnly
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 416
Set-Cookie: ROUTEID=.tcA; path=/
client显示balancer状态界面
http://www.danran.com/balancer-manager

Tomcat Cluster负载均衡的更多相关文章
- Nginx 服务器 之Nginx与tomcat实现负载均衡
本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf 创建 ...
- Apache+Tomcat部署负载均衡(或集群)
本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...
- 利用httpd对tomcat进行负载均衡配置
实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:jdk-8u60-linux-x64 ...
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群
Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...
- Tomcat(五):nginx/httpd + tomcat及负载均衡tomcat
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Linux 下配置 nginx + 两个 tomcat 的负载均衡
前提:已经安装了 nginx 和两个 tomcat 1.修改 nginx.conf 配置文件 1)在 http{} 节点之间添加 upstream 配置 2)修改 nginx 的监听端口,默认是 ...
- 使用 Nginx + Tomcat 搭建负载均衡
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...
随机推荐
- Java实现简单文件过滤器
输入路径查找该路径下的指定文件类型的文件 代码思路: 想要循环遍历文件夹下所有子文件夹,就要用到递归. 首先判断路径是否存在: 是:获取文件 判断是否文件夹: 是:调用自身,继续获取子文件夹下内容 否 ...
- Java curator操作zookeeper获取kafka
Java curator操作zookeeper获取kafka Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更 ...
- oracle 通过同义词建立视图
需要给予以下权限. GRANT CREATE VIEW TO tms;GRANT SELECT ANY table TO tms;GRANT SELECT ANY DICTIONARY TO tms;
- CentOS IP DNS设置
1.CentOS 修改DNS 修改对应网卡的DNS的配置文件 # vi /etc/resolv.conf 修改以下内容 nameserver 8.8.8.8 #google域名服务器 nameserv ...
- Lettuce_webdriver 自动化测试
这篇文章主要讲解以下几点: 1. Lettuce_webdriver环境搭建 2. lettuce_webdriver自动化实例讲解 一. lettuce_webdriver环境搭建 搭建lettuc ...
- 简单探讨python中的语句和语法
python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了,对象需要靠表达式建立处理,而表达式往往存在于语句 ...
- Consul文档简要整理
什么是Consul? Consul是一个用来实现分布式系统的服务发现与配置的开源工具.他主要由多个组成部分: 服务发现:客户端通过Consul提供服务,类似于API,MySQL,或者其他客户端可以使用 ...
- windows下Ubuntu虚拟机联网配置 + Ubuntu虚拟机代理配置
Ubuntu虚拟机网络连接方式设置: http://blog.csdn.net/u013052460/article/details/50039937 or http://www.gezila.com ...
- 58. Length of Last Word【leetcode】
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...
- 手算平方根和基于 Java BigInteger 的大整数平方根的实现
为了实现任意大数的运算,long用BigInteger替换带哦. 好了废话少数,先说数学原理,也就是手算平方根计算机代码实现!那么什么叫手算平方根了??? 手开方图解 据说前苏联的普通工人都会的(毛熊 ...