天天看點

tomcat(2)--叢集

mode_jk做tomcat負載均衡

tomcat(2)--叢集

[root@node200 conf.d]# yum install httpd-devel -y

[root@node200 ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:9F:1F:E5  

          inet addr:192.168.112.200  Bcast:192.168.112.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe9f:1fe5/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:238528 errors:0 dropped:0 overruns:0 frame:0

          TX packets:88185 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:246189087 (234.7 MiB)  TX bytes:17095170 (16.3 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:9F:1F:EF  

          inet addr:172.168.254.200  Bcast:172.168.254.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe9f:1fef/64 Scope:Link

          RX packets:176 errors:0 dropped:0 overruns:0 frame:0

          TX packets:20 errors:0 dropped:0 overruns:0 carrier:0

          RX bytes:17742 (17.3 KiB)  TX bytes:2760 (2.6 KiB)

lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:146763 errors:0 dropped:0 overruns:0 frame:0

          TX packets:146763 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:65389907 (62.3 MiB)  TX bytes:65389907 (62.3 MiB)

部署192.168.112.130的tomcat

[root@node2 ~]# ls

anaconda-ks.cfg  install.log.syslog  公共的  視訊  文檔  音樂

install.log      ntpupdate.sh        模闆    圖檔  下載下傳  桌面

You have new mail in /var/spool/mail/root

anaconda-ks.cfg              install.log         jdk-7u67-linux-x64.rpm  公共的  視訊  文檔  音樂

apache-tomcat-8.0.30.tar.gz  install.log.syslog  ntpupdate.sh            模闆    圖檔  下載下傳  桌面

[root@node2 ~]# rpm -ivh jdk-7u67-linux-x64.rpm 

Preparing...                ########################################### [100%]

   1:jdk                    ########################################### [100%]

Unpacking JAR files...

rt.jar...

jsse.jar...

charsets.jar...

tools.jar...

localedata.jar...

jfxrt.jar...

[root@node2 ~]# vim /etc/profile.d/java.sh

  1 export JAVA_HOME=/usr/java/latest

  2 export PATH=$JAVA_HOME/bin:$PATH

[root@node2 ~]# java -version

java version "1.7.0_67"

Java(TM) SE Runtime Environment (build 1.7.0_67-b01)

Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

[root@node2 ~]# tar xf apache-tomcat-8.0.30.tar.gz -C /usr/local/

[root@node2 ~]# cd /usr/local/

[root@node2 local]# ls

apache-tomcat-8.0.30  bin  etc  games  include  lib  lib64  libexec  sbin  share  src

[root@node2 local]# ln -sv apache-tomcat-8.0.30/ tomcat-----------------------注明:在生産環境中都要需要改變檔案屬組或者屬主,這樣就不要需要使用root使用者

"tomcat" -> "apache-tomcat-8.0.30/"

[root@node2 local]# ll

總用量 44

drwxr-xr-x. 9 root root 4096 12月 16 19:18 apache-tomcat-8.0.30

drwxr-xr-x. 2 root root 4096 9月  23 2011 bin

drwxr-xr-x. 2 root root 4096 9月  23 2011 etc

drwxr-xr-x. 2 root root 4096 9月  23 2011 games

drwxr-xr-x. 2 root root 4096 9月  23 2011 include

drwxr-xr-x. 2 root root 4096 9月  23 2011 lib

drwxr-xr-x. 2 root root 4096 9月  23 2011 lib64

drwxr-xr-x. 2 root root 4096 9月  23 2011 libexec

drwxr-xr-x. 2 root root 4096 9月  23 2011 sbin

drwxr-xr-x. 5 root root 4096 8月  25 22:04 share

drwxr-xr-x. 2 root root 4096 9月  23 2011 src

lrwxrwxrwx. 1 root root   21 12月 16 19:18 tomcat -> apache-tomcat-8.0.30/

[root@node2 local]# cd tomcat/webapps/

[root@node2 webapps]# mkdir -pv testapp/{WEB-INF,classes,lib,META-INF}

mkdir: 已建立目錄 "testapp"

mkdir: 已建立目錄 "testapp/WEB-INF"

mkdir: 已建立目錄 "testapp/classes"

mkdir: 已建立目錄 "testapp/lib"

mkdir: 已建立目錄 "testapp/META-INF"

[root@node2 webapps]# vim testapp/index.jsp

  1 <%@ page language="java" %>

  2 <html>

  3   <head><title>TomcatA</title></head>

  4   <body>

  5     <h1><font color="red">TomcatA.zye.com</font></h1>

  6     <table align="centre" border="1">

  7       <tr>

  8         <td>Session ID</td>

  9     <% session.setAttribute("zye.com","zye.com"); %>

 10         <td><%= session.getId() %></td>

 11       </tr>

 12       <tr>

 13         <td>Created on</td>

 14         <td><%= session.getCreationTime() %></td>

 15      </tr>

 16     </table>

 17   </body>

 18 </html>

[root@node2 webapps]# vim /etc/profile.d/tomcat.sh

 1 export CATALINA_HOME=/usr/local/tomcat

  2 export PATH=$CATALINA_HOME/bin:$PATH

[root@node2 webapps]# catalina.sh version

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/java/latest

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Server version: Apache Tomcat/8.0.30

Server built:   Dec 1 2015 22:30:46 UTC

Server number:  8.0.30.0

OS Name:        Linux

OS Version:     2.6.32-573.el6.x86_64

Architecture:   amd64

JVM Version:    1.7.0_67-b01

JVM Vendor:     Oracle Corporation

[root@node2 webapps]# catalina.sh start

Tomcat started.

[root@node2 webapps]# ss -tnl

State       Recv-Q Send-Q                   Local Address:Port                     Peer Address:Port 

LISTEN      0      1                     ::ffff:127.0.0.1:8005                               :::*     

LISTEN      0      100                                 :::8009                               :::*     

LISTEN      0      100                                 :::8080                               :::*     

LISTEN      0      128                                 :::80                                 :::*     

LISTEN      0      128                                 :::22                                 :::*     

LISTEN      0      128                                  *:22                                  *:*     

LISTEN      0      128                          127.0.0.1:631                                 *:*     

LISTEN      0      128                                ::1:631                                :::*     

LISTEN      0      100                                ::1:25                                 :::*     

LISTEN      0      100                          127.0.0.1:25                                  *:*     

LISTEN      0      128                          127.0.0.1:6010                                *:*     

LISTEN      0      128                                ::1:6010                               :::*   

tomcat(2)--叢集
tomcat(2)--叢集

[root@node200 ~]# vim /etc/httpd/conf/httpd.conf 

 292 #DocumentRoot "/var/www/html"

990 NameVirtualHost *:80

[root@node200 ~]# vim /etc/httpd/conf.d/ajp-tomcat.conf

  1 <Virtualhost *:80>

  2         ServerName www.zye.com

  3         ProxyVia On

  4         ProxyRequests Off

  5         ProxyPreserveHost On

  6         <proxy *>

  7                 Order deny,allow

  8                 Allow from all

  9         </Proxy>

 10         ProxyPass /status !

 11         ProxyPass / ajp://192.168.112.130:8009/

 12         ProxyPassReverse / ajp://192.168.112.130:8009/

 13         <Location />

 14                 Order deny,allow

 15                 Allow from all

 16         </Location>

 17 </VirtualHost>

[root@node200 ~]# httpd -t

Syntax OK

[root@node200 ~]# service httpd restart

停止 httpd:                                               [确定]

正在啟動 httpd:                                           [确定]

tomcat(2)--叢集
tomcat(2)--叢集

mode_jk安裝(第三方)

[root@node200 ~]# ls

anaconda-ks.cfg                   install.log.syslog                   公共的

apache-tomcat-8.0.30.tar.gz       JavaCenter_Home_2.0_GBK              模闆

apr-1.4.6                         JavaCenter_Home_2.0_GBK.tar.bz2      視訊

apr-1.4.6.tar.bz2                 jdk-7u67-linux-x64.rpm               說明.htm

apr-util-1.4.1.tar.bz2            mariadb-10.0.10-linux-x86_64.tar.gz  圖檔

connect-web.war                   nginx-1.8.0-1.el6.ngx.x86_64.rpm     文檔

epel-release-latest-6.noarch.rpm  shopxx-a5-Beta.zip                   下載下傳

httpd-2.4.6.tar.bz2               shopxx-v3.0-Beta                     音樂

install.log                       tomcat-connectors-1.2.40-src.tar.gz  桌面

[root@node200 ~]# tar xf tomcat-connectors-1.2.40-src.tar.gz 

[root@node200 ~]# cd tomcat-connectors-1.2.40-src

[root@node200 tomcat-connectors-1.2.40-src]# ls

conf  docs  HOWTO-RELEASE.txt  jkstatus  LICENSE  native  NOTICE  README.txt  support  tools  xdocs

[root@node200 tomcat-connectors-1.2.40-src]# cd native/

[root@node200 native]# ls

aclocal.m4  buildconf.sh  configure     iis          netscape    STATUS.txt

apache-1.3  BUILDING.txt  configure.ac  Makefile.am  README.txt  TODO.txt

apache-2.0  common        docs          Makefile.in  scripts

[root@node200 native]# less README.txt 

[root@node200 native]# less BUILDING.txt 

[root@node200 native]# whereis apxs

apxs: /usr/sbin/apxs /usr/share/man/man8/apxs.8.gz

[root@node200 native]# ./configure --with-apxs=/usr/sbin/apxs

[root@node200 native]# make && make install

[root@node200 native]# cd /usr/lib64/httpd/modules/

[root@node200 modules]# ls

mod_actions.so          mod_authz_user.so  mod_filter.so          mod_proxy_http.so

mod_alias.so            mod_autoindex.so   mod_headers.so         mod_proxy_scgi.so

mod_asis.so             mod_cache.so       mod_ident.so           mod_proxy.so

mod_auth_basic.so       mod_cern_meta.so   mod_include.so         mod_reqtimeout.so

mod_auth_digest.so      mod_cgid.so        mod_info.so            mod_rewrite.so

mod_authn_alias.so      mod_cgi.so         mod_jk.so              mod_setenvif.so

mod_authn_anon.so       mod_dav_fs.so      mod_ldap.so            mod_speling.so

mod_authn_dbd.so        mod_dav.so         mod_log_config.so      mod_status.so

mod_authn_dbm.so        mod_dbd.so         mod_log_forensic.so    mod_substitute.so

mod_authn_default.so    mod_deflate.so     mod_logio.so           mod_suexec.so

mod_authn_file.so       mod_dir.so         mod_mime_magic.so      mod_unique_id.so

mod_authnz_ldap.so      mod_disk_cache.so  mod_mime.so            mod_userdir.so

mod_authz_dbm.so        mod_dnssd.so       mod_negotiation.so     mod_usertrack.so

mod_authz_default.so    mod_dumpio.so      mod_proxy_ajp.so       mod_version.so

mod_authz_groupfile.so  mod_env.so         mod_proxy_balancer.so  mod_vhost_alias.so

mod_authz_host.so       mod_expires.so     mod_proxy_connect.so

mod_authz_owner.so      mod_ext_filter.so  mod_proxy_ftp.so

[root@node200 modules]# mv /etc/httpd/conf.d/

ajp-tomcat.conf       mod_dnssd.conf        welcome.conf          

http-tomcat.conf.bak  README                

[root@node200 modules]# mv /etc/httpd/conf.d/ajp-tomcat.conf{,.bak}

[root@node200 modules]# cd /etc/httpd/conf.d/

[root@node200 conf.d]# ls

ajp-tomcat.conf.bak  http-tomcat.conf.bak  mod_dnssd.conf  README  welcome.conf

[root@node200 conf.d]# vim mod_jk.conf

1 LoadModule jk_module modules/mod_jk.so

[root@node200 ~]# httpd -M | grep jk

[Wed Dec 16 21:28:43 2015] [warn] NameVirtualHost *:80 has no VirtualHosts

 jk_module (shared)

[root@node200 ~]# vim /etc/httpd/conf.d/mod_jk.conf 

  1 LoadModule jk_module modules/mod_jk.so

  2 JkWorkersFile /etc/httpd/conf.d/workers.properties

  3 JkLogFile logs/mod_jk.log

  4 JkLogLevel info

  5 JkMount /status !

  6 JkMount /* TomcatA

  7 JkMount /status StatA

[root@node200 ~]# vim /etc/httpd/conf.d/workers.properties

  1 worker.list=TomcatA,StatA

  2 worker.TomcatA.host=192.168.112.130

  3 worker.TomcatA.port=8009

  4 worker.TomcatA.type=ajp13

  5 worker.StatA.type=status

[Wed Dec 16 22:29:54 2015] [warn] NameVirtualHost *:80 has no VirtualHosts

正在啟動 httpd:[Wed Dec 16 22:34:41 2015] [warn] NameVirtualHost *:80 has no VirtualHosts

                                                           [确定]

tomcat(2)--叢集
tomcat(2)--叢集

[root@node200 ~]# tail /var/log/httpd/mod_jk.log 

[Wed Dec 16 22:41:01.088 2015] [24637:139695854090208] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized

[Wed Dec 16 22:41:01.121 2015] [24638:139695854090208] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized

[root@node200 ~]# 

Tomcat負載均衡

主機112.130;112.140;0.20(112.200)

112.130

[root@node2 ~]# scp /etc/profile.d/{java.sh,tomcat.sh} 192.168.112.140:/etc/profile.d/

The authenticity of host '192.168.112.140 (192.168.112.140)' can't be established.

RSA key fingerprint is 0e:95:8d:de:b9:2f:c4:75:8d:70:af:e2:84:65:7f:86.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.112.140' (RSA) to the list of known hosts.

[email protected]'s password: 

java.sh                                                                                100%   67     0.1KB/s   00:00    

tomcat.sh                                                                              100%   76     0.1KB/s   00:00    

[root@node2 ~]# scp apache-tomcat-8.0.30.tar.gz jdk-7u67-linux-x64.rpm 192.168.112.140:/root

apache-tomcat-8.0.30.tar.gz                                                            100% 8936KB   8.7MB/s   00:00    

jdk-7u67-linux-x64.rpm                                                                 100%  121MB  20.2MB/s   00:06    

112.140

[root@node3 ~]# cd /usr/local/

[root@node3 local]# ls

[root@node3 local]# ln -sv apache-tomcat-8.0.30/ tomcat

apache-tomcat-8.0.30  bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat

[root@node3 local]# cd tomcat/

[root@node3 tomcat]# ls

bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

[root@node3 webapps]# ls

docs  examples  host-manager  manager  ROOT

[root@node3 webapps]# mkdir -pv testapp/{classes,lib,WEB-INF,META-INF}

docs  examples  host-manager  manager  ROOT  testapp

[root@node3 webapps]# ll

總用量 24

drwxr-xr-x. 14 root root 4096 12月 17 21:16 docs

drwxr-xr-x.  6 root root 4096 12月 17 21:16 examples

drwxr-xr-x.  5 root root 4096 12月 17 21:16 host-manager

drwxr-xr-x.  5 root root 4096 12月 17 21:16 manager

drwxr-xr-x.  3 root root 4096 12月 17 21:16 ROOT

drwxr-xr-x.  6 root root 4096 12月 17 21:19 testapp

[root@node3 webapps]# ll testapp/

總用量 16

drwxr-xr-x. 2 root root 4096 12月 17 21:19 classes

drwxr-xr-x. 2 root root 4096 12月 17 21:19 lib

drwxr-xr-x. 2 root root 4096 12月 17 21:19 META-INF

drwxr-xr-x. 2 root root 4096 12月 17 21:19 WEB-INF

[root@node3 webapps]# vim testapp/index.jsp

<%@ page language="java" %>

<html>

  <head><title>TomcatB</title></head>

  <body>

    <h1><font color="blue">TomcatB.zye.com</font></h1>

    <table align="centre" border="1">

      <tr>

        <td>Session ID</td>

    <% session.setAttribute("zye.com","zye.com"); %>

        <td><%= session.getId() %></td>

      </tr>

        <td>Created on</td>

        <td><%= session.getCreationTime() %></td>

     </tr>

    </table>

  </body>

</html>

[root@node3 webapps]# . /etc/profile.d/tomcat.sh 

[root@node3 webapps]# vim /usr/local/tomcat/conf/server.xml

103     <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB">

[root@node3 webapps]# catalina.sh version

[root@node3 webapps]# catalina.sh start

[root@node3 webapps]# ss -tnl

State       Recv-Q Send-Q                            Local Address:Port                              Peer Address:Port 

LISTEN      0      1                              ::ffff:127.0.0.1:8005                                        :::*     

LISTEN      0      100                                          :::8009                                        :::*     

LISTEN      0      128                                          :::36751                                       :::*     

LISTEN      0      128                                          :::111                                         :::*     

LISTEN      0      128                                           *:111                                          *:*     

LISTEN      0      100                                          :::8080                                        :::*     

LISTEN      0      128                                           *:44177                                        *:*     

LISTEN      0      128                                          :::22                                          :::*     

LISTEN      0      128                                           *:22                                           *:*     

LISTEN      0      128                                   127.0.0.1:631                                          *:*     

LISTEN      0      128                                         ::1:631                                         :::*     

LISTEN      0      100                                         ::1:25                                          :::*     

LISTEN      0      100                                   127.0.0.1:25                                           *:*     

LISTEN      0      128                                   127.0.0.1:6010                                         *:*     

LISTEN      0      128                                         ::1:6010                                        :::* 

tomcat(2)--叢集
tomcat(2)--叢集

[root@node2 ~]# vim /usr/local/tomcat/conf/server.xml 

103     <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA">

[root@node2 ~]# catalina.sh stop

[root@node2 ~]# catalina.sh start

[root@node2 ~]# ss -tnl

LISTEN      0      128                                         ::1:6010                                        :::*     

0.20(代理伺服器)

[root@node200 ~]# cd /etc/httpd/conf.d/

  6 JkMount /* TomcatB

~                           

[root@node200 conf.d]# vim workers.properties

  1 worker.list=TomcatB,StatA

  2 worker.TomcatB.host=192.168.112.140

  3 worker.TomcatB.port=8009

  4 worker.TomcatB.type=ajp13

~                                  

[root@node200 conf.d]# service httpd reload

重新載入 httpd:

tomcat(2)--叢集
tomcat(2)--叢集

0.20(負載)

[root@node200 conf.d]# vim mod_jk.conf 

  4 JkLogLevel debug

  6 JkMount /* tcsrvs

  1 worker.list=tcsrvs,StatA

  5 worker.TomcatB.lbfactor=1

  6 worker.TomcatA.host=192.168.112.130

  7 worker.TomcatA.port=8009

  8 worker.TomcatA.type=ajp13

  9 worker.TomcatA.lbfactor=1

 10 worker.StatA.type=status

 11 worker.tcsrvs.type=lb

 12 worker.tcsrvs.balance_workers=TomcatA,TomcatB---------跟之前調用要比對

[root@node200 conf.d]# !ser

service httpd reload

以下基于session綁定

tomcat(2)--叢集

 12 worker.tcsrvs.balance_workers=TomcatA,TomcatB

 13 worker.tcsrvs.sticky_session=0--------基于浏覽器做粘性,一般為1

tomcat(2)--叢集
tomcat(2)--叢集

[root@node200 conf.d]# !tail

tail /var/log/httpd/mod_jk.log ------工作環境中不會開啟debug級别

[Thu Dec 17 22:24:21.114 2015] [25040:139695854090208] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03d0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00  - ................

[Thu Dec 17 22:24:21.114 2015] [25040:139695854090208] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03e0    00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF  - ................

[Thu Dec 17 22:24:21.114 2015] [25040:139695854090208] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03f0    FF FF FF FC FC FC 5F 5F 5F C5 C5 C5 FF FF FF 9F  - ......___.......

[Thu Dec 17 22:24:21.114 2015] [25040:139695854090208] [debug] ws_write::mod_jk.c (552): written 5262 out of 5262

[Thu Dec 17 22:24:21.114 2015] [25040:139695854090208] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): received from ajp13 pos=0 len=2 max=8192

[Thu Dec 17 22:24:21.114 2015] [25040:139695854090208] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 0000    05 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00  - ................

[Thu Dec 17 22:24:21.114 2015] [25040:139695854090208] [debug] ajp_process_callback::jk_ajp_common.c (2054): AJP13 protocol: Reuse is OK

[Thu Dec 17 22:24:21.115 2015] [25040:139695854090208] [debug] ajp_reset_endpoint::jk_ajp_common.c (810): (TomcatA) resetting endpoint with socket 14

[Thu Dec 17 22:24:21.115 2015] [25040:139695854090208] [debug] ajp_done::jk_ajp_common.c (3144): recycling connection pool for worker TomcatA and socket 14

[Thu Dec 17 22:24:21.115 2015] [25040:139695854090208] [debug] jk_handler::mod_jk.c (2790): Service finished with status=200 for worker=tcsrvs

tomcat(2)--叢集

基于mod_porxy做負載均衡----接上

[root@node200 conf.d]# mv mod_jk.conf mod_jk.conf.bak

ajp-tomcat.conf.bak  http-tomcat.conf.bak  mod_dnssd.conf  mod_jk.conf.bak  README  welcome.conf  workers.properties

[root@node200 conf.d]# mv ajp-tomcat.conf.bak mod_proxy.conf

[root@node200 conf.d]# vim mod_proxy.conf 

  1 <proxy balancer://tcsrvs>

  2         BalancerMember http://192.168.112.130:8080 loadfactor=1

  3         BalancerMember http://192.168.112.140:8080 loadfactor=1

  4 

  5 </proxy>

  6 <Virtualhost *:80> 

  7         ServerName www.zye.com

  8         ProxyVia On

  9         ProxyRequests Off 

 10         ProxyPreserveHost On

 11         <proxy *>

 12                 Order deny,allow

 13                 Allow from all

 14         </Proxy>

 15         ProxyPass /status ! 

 16         ProxyPass / balancer://tcsrvs/

 17         ProxyPassReverse / balancer://tcsrvs/

 18         <Location />

 19                 Order deny,allow

 20                 Allow from all

 21         </Location>

 22 </VirtualHost>

[root@node200 conf.d]# httpd -t

[root@node200 conf.d]# service httpd start

tomcat(2)--叢集

根據請求來排程

  4         ProxySet lbmethod=byrequests

  6 <Virtualhost *:80>

  9         ProxyRequests Off

 15         ProxyPass /status !

tomcat(2)--叢集
tomcat(2)--叢集

根據流量做排程

  4         ProxySet lbmethod=bytraffic 

tomcat(2)--叢集
tomcat(2)--叢集

根據主機的繁忙程度

  4         ProxySet lbmethod=bybusyness 

tomcat(2)--叢集
tomcat(2)--叢集

http修改ajp

  2         BalancerMember ajp://192.168.112.130:8009 loadfactor=1

  3         BalancerMember ajp://192.168.112.140:8009 loadfactor=1

tomcat(2)--叢集
tomcat(2)--叢集

會話粘性

  4         ProxySet lbmethod=bybusyness

 16         ProxyPass / balancer://tcsrvs/ stickysession=JSESSIONID

 17         ProxyPassReverse / balancer://tcsrvs/ stickysession=JSESSIONID

session沒有實作

實作狀态檢視

 22         <Location /status>

 23              SetHandler balancer-manager

 24              Proxypass !

 25              Order Deny,Allow

 26              Allow from all

 27        </Location>

 28 </VirtualHost>

tomcat(2)--叢集

多點傳播的會話叢集

tomcat支援标準會話管理器和持久會話管理器

tomcat預設的标準會話管理器

delta會話管理器,如果是對所有主機,放在引擎内部;否則放入host中,對于單個主機

将兩個後端主機(0.130;0.140)tomcat停掉

[root@node2 ~]# 

[root@node3 ~]# catalina.sh stop

0.130

[root@node2 conf]# pwd

/usr/local/tomcat/conf

[root@node2 conf]# cp server.xml{,.bak}

[root@node2 conf]# ls

Catalina         catalina.properties  logging.properties  server.xml.bak    tomcat-users.xsd

catalina.policy  context.xml          server.xml          tomcat-users.xml  web.xml

[root@node2 conf]# vim server.xml

123       <Host name="localhost"  appBase="webapps"

124             unpackWARs="true" autoDeploy="true">

125         <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

126          channelSendOptions="8">

127 

128           <Manager className="org.apache.catalina.ha.session.DeltaManager"

129              expireSessionsOnShutdown="false"

130              notifyListenersOnReplication="true"/>

131 

132           <Channel className="org.apache.catalina.tribes.group.GroupChannel">

133             <Membership className="org.apache.catalina.tribes.membership.McastService"

134                        address="228.103.40.41"

135                         port="45564"

136                        frequency="500"

137                        dropTime="3000"/>

138             <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

139                       address="192.168.112.130"

140                       port="4000"

141                       autoBind="100"

142                       selectorTimeout="5000"

143                       maxThreads="6"/>

144 

145             <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

146                 <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

147             </Sender>

148             <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

149             <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

150           </Channel>

151 

152           <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

153            filter=""/>

154           <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

155 

156           <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

157               tempDir="/tmp/war-temp/"

158               deployDir="/tmp/war-deploy/"

159               watchDir="/tmp/war-listen/"

160               watchEnabled="false"/>

161 

162          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

163      </Cluster>

[root@node2 conf]# catalina.sh configtest

十二月 19, 2015 1:03:15 上午 org.apache.catalina.startup.VersionLoggerListener log

資訊: Server version:        Apache Tomcat/8.0.30

資訊: Server built:          Dec 1 2015 22:30:46 UTC

資訊: Server number:         8.0.30.0

資訊: OS Name:               Linux

資訊: OS Version:            2.6.32-573.el6.x86_64

資訊: Architecture:          amd64

資訊: Java Home:             /usr/java/jdk1.7.0_67/jre

資訊: JVM Version:           1.7.0_67-b01

資訊: JVM Vendor:            Oracle Corporation

資訊: CATALINA_BASE:         /usr/local/apache-tomcat-8.0.30

資訊: CATALINA_HOME:         /usr/local/apache-tomcat-8.0.30

十二月 19, 2015 1:03:16 上午 org.apache.catalina.startup.VersionLoggerListener log

資訊: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

資訊: Command line argument: -Djava.endorsed.dirs=/usr/local/tomcat/endorsed

資訊: Command line argument: -Dcatalina.base=/usr/local/tomcat

資訊: Command line argument: -Dcatalina.home=/usr/local/tomcat

資訊: Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp

十二月 19, 2015 1:03:16 上午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent

資訊: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

十二月 19, 2015 1:03:17 上午 org.apache.coyote.AbstractProtocol init

資訊: Initializing ProtocolHandler ["http-nio-8080"]

十二月 19, 2015 1:03:18 上午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector

資訊: Using a shared selector for servlet write/read

十二月 19, 2015 1:03:18 上午 org.apache.coyote.AbstractProtocol init

資訊: Initializing ProtocolHandler ["ajp-nio-8009"]

十二月 19, 2015 1:03:18 上午 org.apache.catalina.startup.Catalina load

資訊: Initialization processed in 6942 ms

建立支援叢集會話的叢集化管理器

一般在webapp檔案裡的WEB-INF的xml檔案

[root@node2 conf]# cd /usr/local/tomcat/webapps/testapp/WEB-INF/

[root@node2 WEB-INF]# ls

[root@node2 WEB-INF]# cp /usr/local/tomcat/conf/web.xml ./

web.xml

[root@node2 WEB-INF]# vim web.xml 

101   <!--                       listings is enabled? [true]                    -->

 102 

 103 <distributable />

 104     

 105     <servlet>

 106         <servlet-name>default</servlet-name>

 107         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

 108         <init-param>

[root@node2 WEB-INF]# scp web.xml 192.168.112.140:/usr/local/tomcat/webapps/testapp/WEB-INF/

web.xml                                                                                     100%  165KB 164.9KB/s   00:00    

[root@node2 WEB-INF]# 

[root@node2 WEB-INF]# catalina.sh start

[root@node2 tomcat]# tail -f logs/catalina.out

[root@node2 tomcat]# tail -200 logs/catalina.out

19-Dec-2015 01:32:53.595 INFO [Catalina-startStop-1] org.apache.catalina.tribes.membership.McastServiceImpl.setupSocket Setting cluster mcast soTimeout to 500

19-Dec-2015 01:32:53.618 INFO [Catalina-startStop-1] org.apache.catalina.tribes.membership.McastServiceImpl.waitForMembers Sleeping for 1000 milliseconds to establish cluster membership, start level:4

19-Dec-2015 01:32:54.620 INFO [Catalina-startStop-1] org.apache.catalina.tribes.membership.McastServiceImpl.waitForMembers Done sleeping, membership established, start level:4

19-Dec-2015 01:32:54.636 INFO [Catalina-startStop-1] org.apache.catalina.tribes.membership.McastServiceImpl.waitForMembers Sleeping for 1000 milliseconds to establish cluster membership, start level:8

19-Dec-2015 01:32:55.638 INFO [Catalina-startStop-1] org.apache.catalina.tribes.membership.McastServiceImpl.waitForMembers Done sleeping, membership established, start level:8

19-Dec-2015 01:32:55.646 INFO [Catalina-startStop-1] org.apache.catalina.ha.deploy.FarmWarDeployer.start Cluster FarmWarDeployer started.

19-Dec-2015 01:32:55.823 INFO [Catalina-startStop-1] org.apache.catalina.ha.session.JvmRouteBinderValve.startInternal JvmRouteBinderValve started

19-Dec-2015 01:32:59.292 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]

19-Dec-2015 01:32:59.331 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]

19-Dec-2015 01:32:59.336 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 5861 ms

19-Dec-2015 01:35:59.648 INFO [Tribes-Task-Receiver-1] org.apache.catalina.tribes.io.BufferPool.getBufferPool Created a buffer pool with max size:104857600 bytes of type: org.apache.catalina.tribes.io.BufferPool15Impl

19-Dec-2015 01:36:00.537 INFO [Membership-MemberAdded.] org.apache.catalina.ha.tcp.SimpleTcpCluster.memberAdded Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 112, 140}:4000,{192, 168, 112, 140},4000, alive=1149, securePort=-1, UDP Port=-1, id={23 38 105 -109 78 41 64 -63 -79 -106 115 93 27 -33 -123 -19 }, payload={}, command={}, domain={}, ]

0.140

[root@node3 ~]# cd /usr/local/tomcat/conf/

[root@node3 conf]# ls

Catalina         catalina.properties  logging.properties  tomcat-users.xml  web.xml

catalina.policy  context.xml          server.xml          tomcat-users.xsd

[root@node3 conf]# cp server.xml{,.bak}

[root@node3 conf]# vim server.xml

125                  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

126                                  channelSendOptions="8">

128                           <Manager className="org.apache.catalina.ha.session.DeltaManager"

129                                    expireSessionsOnShutdown="false"

130                                    notifyListenersOnReplication="true"/>

132                           <Channel className="org.apache.catalina.tribes.group.GroupChannel">

133                             <Membership className="org.apache.catalina.tribes.membership.McastService"

134                                         address="228.103.40.41"

135                                         port="45564"

136                                         frequency="500"

137                                         dropTime="3000"/>

138                             <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

139                                       address="192.168.112.140"

140                                       port="4000"

141                                       autoBind="100"

142                                       selectorTimeout="5000"

143                                       maxThreads="6"/>

145                             <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

146                               <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

147                             </Sender>

148                             <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

149                             <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interce    ptor"/>

150                           </Channel>

152                           <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

153                                  filter=""/>

154                           <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

156                           <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

157                                     tempDir="/tmp/war-temp/"

158                                     deployDir="/tmp/war-deploy/"

159                                     watchDir="/tmp/war-listen/"

160                                     watchEnabled="false"/>

162                   <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

163                 </Cluster>

[root@node3 conf]# catalina.sh configtest

十二月 19, 2015 1:01:39 上午 org.apache.catalina.startup.VersionLoggerListener log

十二月 19, 2015 1:01:39 上午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent

十二月 19, 2015 1:01:42 上午 org.apache.coyote.AbstractProtocol init

十二月 19, 2015 1:01:42 上午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector

十二月 19, 2015 1:01:42 上午 org.apache.catalina.startup.Catalina load

資訊: Initialization processed in 8859 ms

[root@node3 conf]# tail -f ../logs/catalina.out

19-Dec-2015 01:35:43.136 INFO [localhost-startStop-1] org.apache.catalina.ha.session.DeltaManager.startInternal Starting clustering manager at /testapp

19-Dec-2015 01:35:43.187 INFO [localhost-startStop-1] org.apache.catalina.ha.session.DeltaManager.getAllClusterSessions Manager [/testapp], requesting session state from org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 112, 130}:4000,{192, 168, 112, 130},4000, alive=194469, securePort=-1, UDP Port=-1, id={91 -22 -120 26 40 -91 78 -64 -84 101 -114 112 28 34 81 121 }, payload={}, command={}, domain={}, ]. This operation will timeout if no session state has been received within 60 seconds.

19-Dec-2015 01:35:43.491 INFO [localhost-startStop-1] org.apache.catalina.ha.session.DeltaManager.waitForSendAllSessions Manager [/testapp]; session state send at 12/19/15 1:35 AM received in 354 ms.

19-Dec-2015 01:35:43.550 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/apache-tomcat-8.0.30/webapps/testapp has finished in 702 ms

19-Dec-2015 01:35:43.560 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]

19-Dec-2015 01:35:43.586 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]

19-Dec-2015 01:35:43.587 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 9636 ms