Apache是一个强大的Web服务器在处理静态页面、处理大量网络客户请求、支持服务的种类以及可配置方面都有优势,高速并且强壮。但是没有JSP/Servlet的解析能力。整合Apache和Tomcat可以看作是用Tomcat做Apache的jsp/servlet解析插件,将两者优势结合起来。不过Tomcat作为一个Web服务器,本身具备了基本的Web服务功能,在SUN的力推下,将来或许越来越强壮到不需要借助Apache优势的地步。

Tomcat是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

Apache与tomcat的异同:

apache支持静态页,tomcat支持动态的,比如servlet等。

一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。

apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。

apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。

Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)。

Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器;

Apache与tomcat整合的好处

如果客户端请求的是静态页面,则只需要Apache服务器响应请求。

如果客户端请求动态页面,则是Tomcat服务器响应请求。

因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。

一.环境与功能说明

前端:apache配置负载均衡、反向代理(mod_jk模块)

后端:tomcat服务器

前端高可用:通过keepalived实现

系统版本:CentOS 6.4_x86_64(最小化)

apache版本:httpd-2.4.9

arp版本:apr-1.4.6

apr-util版本:apr-util-1.4.1

tomcat版本:apache-tomcat-7.0.53

Jdk版本:jdk-7u40-linux-x64

tomcat-commectors版本:tomcat-connectors-1.2.40

keepalived版本:keepalived-1.2.7-3.el6.x86_64(使用yum安装)

二.安装与配置apache服务器(172.16.10.72、172.16.10.75执行同样的安装与配置,这里只演示一次)

1.安装编译工具和依赖包

  1. yum groupinstall "Development Tools" "Development Libraries" y

2.下载软件包

  1. yum -y install wget
  2. wget http://mirror.esocc.com/apache//httpd/httpd-2.4.9.tar.gz
  3. wget http://mirrors.axint.net/apache//apr/apr-1.4.6.tar.gz
  4. wget http://mirrors.axint.net/apache//apr/apr-util-1.4.1.tar.gz

3.安装apache

3.1.安装apr和apr-tuil

httpd-2.4.9需要较新版本的apr和apr-util,因此需要事先对其进行升级。升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包。以下是采用前者进行安装:

  1. # tar xf apr-1.4..tar.gz
  2. # tar xf apr-util-1.4..tar.gz
  3. # cd apr-1.4.
  4. # ./configure --prefix=/usr/local/apr
  5. # make
  6. # make install
  7. # cd ..
  8.  
  9. # cd apr-util-1.4.
  10. # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  11. # make
  12. # make install
  13. # cd ..

3.2.安装http-2.4.9

  1. # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all
  2. # make && make install

4.配置SysV服务脚本/etc/init.d/httpd

  1. # cp build/rpm/httpd.init /etc/init.d/httpd
  2. #修改如下内容:

  3. # vi /etc/init.d/httpd
  4. httpd=${HTTPD-/usr/local/apache/bin/httpd}
  5. pidfile=${PIDFILE-/usr/local/apache/logs/${prog}.pid}
  6. lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
  7. RETVAL=
  8. # check for 1.3 configuration
  9. check13 () {
  10. CONFFILE=/etc/httpd24/httpd.conf
  11.  
  12. #修改环境变量并把Httpd加入到系统服务

# echo "PATH=/usr/local/apache/bin:$PATH" >> /etc/profile.d/http.sh
  # . /etc/profile.d/http.sh
  # ln -s /usr/local/apache/include/ /usr/include/httpd
  # chkconfig --add httpd

5.安装tomcat-connectors

  1. # wget http://apache.fayea.com/apache-mirror/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.40-src.tar.gz
  2. # tar xf tomcat-connectors-1.2.-src.tar.gz
  3. # cd tomcat-connectors-1.2.-src/native/
  4. # ./configure --with-apxs=/usr/local/apache/bin/apxs
  5. # make
  6. # make install

安装完成后会生成如下文件

  1. # ls /usr/local/apache/modules/|grep 'mod_jk'
  2. mod_jk.so

启动httpd服务

  1. # service httpd start

执行./configure --with-apxs=/usr/local/apache/bin/apxs时可能会遇到以下报错:

need to check for Perl first, apxs depends on it...
checking for perl... /usr/bin/perl
could not find /usr/local/apache/bin/apxs
configure: error: You must specify a valid --with-apxs path

解法办法:

vi /usr/local/apache/bin/apxs
把第一行改成:#!/usr/bin/perl -w

另外检查系统中是否已经安装过perl,如果没有安装,用yum安装即可。

三.安装与配置tomcat服务器(172.16.10.61、172.16.10.62执行同样的安装,这里只演示一次)

1.安装JDK

下载地址:http://download.oracle.com/

  1. # rpm -ivh jdk-7u40-linux-x64.rpm
  2. # vim /etc/profile.d/java.sh
  3. export JAVA_HOME=/usr/java/latest
  4. export PATH=$JAVA_HOME/bin:$PATH
  5. # . /etc/profile.d/java.sh
  6. # java -version
  7. java version "1.7.0_40"
  8. Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
  9. Java HotSpot(TM) -Bit Server VM (build 24.0-b56, mixed mode)

2.安装Tomcat

下载地址:http://apache.fayea.com/apache-mirror/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz

  1. # tar xf apache-tomcat-7.0..tar.gz -C /usr/local/
  2. # cd /usr/local/
  3. # ln -s apache-tomcat-7.0. tomcat
  4. # vim /etc/profile.d/tomcat.sh
  5. export CATALINA_HOME=/usr/local/tomcat
  6. export PATH=$CATALINA_HOME/bin:$PATH
  7. # . /etc/profile.d/tomcat.sh
  8. # /usr/local/tomcat/bin/catalina.sh version
  9. Using CATALINA_BASE: /usr/local/tomcat
  10. Using CATALINA_HOME: /usr/local/tomcat
  11. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  12. Using JRE_HOME: /usr/java/latest
  13. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  14. Server version: Apache Tomcat/7.0.
  15. Server built: Mar ::
  16. Server number: 7.0.53.0
  17. OS Name: Linux
  18. OS Version: 2.6.-.el6.x86_64
  19. Architecture: amd64
  20. JVM Version: 1.7.0_40-b43
  21. JVM Vendor: Oracle Corporation

3.启动Tomcat服务并访问测试,默认访问端口为8080:

  1. # /usr/local/tomcat/bin/catalina.sh start
  2. Using CATALINA_BASE: /usr/local/tomcat
  3. Using CATALINA_HOME: /usr/local/tomcat
  4. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  5. Using JRE_HOME: /usr/java/latest
  6. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  7. Tomcat started.
  8. # ss -antpl | grep
  9. ::: :::* users:(("java",,))

4.开启Tomcat管理及状态页面

  1. # vim /usr/local/tomcat/conf/tomcat-users.xml(在</tomcat-users>标签上一行添加如下两行)
  2. <role rolename="manager-gui"/>
  3. <user username="tomcat" password="tomcat" roles="manager-gui"/> #后台管理页面登录名及密码均为tomcat
  4. # /usr/local/tomcat/bin/catalina.sh stop
  5. # /usr/local/tomcat/bin/catalina.sh start

5.访问Tomcat后台管理

四.配置Apache使用mod_jk模块实现代理及负载均衡

1.编辑Apache主配置文件,实现代理功能(172.16.10.72)

  1. echo "Include /etc/httpd24/extra/mod_jk.conf" >> /etc/httpd24/httpd.conf #将此指令添加到文件末尾即可

2.创建mod_jk.conf及workers.properties文件

  1. # cat >>/etc/httpd24/extra/mod_jk.conf <<EOF
  2. LoadModule jk_module modules/mod_jk.so
  3. JkWorkersFile /etc/httpd24/extra/workers.properties
  4. JkLogFile logs/mod_jk.log
  5. JkLogLevel debug
  6. JkMount /* TomcatA
  7. JkMount /status/ stat1
  8. EOF
  9.  
  10. # cat >>/etc/httpd24/extra/workers.properties <<EOF
  11. worker.list=TomcatA,stat1
  12. worker.TomcatA.port=8009
  13. worker.TomcatA.host=172.16.10.61
  14. worker.TomcatA.type=ajp13
  15. worker.TomcatA.lbfactor=1
  16. worker.stat1.type = status
  17. EOF

3.编辑httpd.conf修改ServerName并重启httpd服务

  1. #vi /etc/httpd24/httpd.conf
    ServerName 172.16.10.72:80
    # service httpd restart

4.修改tomcat服务器(172.16.10.61),添加测试页面

  1. # cd /usr/local/tomcat/conf/
  2. # cp server.xml server.xml.bak
  3. # vi server.xml
  4. <Engine name="Catalina" defaultHost="172.16.10.72">
  5. <Host name="172.16.10.72" appBase="/web/eivll0m"
  6. unpackWARs="true" autoDeploy="true">
  7. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  8. prefix="eivll0m_access_log." suffix=".txt"
  9. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  10. <Context path="" docBase="/web/eivll0m" />
  11. </Host>

创建网站存放目录并创建测试页

  1. # mkdir -p /web/eivll0m
  2. # vi /web/eivll0m/index.jsp
  3. <%@ page language="java" %>
  4. <html>
  5. <head><title>TomcatA</title></head>
  6. <body>
  7. <h1><font color="red">TomcatA </font></h1>
  8. <table align="centre" border="">
  9. <tr>
  10. <td>Session ID</td>
  11. <% session.setAttribute("abc","abc"); %>
  12. <td><%= session.getId() %></td>
  13. </tr>
  14. <tr>
  15. <td>Created on</td>
  16. <td><%= session.getCreationTime() %></td>
  17. </tr>
  18. </table>
  19. </body>
  20. </html>

重启tomcat服务并查看是否启动成功

  1. # catalina.sh stop
  2. # catalina.sh configtest
  3. # catalina.sh start
  4. # ss -antpl | grep java
  5. ::ffff:127.0.0.1: :::* users:(("java",,))
  6. ::: :::* users:(("java",,))
  7. ::: :::* users:(("java",,))

5.访问Apache主机(172.16.10.72),验证是否代理成功

6.修改Apache配置文件(mod_jk.conf、workers.properties),实现负载均衡

  1. # cat >>/etc/httpd24/extra/mod_jk.conf <<EOF
  2. LoadModule jk_module modules/mod_jk.so
  3. JkWorkersFile /etc/httpd24/extra/workers.properties
  4. JkLogFile logs/mod_jk.log
  5. JkLogLevel debug
  6. JkMount /* lbcluster
  7. JkMount /status/ stat1
  8. EOF

  9. # cat >>/etc/httpd/extra/workers.properties <<EOF
  10. worker.list=lbcluster,stat1
  11. worker.TomcatA.port=8009
  12. worker.TomcatA.host=172.16.10.61
  13. worker.TomcatA.type=ajp13
  14. worker.TomcatA.lbfactor=1
  15. worker.TomcatB.port = 8009
  16. worker.TomcatB.host=172.16.10.62
  17. worker.TomcatB.type = ajp13
  18. worker.TomcatB.lbfactor = 1
  19. worker.lbcluster.type = lb
  20. worker.lbcluster.sticky_session = 0 #取值为{1|0}1将用户session与后端服务器绑定,0为不绑定,如果支持session复制或session共享可以设置为0
  21. worker.lbcluster.balance_workers = TomcatA, TomcatB
  22. worker.stat1.type = status
  23. EOF

7.修改tomcat服务器(172.16.10.62),添加测试页面

  1. # cd /usr/local/tomcat/conf/
  2. # cp server.xml server.xml.bak
  3. # vi server.xml
  4. <Engine name="Catalina" defaultHost="172.16.10.72">
  5. <Host name="172.16.10.72" appBase="/web/eivll0m"
  6. unpackWARs="true" autoDeploy="true">
  7. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  8. prefix="eivll0m_access_log." suffix=".txt"
  9. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  10. <Context path="" docBase="/web/eivll0m" />
  11. </Host>

创建网站存放目录并创建测试页

  1. # mkdir -p /web/eivll0m
  2. # vi /web/eivll0m/index.jsp
  3. <%@ page language="java" %>
  4. <html>
  5. <head><title>TomcatB</title></head>
  6. <body>
  7. <h1><font color="blue">TomcatB </font></h1>
  8. <table align="centre" border="">
  9. <tr>
  10. <td>Session ID</td>
  11. <% session.setAttribute("abc","abc"); %>
  12. <td><%= session.getId() %></td>
  13. </tr>
  14. <tr>
  15. <td>Created on</td>
  16. <td><%= session.getCreationTime() %></td>
  17. </tr>
  18. </table>
  19. </body>
  20. </html>

重启tomcat服务并查看是否启动成功

  1. # catalina.sh stop
  2. # catalina.sh configtest
  3. # catalina.sh start
  4. # ss -antpl | grep java
  5. ::ffff:127.0.0.1: :::* users:(("java",,))
  6. ::: :::* users:(("java",,))
  7. ::: :::* users:(("java",,))

8.访问Apache服务器(172.16.10.72),测试是否实现负载均衡(如下表示测试成功)

五.安装并配置Keepalived实现高可用

1.在apache服务器(172.16.10.72、172.16.10.75)安装keepalived

  1. yum -y install keepalived

2.配置Keepalived(172.16.10.72)

  1. # vi /etc/keepalived/keepalived.conf
  2. ! Configuration File for keepalived
  3.  
  4. global_defs {
  5. notification_email {
  6. acassen@firewall.loc
  7. failover@firewall.loc
  8. sysadmin@firewall.loc
  9. }
  10. notification_email_from admin@eivll0m.com
  11. smtp_server 172.16.10.0
  12. smtp_connect_timeout
  13. router_id LVS_DEVEL
  14. }
  15.  
  16. vrrp_script chk_httpd {
  17. script "killall -0 httpd"
  18. interval
  19. weight -
  20. }
  21.  
  22. vrrp_instance httpd_1 {
  23. state MASTER
  24. interface eth0
  25. virtual_router_id
  26. priority 100 #定义优先级
  27. advert_int
  28. authentication {
  29. auth_type PASS
  30. auth_pass
  31. }
  32. virtual_ipaddress {
  33. 172.16.10.77 #vip
  34. }
  35. track_script {
  36. chk_httpd
  37. }
  38. }
  39.  
  40. # service keepalived start #启动keepalived服务
    # chkconfig keepalived on

3.配置Keepalived(172.16.10.75)

  1. # vi /etc/keepalived/keepalived.conf
  2.  
  3. ! Configuration File for keepalived
  4.  
  5. global_defs {
  6. notification_email {
  7. acassen@firewall.loc
  8. failover@firewall.loc
  9. sysadmin@firewall.loc
  10. }
  11. notification_email_from admin@eivll0m.com
  12. smtp_server 172.17.10.0
  13. smtp_connect_timeout
  14. router_id LVS_DEVEL
  15. }
  16.  
  17. vrrp_script chk_httpd {
  18. script "killall -0 httpd"
  19. interval
  20. weight -
  21. }
  22.  
  23. vrrp_instance httpd_1 {
  24. state BACKUP
  25. interface eth0
  26. virtual_router_id
  27. priority 99 #定义优先级
  28. advert_int
  29. authentication {
  30. auth_type PASS
  31. auth_pass
  32. }
  33. virtual_ipaddress {
  34. 172.16.10.77 #vip
  35. }
  36. track_script {
  37. chk_httpd
  38. }
  39. }
  1. # service keepalived start
    # chkconfig keepalived on

4.编辑httpd.conf(172.16.10.72),并拷贝至172.16.10.75

  1. # vi /etc/httpd24/httpd.conf
  2. ServerName www.eivll0m.com:
  3. # service httpd restart
  4. # cd /etc/httpd24/
  5. # scp httpd.conf 172.16.10.75:/etc/httpd24/
  6. # cd extra/
  7. # scp mod_jk.conf workers.properties 172.16.10.75:/etc/httpd24/extra/
    # service httpd restart #两台apache服务器分别执行

5.编辑tomcat服务器(172.17.10.61和172.16.10.62)的server.xml

  1. # vi server.xml
  2. <Engine name="Catalina" defaultHost="www.eivll0m.com">
  3. <Host name="www.eivll0m.com" appBase="/web/eivll0m"
  4. unpackWARs="true" autoDeploy="true">
  5. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  6. prefix="eivll0m_access_log." suffix=".txt"
  7. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  8. <Context path="" docBase="/web/eivll0m" />
  9. </Host>
    # catalina.sh stop
    # catalina.sh start

5.通过www.eivll0m.com(172.16.10.77)进行访问测试

注意:测试时关闭所有服务器iptables,如果没有做DNS解析,可在测试机上修改hosts文件来实现。

6.模拟一台apache故障,验证keepalived是否可以成功转移服务

  1. # ip addr show eth0 #172.16..72上执行
  2. : eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  3. link/ether :0c::e9:b8: brd ff:ff:ff:ff:ff:ff
  4. inet 172.16.10.72/ brd 172.16.10.255 scope global eth0
  5. inet 172.16.10.77/ scope global eth0
  6. inet6 fe80::20c:29ff:fee9:b852/ scope link tentative dadfailed
  7. valid_lft forever preferred_lft forever
  8.  
  9. # ip addr show eth0 #172.16..75上执行
  10. : eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  11. link/ether :0c::c8:1a: brd ff:ff:ff:ff:ff:ff
  12. inet 172.16.10.75/ brd 172.16.10.255 scope global eth0
  13. inet 192.168.200.16/ scope global eth0
  14. inet 192.168.200.17/ scope global eth0
  15. inet 192.168.200.18/ scope global eth0
  16. inet6 fe80::20c:29ff:fec8:1a08/ scope link tentative dadfailed
  17. valid_lft forever preferred_lft forever
  18.  
  19. # service httpd stop #停止172.16.10.72上的httpd服务
  20. # ip addr show eth0 #172.16..72上执行
  21. : eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  22. link/ether :0c::e9:b8: brd ff:ff:ff:ff:ff:ff
  23. inet 172.16.10.72/ brd 172.16.10.255 scope global eth0
  24. inet6 fe80::20c:29ff:fee9:b852/ scope link tentative dadfailed
  25. valid_lft forever preferred_lft forever
  26.  
  27. # ip addr show eth0 #172.16.10.75上执行
  28. : eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  29. link/ether :0c::c8:1a: brd ff:ff:ff:ff:ff:ff
  30. inet 172.16.10.75/ brd 172.16.10.255 scope global eth0
  31. inet 192.168.200.16/ scope global eth0
  32. inet 192.168.200.17/ scope global eth0
  33. inet 192.168.200.18/ scope global eth0
  34. inet 172.16.10.77/ scope global eth0 #vip已经成功转移过来
  35. inet6 fe80::20c:29ff:fec8:1a08/ scope link tentative dadfailed
  36. valid_lft forever preferred_lft forever

通过上面的步骤我们可以看到,在172.16.10.72上停止apache服务,keepalived会检测到,另一台keepalived服务器会接管vip,web服务不会中断,从而实现了高可用性。

7.配置tomcat实现session共享

7.1.配置172.16.10.61这台tomcat服务器

  1. # vi /usr/local/tomcat/conf/server.xml #在<Engine>标签内(对所有主机生效)添加或修改如下内容,另外也可以添加在<Host>标签内,对当前主机生效。并去掉此段前后注释
  2. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
  3. channelSendOptions="">
  4. <Manager className="org.apache.catalina.ha.session.DeltaManager"
  5. expireSessionsOnShutdown="false"
  6. notifyListenersOnReplication="true"/>
  7. <Channel className="org.apache.catalina.tribes.group.GroupChannel">
  8. <Membership className="org.apache.catalina.tribes.membership.McastService"
  9. address="224.0.0.1" #组播地址
  10. port=""
  11. frequency=""
  12. dropTime=""/>
  13. <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
  14. address="172.16.10.61"
  15. port=""
  16. autoBind=""
  17. selectorTimeout=""
  18. maxThreads=""/>
  19. <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
  20. <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
  21. </Sender>
  22. <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
  23. <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
  24. </Channel>
  25. <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
  26. filter=""/>
  27. <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
  28. <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
  29. tempDir="/tmp/war-temp/"
  30. deployDir="/tmp/war-deploy/"
  31. watchDir="/tmp/war-listen/"
  32. watchEnabled="false"/>
  33. <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
  34. <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
  35. </Cluster>
  1. # mkdir /web/eivll0m/WEB-INF
  2. # cp /usr/local/tomcat/conf/web.xml /web/eivll0m/WEB-INF/
  3. # vim /web/eivll0m/WEB-INF/web.xml
  4. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  7. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  8. version="3.0">
  9. <distributable/> #添加此行内容
  1. # catalina.sh stop
  2. # catalina.sh start
  3. # ss -tanlp | grep java
  4. ::ffff:127.0.0.1: :::* users:(("java",,))
  5. ::: :::* users:(("java",,))
  6. ::: :::* users:(("java",,))
  7. ::ffff:172.16.10.61: :::* users:(("java",,))

7.2.配置172.16.10.62这台tomcat服务器

  1. # scp /usr/local/tomcat/conf/server.xml 172.16.10.62:/usr/local/tomcat/conf/
    # scp -r /web/eivll0m/WEB-INF 172.16.10.62:/web/eivll0m/
  1. # vi /usr/local/tomcat/conf/server.xml
  2. address="172.16.10.62" #更改IP
  3. port=""
  4. autoBind=""
  5. selectorTimeout=""
  6. maxThreads=""/>
  7. # catalina.sh stop
  8. # catalina.sh start
  9. # ss -antpl|grep java
  10. ::ffff:127.0.0.1: :::* users:(("java",,))
  11. ::: :::* users:(("java",,))
  12. ::: :::* users:(("java",,))
  13. ::ffff:172.16.10.62: :::* users:(("java",,))

注:因为tomcat的session同步功能需要用到组播,windows默认情况下是开通组播服务的,但是linux默认情况下并没有开通,可以通过指令打开route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0,如果需要服务器启动时即开通组播需在/etc/sysconfig/static-routes文件内加入eht0 net 224.0.0.0 netmask 240.0.0.0。

7.3.验证session共享是否实现

通过以上截图可以看出session共享已经实现。

整合apache+tomcat+keepalived实现高可用tomcat集群的更多相关文章

  1. Keepalived之高可用LVS集群

    前文我们聊了下keepalived的邮件通知相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13645163.html:今天我们来说说keepalive ...

  2. Keepalived+Nginx+Tomcat 实现高可用Web集群

    https://www.jianshu.com/p/bc34f9101c5e Keepalived+Nginx+Tomcat 实现高可用Web集群 0.3912018.01.08 20:28:59字数 ...

  3. 搭建高可用kubernetes集群(keepalived+haproxy)

    序 由于单master节点的kubernetes集群,存在master节点异常之后无法继续使用的缺陷.本文参考网管流程搭建一套多master节点负载均衡的kubernetes集群.官网给出了两种拓扑结 ...

  4. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

  5. 构建高可用ZooKeeper集群

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...

  6. 构建高可用ZooKeeper集群(转载)

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...

  7. corosync+pacemaker实现高可用(HA)集群

    corosync+pacemaker实现高可用(HA)集群(一)     重要概念 在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云 资源.服务与 ...

  8. 高可用Kubernetes集群-16. ansible快速部署

    说明 本文档指导采用二进制包的方式快速部署高可用kubernetes集群. 脚本托管:k8s-ansible(持续更新) 参考:高可用kubernetes集群 组件版本 组件 版本 备注 centos ...

  9. Redis之高可用、集群、云平台搭建

    原文:Redis之高可用.集群.云平台搭建 文章大纲 一.基础知识学习二.Redis常见的几种架构及优缺点总结三.Redis之Redis Sentinel(哨兵)实战四.Redis之Redis Clu ...

随机推荐

  1. Java设计模式05:常用设计模式之原型模式(创建型模式)

    1. Java之原型模式(Prototype Pattern)     原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象. ...

  2. SQLCLR

    hsrzyn SQLCLR   什么是SQLCLR SQL CLR (SQL Common Language Runtime) 是自 SQL Server 2005 才出现的新功能,它将.NET Fr ...

  3. [转]C#中yield用法

    yield 关键字向编译器指示它所在的方法是迭代器块.编译器生成一个类来实现迭代器块中表示的行为.在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值.这是一个返回值, ...

  4. noip 2003 传染病控制(历史遗留问题2333)

    /*codevs 1091 搜索 几个月之前写的70分 今天又写了一遍 并且找到了错误 */ #include<cstdio> #include<vector> #define ...

  5. Android开发中用友盟做分享的一些坑

    仅限于用5.1.4版本的 按照友盟分享的API在自己的代码中修改: 1.微信分享需要打包APK文件,数字签名与微信开发申请的要一致 2.此name中属性不能修改 value为友盟的申请的appkey ...

  6. powerdesigner设置唯一键,但不是主键的方式

    [转载]http://blog.csdn.net/cnham/article/details/6676650 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的 ...

  7. css media

    /* media */ /* 横屏 */ @media screen and (orientation:landscape){ } /* 竖屏 */ @media screen and (orient ...

  8. Java-生成验证码图片(自定义内容,尺寸,路径)

    1 package cn.gp.tools; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; imp ...

  9. Composite 模式的实现

    实现要点: 1.组合模式采用树形结构来实现普遍存在的对象容器,从而将“一对多”的关系转化“一对一”的关系,使得客户代码可以一致地处理对象和对象容器,无需关心处理的是单个的对象,还是组合的对象容器. 2 ...

  10. Codeforces 543B Destroying Roads(最短路)

    题意: 给定一个n个点(n<=3000)所有边长为1的图,求最多可以删掉多少条边后,图满足s1到t1的距离小于l1,s2到t2的距离小于l2. Solution: 首先可以分两种情况讨论: 1: ...