рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╢реБрднрд╛рд░рдВрдн рдХреЗ рдмрд╛рдж рд╕реЗ, рдХреБрдЫ рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо Linux CentOS 5.5 рдкрд░ 4 рд╕рд░реНрд╡рд░, рд╕рд╛рде рд╣реА Apache, Tomcat6, mod_jk, рд╣рд╛рд░реНрдЯрдмреАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
web1, web2 рд╕рд░реНрд╡рд░ - рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрд╛рдЪреЗ рдФрд░ рдЧрд▓рддреА рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред tomcat1, tomcat2 рд╕рд░реНрд╡рд░ - рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЯреЙрдордХреИрдЯ рд╕рд░реНрд╡рд░ред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрдирд╛:рд╣рдордиреЗ рдЕрдкрд╛рдЪреЗ рдФрд░ рд╣рд╛рд░реНрдЯрдмреАрдЯ рд▓рдЧрд╛рдИ[root@web1 opt]$ yum -y install httpd heartbeat
[root@web2 opt]$ yum -y install httpd heartbeat
рдЪреВрдВрдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЯреЙрдордХреИрдЯ рдХрд╛ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рджрд░реНрдкрдг рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ
[root@tomcat1 opt]$ wget apache.vc.ukrtel.net/tomcat/tomcat-7/v7.0.21/bin/apache-tomcat-7.0.21.tar.gz
[root@tomcat1 opt]$ tar xvfz apache-tomcat-7.0.21.tar.gz
[root@tomcat1 opt]$ mkdir tomcat $$ mv apache-tomcat-7.0.21 tomcat
[root@tomcat1 opt]$ rmdir apache-tomcat-7.0.21
[root@tomcat1 opt]$ ln -s /opt/tomcat/bin/catalina.sh /etc/init.d/tomcat
[root@tomcat2 opt]$ wget apache.vc.ukrtel.net/tomcat/tomcat-7/v7.0.21/bin/apache-tomcat-7.0.21.tar.gz
[root@tomcat2 opt]$ tar xvfz apache-tomcat-7.0.21.tar.gz
[root@tomcat2 opt]$ mkdir tomcat $$ move apache-tomcat-7.0.21 tomcat
[root@tomcat2 opt]$ rmdir apache-tomcat-7.0.21
[root@tomcat2 opt]$ ln -s /opt/tomcat/bin/catalina.sh /etc/init.d/tomcat
Apache рдХреЗ рд▓рд┐рдП рд╕реАрдЦреЗрдВ рдХрд┐ web1 рдФрд░ web2 рд╕рд░реНрд╡рд░ рдкрд░ tomcat1 рдФрд░ tomcat2 рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд▓реЛрдб рдХреИрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВ, рдЖрдкрдХреЛ mod_jk рдореЙрдбреНрдпреВрд▓ рдХреЛ Apache рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Apache рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП mod_jk рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ / etc / httpd / рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред
[root@web1 opt]$ wget archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/i386/mod_jk-1.2.31-httpd-2.2.x.so
[root@web1 opt]$ move mod_jk-1.2.31-httpd-2.2.x.so /etc/httpd/modules/mod_jk.so
[root@web2 opt]$ wget archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/i386/mod_jk-1.2.31-httpd-2.2.x.so
[root@web2 opt]$ move mod_jk-1.2.31-httpd-2.2.x.so /etc/httpd/modules/mod_jk.so
рд╣рдо app2 рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВред
рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХрд╛ рд╕реЗрдЯрдЕрдк:[root@web1 opt]$ touch /etc/ha.d/authkeys
[root@web1 opt]$ touch /etc/ha.d/ha.cf
[root@web1 opt]$ touch /etc/ha.d/haresources
рд░реВрдЯ рдпреВрдЬрд░ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ /etc/ha.d/authkeys рдкрд░ рд░реАрдб-рдУрдирд▓реА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧреАред
[root@web1 ha.d]$ chmod 600 /etc/ha.d/authkeys
рдФрд░ рдЗрд╕рдореЗрдВ 2 рд▓рд╛рдЗрди рдЬреЛрдбрд╝ рджреЗрдВред рдлрд╝рд╛рдЗрд▓ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
[root@web1 ha.d]$ nano authkeys
auth 2
2 sha1 your-password
рд╣рдо web2 рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ /etc/ha.d/ha.cfред рдлрд╝рд╛рдЗрд▓ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
[root@web1 ha.d]$ nano ha.cf
logfacility local0
keepalive 2
deadtime 10
initdead 120
bcast eth0
udpport 694
auto_failback on
node web1
node web2
respawn hacluster /usr/lib/heartbeat/ipfail
use_logd yes
logfile /var/log/ha.log
debugfile /var/log/ha-debug.log
рд╣рдо web2 рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ /etc/ha.d/haresources рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдлрд╝рд╛рдЗрд▓ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
[root@web1 ha.d]$ nano haresources
web1 192.168.0.1 httpd # ip .
рд╣рдо web2 рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВред
рд╕рдВрддреБрд▓рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛:рджреЛрдиреЛрдВ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ /etc/httpd/conf/httpd.conf рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
DocumentRoot рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдирд┐рдореНрди рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ
JkMount /*.jsp loadbalancer
JkMount /servlet/* loadbalancer
рджреЛрдиреЛрдВ рд╡реЗрдм рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ / etc / httpd / conf рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдмрдирд╛рдПрдБред
[root@web1 conf]$ touch workers.properties
[root@web2 conf]$ touch workers.properties
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЙрдирдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
worker.list=tomcat1, tomcat2, loadbalancer
worker.tomcat1.port=10010
worker.tomcat1.host=192.168.1.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.tomcat2.port=10020
worker.tomcat2.host=192.168.1.2
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2
рджреЛрдиреЛрдВ Tomcat рдХреЗ /opt/tomcat/conf/server.xml рдореЗрдВ рд╣рдо рдкреЛрд░реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ (рд╕рднреА рдкреЛрд░реНрдЯ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП):
[root@tomcat1 conf]$ nano server.xml
<server port="8005" ...>
<! -- HTTP , .. AJP
<connector port="8080" protocol="HTTP/1.1" ... />
-->
<connector port="10010" protocol="AJP/1.3" ... />
[root@tomcat2 conf]$ nano server.xml
<server port="8006" ...>
<! -- HTTP , .. AJP
<connector port="8080" protocol="HTTP/1.1" ... />
-->
<connector port="10020" protocol="AJP/1.3" ... />
рд╕рддреНрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рдХреЛ рддрдмрд╛рд╣ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдЯреЙрдордХреИрдЯ рд╕рд░реНрд╡рд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЯреЙрдордХреИрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рддреНрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ "TomTat рдХреЗ": "рдЗрдВрдЬрди рдХрд╛ рдирд╛рдо =" рдХреИрдЯрд╛рд▓рд┐рдирд╛ "defaultHost =" localhost ">" рд╡рд░реНрдЧреЛрдВ рдореЗрдВ /opt/tomcat/conf/server.xml рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
[root@tomcat1 conf]$ nano server.xml
<ngine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="tomcat1">
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
<membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastBindAddress="127.0.0.1"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
/>
[root@tomcat2 conf]$ nano server.xml
<ngine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="tomcat2">
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
<membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastBindAddress="127.0.0.1"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4002"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
/>
рдпрд╣ рдЬрд╛рд╡рд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рдлрд▓рддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░реЗрдВрд╕ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрдореА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдирдП рдиреЛрдбреНрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред