Home / 主机知识 / Tomcat与Apache或Nginx的集群负载均衡设置及Sersync同步应用

Tomcat与Apache或Nginx的集群负载均衡设置及Sersync同步应用

一、系统环境设置:
1、准备三台RedHat linux 5或 CentOS服务器:
(1)负载均衡服务器:Apache安装自带的web发布服务(httpd服务) IP地址:192.168.0.100
(2)Tomcat发布服务器1:安装有两个发布服务tomcat1tomcat2IP地址:192.168.0.101
(3)Tomcat发布服务器2:安装有两个发布服务tomcat3tomcat4IP地址:192.168.0.102
2、统一对外部发布的地址是:http://192.168.0.100(即负载均衡地址)
3、在设定完成IP以后,最好先设置主机名和IP的对应关系:
# vi /etc/hosts修改如下:
—-> 192.168.0.100web.example.comweb
127.0.0.1localhost.localdomainlocalhost
::1localhost6.localdomain6localhost6
二、Tomcat发布器的安装
1、JDK软件最新版下载:http://www.Oracle.com/technetwork/java/javase/downloads/index.html
(1)点击排列的最左边一个大图标的“JDK”进入,
(2)接下来选择服务器的版本(如linux),在“I agree”前面方框中打勾选中,再按“continue”下一步
(3)选择下面一个版本进行下载,如jdk-6u24-linux-i586.bin
(4)下载完成后上传到web服务器上的“/tools”目录下(自己建的目录)
2、JDK软件的安装:
(1)可先查看当前JDK的版本是多少:
# java –version
(2)进入下载目录,授权JDK文件的可执行权限:
# cd /tools/
# chmod a+x jdk-6u24-linux-i586.bin
(3)执行JDK的安装解压缩,完成后按回车结束:
# ./jdk-6u24-linux-i586.bin
(4)把解压出来的目录移动到/usr/local下面
# mv jdk1.6.0_24 /usr/local/
3、配置JAVA的环境变量:
(1)新建环境变量文件java.sh
# cd /etc/profile.d/
# vi java.sh
—> 添加下面的内容:#set java environment
JAVA_HOME=/usr/local/jdk1.6.0_24
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
(2)给java.sh授可执行的权限:
# chmod a+x java.sh
(3)重新登录终端,再次查询java的版本号是否升级了:
# java -version
4、Tomcat软件最新版下载:http://tomcat.apache.org/
(1)先选择Download下面的tomcat版本(如tomcat 7.0)
(2)再点击“Core”下面的“tar.gz”进行下载,如apache-tomcat-7.0.12.tar.gz
(3)下载完成后上传到web服务器上的“/tools”目录下(自己建的目录)
5、Tomcat软件的安装
(1)进入下载目录,进行解压缩:
# cd /tools
# tar zxvfapache-tomcat-7.0.12.tar.gz
(2)复制并重命名目录到/usr/lcoal下面
# ls -l
# cp apache-tomcat-7.0.12 /usr/local/tomcat1(web1服务器)
# cp apache-tomcat-7.0.12 /usr/local/tomcat2(web1服务器)
# cp apache-tomcat-7.0.12 /usr/local/tomcat3(web2服务器)
# cp apache-tomcat-7.0.12 /usr/local/tomcat4(web2服务器)
(3)配置tomcat发布器的端口:
(web1服务器tomcat1)
# cd tomcat1/conf
# vi server.xml(修改如下四个地方:)
—-> 1) <Server port=”8005” shutdown=”SHUTDOWN”>这边的“8005”改为“8001”端口
2) <Connector port=”8080” protocol=”HTTP/1.1″> 这边的“8080”发布端口改为“81”端口
3) <Connector port=”8009” protocol=”AJP/1.3″ redirectPort=”8443″ /> 这边的改为“8011”端口
4) <Engine name=”Catalina” defaultHost=”localhost”> 修改增加为如下:
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”tomcat1″>
(web1服务器tomcat2)
# cd tomcat2/conf/
# vi server.xml(修改如下四个地方:)
—-> 1) <Server port=”8005” shutdown=”SHUTDOWN”>这边的“8005”改为“8002”端口
2) <Connector port=”8080” protocol=”HTTP/1.1″> 这边的“8080”发布端口改为“82”端口
3) <Connector port=”8009” protocol=”AJP/1.3″ redirectPort=”8443″ /> 这边的改为“8012”端口
4) <Engine name=”Catalina” defaultHost=”localhost”> 修改增加为如下:
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”tomcat2″>
(web2服务器tomcat3)
# cd tomcat3/conf/
# vi server.xml(修改如下四个地方:)
—-> 1) <Server port=”8005” shutdown=”SHUTDOWN”>这边的“8005”改为“8003”端口
2) <Connector port=”8080” protocol=”HTTP/1.1″> 这边的“8080”发布端口改为“83”端口
3) <Connector port=”8009” protocol=”AJP/1.3″ redirectPort=”8443″ /> 这边的改为“8013”端口
4) <Engine name=”Catalina” defaultHost=”localhost”> 修改增加为如下:
<Engine nam=”Catalina” defaultHost=”localhost” jvmRoute=”tomcat3″>
(web1服务器tomcat4)
# cd tomcat4/conf/
# vi server.xml(修改如下三个地方:)
—-> 1) <Server port=”8005” shutdown=”SHUTDOWN”>这边的“8005”改为“8004”端口
2) <Connector port=”8080” protocol=”HTTP/1.1″> 这边的“8080”发布端口改为“84”端口
3) <Connector port=”8009” protocol=”AJP/1.3″ redirectPort=”8443″ /> 这边的改为“8014”端口
4) <Engine name=”Catalina” defaultHost=”localhost”> 修改增加为如下:
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”tomcat4″>
(4)在tomcat的server.xml配置参数据中增加session同步复制的设置:
# vi server.xml(增加下列代码,增加到上面4)后面的cluster中去)
<!–
<Cluster className=”org.apache.catalina.ha.tcp.SimpleTcpCluster”/>
–>
(下面的代码是实现session复制功能)
<Cluster className=”org.apache.catalina.ha.tcp.SimpleTcpCluster” channelSendOptions=”6″>
<Manager className=”org.apache.catalina.ha.session.BackupManager”
expireSessionsOnShutdown=”false”
notifyListenersOnReplication=”true”
mapSendOptions=”6″/>
<Channel className=”org.apache.catalina.tribes.group.GroupChannel”>
<Membership className=”org.apache.catalina.tribes.membership.McastService”
address=”228.0.0.4″
port=”45564″
frequency=”500″
dropTime=”3000″/>
<Receiver className=”org.apache.catalina.tribes.transport.nio.NioReceiver”
address=”192.168.100.63″<!—这里填写本机IP地址–>
port=”5000″
selectorTimeout=”100″ />
<Sender className=”org.apache.catalina.tribes.transport.ReplicationTransmitter”>
<Transport className=”org.apache.catalina.tribes.transport.nio.PooledParallelSender”/>
</Sender>
<Interceptor className=”org.apache.catalina.tribes.group.interceptors.TcpFailureDetector”/>
<Interceptor className=”org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor”/>
<Interceptor className=”org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor”/>
</Channel>
<Valve className=”org.apache.catalina.ha.tcp.ReplicationValve”
filter=”.*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;”/>
<Valve className=”org.apache.catalina.ha.session.JvmRouteBinderValve”/>
<Deployer className=”org.apache.catalina.ha.deploy.FarmWarDeployer”
tempDir=”/tmp/war-temp/”
deployDir=”/tmp/war-deploy/”
watchDir=”/tmp/war-listen/”
watchEnabled=”false”/>
<ClusterListener className=”org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener”/>
<ClusterListener className=”org.apache.catalina.ha.session.ClusterSessionListener”/>
</Cluster>
(5)同时需要修改tomcat的web.xml配置参数才能真正实现session同步复制的设置:
# vi web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<distributable /> (在倒数第二行增加这个代码才能实现session同步复制功能)
</web-app>
6、设置Tomcat发布服务开机自启动
(1)复制tomcat启动文件到开机目录下:
# cp tomcat1/bin/catalina.sh/etc/rc.d/init.d/tomcat1
(2)修改上面的tomcat1启动文件:
# cd /etc/rc.d/init.d
# vim tomcat1(在文件的最顶上添加下列几行)
—> #chkconfig:35 85 15
#description:tomcat1 server
CATALINA_HOME=/usr/local/tomcat1
JRE_HOME=/usr/local/jdk1.6.0_24
(3)添加tomcat1到开机启动服务:
# chkconfig–add tomcat1
# chkconfig–list tomcat1
# chkconfigtomcat1on
# service tomcat1 start
(4)其它三个tomcat2 、tomcat3 、tomcat4 也都按上面三步来做
(5)如何查看tomcat的启动过程显示(类似于windows下面的启动DOS窗口显示)
方法一:启动时用catalina.sh来启动,命令 # ./catalina.sh run
方法二:如果用./startup.sh启动的话,查看启动日志 # tail f /usr/local/tomcat4/logs/catalina.out
三、Apache Proxy负载均衡发布器的安装配置:
1、Apache发布器使用系统自带的httpd服务,在安装操作系统的时候先选择好服务器下面的web服务器组件。
2、修改配置web发布服务的参数文件:
# cd /etc/httpd/conf/
# vim httpd.conf (在最底下添加如下内容)
—-> ServerName localhost:80(发布的端口说明)
<VirtualHost *:80>
ServerAdmin admin@china1168.com
ServerName localhost
ServerAlias localhost
<proxy balancer://testcluster>(“testcluster”可自己命名,没什么特别的意义)BalancerMember ajp://192.168.0.101:8011 loadfactor=1 route=tomcat1 (要与tomcat1中的ajp对应)BalancerMember ajp://192.168.0.101:8012 loadfactor=1 route=tomcat2(要与tomcat2中的ajp对应)BalancerMember ajp://192.168.0.102:8013 loadfactor=1 route=tomcat3(要与tomcat3中的ajp对应)BalancerMember ajp://192.168.0.104:8014 loadfactor=1 route=tomcat4(要与tomcat4中的ajp对应)
</proxy>
ProxyRequests Off
ProxyPass /server-status !
ProxyPass /balancer-manager !
ProxyPass / balancer://testcluster/stickysession=JSESSIONID (注意balancer前面有空格
ProxyPassReverse / balancer://testcluster/(注意balancer前面有空格
</VirtualHost>
<Location /server-status>(负载均衡服务器的状态查询,http://192.168.0.100/server-status
SetHandler server-status
</Location>
<Location /balancer-manager> (负载均衡服务器的管理查看,http://192.168.0.100/balancer-manager
SetHandler balancer-manager
</Location>
3、负载均衡集群测试实例:
(1)在tomcat目录下面的webapps文件夹中新建test测试文件:
# mkdir webapps/test
# vi index.jsp(文件内容如下)
?<%@ page contentType=”text/html; charset=UTF-8″ %>
<%@ page import=”java.util.*” %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
request.setCharacterEncoding(“UTF-8”);
out.println(request.getLocalAddr() + ” : ” + request.getLocalPort()+”<br>”);%>
<%
out.println(“<br> ID ” + session.getId()+”<br>”);// 如果有新的 Session 属性设置
String dataName = request.getParameter(“dataName”);
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter(“dataValue”);
session.setAttribute(dataName, dataValue);
}out.print(“<b>Session 列表</b>”);Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + ” = ” + value+”<br>”);
System.out.println( name + ” = ” + value);
}
%>
<form action=”index.jsp” method=”POST”>
名称:<input type=text size=20 name=”dataName”>
<br>
值:<input type=text size=20 name=”dataValue”>
<br>
<input type=submit>
</form>
</body>
</html>
(2)对Apache负载均衡进行测试:
登录测试首页 http://192.168.0.100/test/index.jsp
登录管理界面:http://192.168.0.100/balancer-manager可查看“Elected”的选中状态
登录状态界面:http://192.168.0.100/server-status
同时查看各个tomcat的日志文件,看看上面提交的测试内容是在哪个tomcat中显示出来
# tail -f /usr/local/tomcat1/logs/catalina.out
# tail -f /usr/local/tomcat2/logs/catalina.out
# tail -f /usr/local/tomcat3/logs/catalina.out
# tail -f /usr/local/tomcat4/logs/catalina.out
正常情况下,提交的测试内容会在四个tomcat之间轮循显示,实现负载均衡。
4、设置Apache发布服务开机自启动
# chkconfig httpd on
四、Nginx负载均衡发布器的安装配置:
1、安装前必须要先下载相关联的配套软件包:
(1) pcre套件包下载:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ (一定要先安装)
(2) nginx最新版下载:http://www.nginx.org/en/download.html(一定要安装)
(3) openssl套件包下载:http://www.openssl.org/source/(可选安装)
2、相关联软件的安装
(1)pcre套件的安装,进入下载目录,进行解压缩:
# cd /tools
# tar zxvfpcre-8.12.tar.gz
# cd pcre-8.12
# ./configure(默认是安装在/usr/local/目录下面,也可指定目录加参数 –prefix=/usr/local/)
# make && make install(进行make编译并安装)
(2)openssl套件的安装,进入下载目录,进行解压缩:(可选
# cd /tools
# tar zxvfopenssl-1.0.0d.tar.gz
# cd openssl-1.0.0d
# ./configure(默认是安装在/usr/local/目录下面,也可指定目录加参数 –prefix=/usr/local/)
# make && make install(进行make编译并安装)
3、Nginx软件的安装和配置
(1)nginx套件的安装,进入下载目录,进行解压缩:
# cd /tools
# tar zxvfnginx-1.0.0.tar.gz
# cd nginx-1.0.0
# ./configure(默认是安装在/usr/local/目录下面,也可指定目录加参数 –prefix=/usr/local/)
# make && make install(进行make编译并安装)
(2)测试安装是否成功:
# cd /usr/local/nginx/sbin/
# ./nginx -t(如果提示下面的ok和successful成功的话,说明安装成功了)
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
(3)进行负载均衡站点的配置:
# cd /usr/local/nginx/conf/
# vi nginx.conf(修改增加下面的内容)
#pidlogs/nginx.pid;——- 在第9行左右,去掉前面的“#”注释号
(新增)upstream tomcat {——- 负载均衡站点的名称为tomcat,可以自己取
ip_hash;(可选,根据来源IP方式选择web服务器,省略的话按默认的轮循方式选择web服务器)
server 192.168.0.101:81;——- web服务器的IP地址及tomcat1发布端口
server 192.168.0.101:82;——- web服务器的IP地址及tomcat2发布端口
server 192.168.0.102:83;——- web服务器的IP地址及tomcat3发布端口
server 192.168.0.102:84;——- web服务器的IP地址及tomcat4发布端口
}
server {
listen80;——- 本机负载均衡的发布端口80
server_namelocalhost;——- 本机服务器名称
location / {
roothtml;
indexindex.html index.htm;
(新增) proxy_pass http://tomcat;——- 负载均衡指向的发布服务tomcat
}
注意:“upstream”部分要放在“server { listen80” 这部分的前面,不能放到下面去,不然会出错
proxy_pass”部分要放在localtion这部分的括号里面,且http://后面跟的名称要与上面upstream中一样
(4)启动负载均衡服务:
# cd /usr/local/nginx/sbin/
# ./nginx-t(测试配置有无错误)
# ./nginx(启动服务)
# netstat -tlnp | grep :80(查看nginx端口的进程号)
# kill -9 11274(杀死nginx的主进程,11274是上面查询出来的主进程号,实际环境中不一定一样)
(5)在线修改配置参数(在nginx启动的情况),并让它重新加载,其间nginx不用停止服务
# vi nginx.conf
# kill -HUP`cat /usr/local/nginx/logs/nginx.pid`(注意cat命令两边必须要有撇号,不是单引号)
(6)设置Nginx开机自动启动:
# cd /etc/rc.d/init.d/
# vi nginx
—-> 增加内容#chkconfig:35 80 10
#description:Nginx server
/usr/local/nginx/sbin/nginx
# chmod a+x nginx(授予可执行的权限)
# chkconfig –add nginx
# chkconfig nginx on
五、Sersync文件同步
1、主服务器软件Sersync下载:http://code.google.com/p/sersync/(服务器端)
(下载最新版 sersync2.5_32bit_binary_stable_final.tar.gz )
2、同步服务器分为主服务器目标服务器,主服务器安装下载的套件,目标服务器可采用系统带的rsync套件。
文件的同步主要是从主服务器上复制到目标服务器上,主服务器一般只有一台,目标服务器可以单台或多台。
3、在目标服务器上配置同步参数:
(1)新建同步配置参数
# cd /etc/
# vim rsyncd.conf(注意这边的是“rsyncd.conf”)
uid=root
gid=root
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
[tongbu]
path=/usr/local/tomcat3/webapps(这边设置要跟主服务器进行同步的本机目录
comment = tomcat
ignore errors = yes
read only = no
hosts allow = 192.168.0.101/24(这边设置要同步的主服务器地址或网段
hosts deny = *
(2)开启同步守护进程
# rsync daemon注意这边不是“rsyncd”)
(3)设置开机自动启动同步服务
# chkconfig rsync on注意这边不是“rsyncd”)
4、在主服务器上安装同步套件
# cd tools
# tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz (解压缩)
# mv GNU-Linux-x86 /usr/local/sersync(移动到/usr/local目录下面并改名为sersync)
# cd /usr/local/sersync
# vi confxml.xml(修改下面的内容)
<sersync>
<localpath watch=”/usr/local/tomcat1/webapps“>(要进行同步的本机目录
<remote ip=”192.168.0.102″ name=”tongbu“/>(要同步的目标服务器地址)
<!–<remote ip=”192.168.8.39″ name=”tongbu”/>–> (已注释掉,如果多台去掉两个的注释符)
<!–<remote ip=”192.168.8.40″ name=”tongbu”/>–>
</localpath>
<rsync>
5、开启主服务器文件同步服务
(1)第一次运行完全同步(参数是“r”)
# cd /usr/local/sersync
# ./sersync2 -r (新版本的服务名称是sersync2,以前旧版的名称是sersync)
(2)然后再开启实时同步(参数是“d”)
# ./sersync2 -d
(3)设置开机自动开启同步功能
# vi /etc/rc.local (添加如下命令)
/usr/local/sersync/sersync2 -o /usr/local/sersync/confxml.xml -d
(这边的“-o”参数表示指定哪一个配置文件,“-d”是实时同步的意思)

About admin

Check Also

win2012评估版转正式版

把版本转换成正式版本: 这条命令是转换成数据中心版本: DISM /online /Set-Edition:ServerDatacenter /AcceptEula /ProductKey:XXXXXXXXXXXXX 这条命令是转换成标准版本: DISM /online /Set-Edition:ServerStandard /AcceptEula /ProductKey:XXXXXXXXXXXXX 服务器将重启两次 Windows Server 2012 R2 Standard RETAIL KEY Q8MTR-F2N87-JPQ4C-8CFK9-C7HJM HK69K-3N8Y2-VB2XH-4HYGY-CWDWM W689N-TPP83-V2Q42-683JR-X2C2B

发表回复