-->

Tuesday, June 11, 2013

Apache Server + Tomcat Clustering with session replication

Энэхүү постоороо та бүхэнд Linux үйллийн систем дээр (RHEL server 6.3)Tomcat cluster-г Apache server дээр хэрхэн тохируулах талаар хүргэж байна. Web application-ний ачаалал даах чадварыг нэмэгдүүлэх үүднээс бид Tomcat cluster хийдэг. Tomcat Cluster-г тохируулахад 2 төрлийн бүтцээр тохируулж болдог.
  •  Vertical clustering
  •  Horizontal clustering
Vertical Clustering

Horizontal Clustering

Та бүхэн дээрх зургаас хараад ажиллагааг нь ойлгож байгаа байх.
Энэхүү пост дээр Horizontal Clustering талаар байгаа болно.

Дараах файлуудыг татсан байх шаардлагатай.

  • httpd
  • apr, apr-util
  • pcre
  • tomcat connector
  • tomcat

Татаж авсан файлуудаа бэлдэнэ.
tar -zxvf httpd-2.4.4.tar.gz
tar -zxvf apr-1.4.6.tar.gz
tar -zxvf apr-util-1.5.2.tar.gz
unzip pcre-8.33.zip
tar -zxvf apache-tomcat-7.0.40.tar.gz
tar -zxvf tomcat-connectors-1.2.37-src.tar.gz

Хэрэв apr хуучин хувилбар суусан бол дараах command-аар устгана.
rpm -q apr
yum remove apr

HTTPD суухад дараах package-уудыг суулгасан байх шаардлагатай.
APR
cd apr-1.4.6
./buildconf
./configure
make
make install

APR util
cd apr-util-1.5.2
./configure  --with-apr=/usr/local/apr/
make
make install

PCRE
cd pcre-8.33
./configure --prefix=/usr/local/pcre
make
make install

HTTPD тохируулах command
cd httpd-2.4.4
./configure --prefix=/usr/local/apache --enable-rewrite=shared --enable-proxy=shared --with-pcre=/usr/local/pcre
make
make install

Tomcat connector тохируулах command
cd tomcat-connectors-1.2.37-src
cd native
./configure --with-apxs=/usr/local/apache/bin/apxs
make
make install

Apache server дээрээ worker group нэмж өгнө.
Tomcat Cluster-т ajp port ашигладаг.
cd /usr/local/apache/bin
vi ../conf/workers.properties
worker.list=balancer,stat 

worker.app1.type=ajp13
worker.app1.port=8080
worker.app1.host=172.16.250.250
worker.app1.lbfactor=10

worker.app2.type=ajp13
worker.app2.port=8080
worker.app2.host=172.16.250.249
worker.app2.lbfactor=10

worker.balancer.type=lb  
worker.balancer.balance_workers=app1,app2
  
worker.stat.type=status 

Apache server дээр tomcat connector-ийн тохиргоог http.conf файлд хийж өгнө.
vi ../conf/httpd.conf 
...
LoadModule    jk_module  modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkLogFile     logs/mod_jk.log
JkLogLevel    emerg
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat     "%w %V %T %p %q %r %v %U"

JkMount  /* balancer
JkMount  /status  stat 

Apache server асаах command
./apachectl start

Tomcat manager user нэмж өгнө. Monitor хийх зорилгоор.
Жич: Энэ тохиргоог Tomcat Instance тохируулсан бүх сервер дээр хийж өгнө.
cd apache-tomcat-7.0.40
cd conf
vi tomcat-users.xml
...
<user username="manager" password="manager" roles="manager-gui"/>
...

Session replicate хийхийн тулд multicasting хийж өгнө.
route -p add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

Tomcat дээр тохиргоо хийнэ.
vi conf/server.xml
...
<Engine name="Catalina" defaultHost="localhost"> 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
    <Manager className="org.apache.catalina.ha.session.DeltaManager"
                            expireSessionsOnShutdown="false"
                            notifyListenersOnReplication="true"/>
 
    <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"/>

    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
          <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
    </Sender>
   
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                                       address="auto"
                                       port="4000"
                                       autoBind="100"
                                      selectorTimeout="5000"
                                      maxThreads="6"/>
     
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
  
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    </Channel>
 
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
    <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
...

Tomcat-ийн web.xml дээр дараах мөрийг нэмж өгнө.
cd apache-tomcat-7.0.40/webapps/ROOT/WEB-INF
vi web.xml
...
<distributable/>
...

Tomcat асааж, унтраах command
./startup.sh
./shutdown.sh

За ингээд web server маань ачаалал даах бүрэн чадвартай болно.
Have Fun sys admins... :P

No comments:

Post a Comment