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 &quot;%r&quot; %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 &quot;%r&quot; %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负载均衡的更多相关文章

  1. Nginx 服务器 之Nginx与tomcat实现负载均衡

      本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf  创建 ...

  2. Apache+Tomcat部署负载均衡(或集群)

    本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...

  3. 利用httpd对tomcat进行负载均衡配置

    实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:jdk-8u60-linux-x64 ...

  4. Nginx+Tomcat+Memcached负载均衡集群服务搭建

    操作系统:CentOS6.5  本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...

  5. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

  6. Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群

    Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...

  7. Tomcat(五):nginx/httpd + tomcat及负载均衡tomcat

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  8. Linux 下配置 nginx + 两个 tomcat 的负载均衡

    前提:已经安装了 nginx 和两个 tomcat 1.修改 nginx.conf 配置文件    1)在 http{} 节点之间添加 upstream 配置 2)修改 nginx 的监听端口,默认是 ...

  9. 使用 Nginx + Tomcat 搭建负载均衡

    负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...

随机推荐

  1. VMware workstation批量创建虚拟机和自动化安装操作系统(一)

    一. 简述 作为从事IT行业运维工作的Linuxer,大多情况下需要在测试环境中部署业务系统并进行测试,在没有足够的计算存储网络条件下,使用虚拟机进行虚拟集群的创建和使用,是一种不错的学习和实践方式. ...

  2. 实例甜点 Unreal Engine 4迷你教程(4)之用C++实现添加子Widget到VerticalBox中以及ClearChildren

    前置教程: 1. 实例甜点前面的三篇教程: 2. 最好看看笔者前面的一篇关于博文(后记:本来笔者想用C++做DragAndDrop的功能,但是失败了,下面是蓝图实现的方法): http://www.c ...

  3. 结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

    1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用, ...

  4. 轻松学JVM(一)——基本原理

    前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则jvm则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解jvm必要的知识点. 运行流程 我们都 ...

  5. LR的响应时间与使用IE所感受时间不一致的讨论

    在做性能测试时,有时碰到这样一种情况,使用性能工具LR测试出来的响应时间比实际使用IE感受到的时间要长,例如,实际使用IE打开一个系统时只需要1~2秒,而使用LR跑一个用户所得出的结果可能是8秒.10 ...

  6. 【性能测试工具】- Http_Load

    优点:参数少:缺点:url.txt文件要求较高,不如siege方便 http_load是ACME实验室开发的,这个工具以并发方式运行,用以测试web服务器的吞吐量与负载.它不同于其它压力测试工具的是, ...

  7. Oracle的安装问题

    1. 安装时提示:unable to create directory: /u01/oracle/oradata 这个是由于以oracle用户进行安装时,之前没有创建/u01/这个目录,要知道orac ...

  8. FTP服务

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为 "文传协议" 用于Internet上的控制文件的双向传输.同时,它也是一个应用程序( ...

  9. DVWA笔记之三:CSRF

    CSRF与XSS不同,它称为跨站请求伪造,它是利用其他页面的恶意脚本来加载访问或操作存在CSRF的漏洞的可信网站. 1.Low级别 核心代码如下: <?php  if( isset( $_GET ...

  10. php 单引号,双引号,反引号区别

    PHP中单引号,双引号,反引号具有不同的含义,最大的几项区别如下: 一.单引号中,任何变量($var).特殊转义字符(如"\t \r \n"等)不会被解析,因此PHP的解析速度更快 ...