SlideShare a Scribd company logo
1 of 8
Download to read offline
Ubuntu 10.04 LTS 上配置简单双机热备方案
——Tomcat6.0 + MySQL5.1 的 IP 失效转移
4b3tt0r_at_gmail.com
在某些对于可用性要求较高的 Web 应用场合,一般都是用双机热备的方案进行实现的。
这样,当一台服务器由于某种原因发生故障时,在很短的时间内,应用可以无缝的切换到另
一台服务器上,从而避免应用的中断。
本文所描述的方法和步骤,是一种简单的已 IP 可用性为核心的双机热备方案。
1、环境
OS:Ubuntu Server 10.04 LTS
硬件:服务器两台
IP/机器名:192.168.0.11/ubuntu1、192.168.0.22/ubuntu2
2、软件安装
安装 MySQL 5.1
sudo apt-get install mysql-server
安装 Tomcat 6.0
sudo apt-get install tomcat6
安装 Heartbeat2 和 Pacemaker
sudo apt-get install heartbeat pacemaker
3、配置过程
3.1、MySQL 的 Master-Master Replication
MySQL 的 Master-Master Replication 方式,其实就是互相的 Master-Slave Replication 方
式。这种方式下,在确保仅对其中一个节点做写操作的前提下,可以很好的保证数据同步
(一般是毫秒级的同步时间),甚至可以在读写分离模式下大大提高总体性能。
MySQL 的 Master-Slave Replication 请参阅拙作《Ubuntu 上 MySQL 的 Replication 配置》,
其中详细描述了这种方案的操作步骤。就下来要做的,就是把 Master 和 Slave 的角色互换一
下,再次配置 Master-Slave Replication,就成了 Master-Master Replication 了。
3.2、Tomcat 的 Session 同步
为了在 IP 失效转移的时候实现用户无感知,就必须让用户的 Session 能够在主机和备机
之间同步。这样,用户登录主机后,即使主机宕机,也不会导致要求用户必须在备机上重新
登录一遍。
我们要操作的 Tomcat 的配置文件是/etc/tomcat/server.xml。
首先将端口改到 80 上(这是根据具体项目所设计的服务端口而定的,Web 应用一般默
认为 80 端口,而 ubuntu 在安装的时候会配置在 8080 端口):
将
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
URIEncoding="UTF-8" redirectPort="8443" />
改为
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"
URIEncoding="UTF-8" redirectPort="8443" />
然后配置 Session 同步参数:
将
<Engine name="Catalina" defaultHost="localhost">
改为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="ubuntu1">
注意这里的 ubuntu1,是本服务器上的 Tomcat 节点名称,不同的服务器上不能相同,不
妨以机器名命名之。
再将
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
-->
改为
<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"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto" port="4001" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
<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"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
<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>
此处 228.0.0.4 为组播地址,不应与当前已存在的组播地址相同。
修改完毕重启 Tomcat 服务,Tomcat 的 Session 同步就应该正常工作了。这一点,我们将
在后文中予以验证。
到这里,您可能会发现 Tomcat 的 80 端口监听失败了,那是因为您的 Tomcat 绑定了
1023 以下的端口,而 ubuntu 默认情况下要求这些端口必须由 authbind 来绑定。解决的办法
很简单,编辑/etc/default/tomcat6 文件,将
#AUTHBIND=no
改为
AUTHBIND=yes
然后重启 Tomcat 即可。
sudo /etc/init.d/tomcat6 restart
3.3、Heartbeat 基本配置
上文中的操作仅仅构建了具备双机热备业务能力的应用层配置,而真正要将双机热备特
性实现出来,则需要 Heartbeat 出场了。
Heartbeat 是一款开源的 Linux 系统高可用性(HA)解决方案及实现,它可以让两台或
以上 Linux 主机之间可以互相意识到彼此的存活状况,并在适当的条件下对主机的服务、资
源、特性、进程等进行自动的操作,从而达到失效转移的目的。
既然命名为 Heartbeat “ ”,其工作机制当然依赖于主机之间的 心跳 来实现。Heartbeat 支持
的心跳接口包括以太网、串口等多种方式。方便起见,我们在局域网里选用以太网方式,无
须增加额外的硬件和网络配置。
首先要配置的是 Heartbeat 认证信息,以便要进行双机热备的主机之间可以在互相可信
的状态下进行通信。创建文本文件/etc/ha.d/authkeys,并编辑其内容如下:
auth 1
1 sha1 HA_SHARED_KEY
其中 sha1 是将要使用的加密算法,也可以考虑使用 md5,HA_SHARED_KEY 是共享密
码。这个文件应该在两台主机上都存在,且内容完全相同。为了保障系统的安全性,应该将
这个文件的访问权限设置为仅 root 访问:
sudo chown root:root /etc/ha.d/authkeys
sudo chmod 600 /etc/ha.d/authkeys
接下来,开始配置 Heartbeat 的心跳配置文件,创建文件/etc/ha.d/ha.cf,编辑其内容:
bcast eth0
warntime 3
deadtime 6
initdead 60
keepalive 1
node ubuntu1
node ubuntu2
crm respawn
其中 eth0 表示用于心跳的以太网接口,这里直接使用主机对外提供服务的设备即可
(如果有必要,可以使用专门的以太网接口作为心跳设备,而不使用提供业务服务的设备);
ubuntu1 和 ubuntu2 是两台主机的机器名,也可以用域名(这里要求主机之间可以通过机器
名或域名解析到彼此的 IP 地址(分别为 192.168.0.11 和 192.168.0.22),如果无法访问域名
服务,则应在/etc/hosts 文件中予以指定);其它参数请查阅相关文档。
完成以上工作,重启 Heartbeat 服务即可。
sudo /etc/init.d/tomcat6 restart
3.4、用 Pacemaker 设置虚拟 IP
接下来的工作是利用 Pacemaker 设定虚拟 IP 地址,用以对外提供服务。
PaceMaker “ ”是双机热备方案中的 首脑 ,用于指导 Heartbeat 执行具体的工作,比如监测
服务的可用性、资源的可用性、主机状态等。设定 Pacemaker 可以使用专门的 crm 系列指令,
方便的对双机热备的规则进行管理。
这里,我们要实现的方案是 IP 地址失效转移,故只需配置一个虚拟 IP 地址即可。首先
检查 Heartbeat 的工作状态:
sudo crm_mon -1
看到
Online: [ ubuntu1 ubuntu2 ]
这行信息,就说明 Heartbeat 工作正常了。其中 ubuntu1 和 ubuntu2 就是上文中提到的两
台主机的机器名或域名。
第一步,禁用 STONITH:
sudo crm configure property stonith-enabled=false
以简化双机热备方案的配置工作。STONITH “的意思是 Shoot The Other Node In The
Head” “,是用来避免双机热备的系统发生 裂脑(split-brain ”) 行为的(详情请参见:
http://yimu1023.blog.163.com/blog/static/362522822008621511567/或 http://www.linux-
ha.org/wiki/STONITH),这里我们暂时不考虑这个问题。
第二步,配置虚拟 IP 地址:
sudo crm configure
crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 
> params ip="192.168.0.88" 
> nic="eth0" 
> cidr_netmask="24" 
> op start interval="0s" timeout="60s" 
> op monitor interval="5s" timeout="20s" 
> op stop interval="0s" timeout="60s
crm(live)configure# commit
crm(live)configure# exit
其中:蓝色字体部分为系统提示符;vip 为本虚拟 IP 配置的名称,可以自行定义;
192.168.0.88 是业务应用要使用的虚拟 IP 地址;eth0 是对外提供服务的,或者说是虚拟 IP 地
址要绑定的以太网接口名;24 是 CIDR 子网掩码长度;其它参数可查阅相关文档。
第三步,验证虚拟 IP 状态:
sudo crm_mon -1
除了上文中看到的 Online 信息之外,还应该看到
vip (ocf::heartbeat:IPaddr2): Started ubuntu1
其中 vip 是上文提到的虚拟 IP 配置的名称,ubuntu1 是当前活动的主机机器名或域名,
根据实际情况不同,这里也有可能是 ubuntu2。此处假设 ubuntu1 为主服务器,则当前值应
为 ubuntu1。
4、效果验证
4.1、验证 IP 失效转移
编辑 ubuntu1 和 ubuntu2 主机上的/var/lib/tomcat6/webapps/ROOT/index.html 文件,内容
分别为:
<h1>This is ubuntu1.</h1>
和
<h1>This is ubuntu2.</h1>
在局域网中的某主机 192.168.0.123 上以 Web 浏览器浏览网址 http://192.168.0.88/,应该
看到
This is ubuntu1.
将 ubuntu1 的以太网线拔出,刷新 Web 浏览器,应该看到
This is ubuntu2.
重新插好以太网线,再次刷新 Web 浏览器,应该看到
This is ubuntu1.
4.2、验证 MySQL
由于拙作《Ubuntu 上 MySQL 的 Replication 配置》中已经提及对 MySQL Replication 的
验证,故无须再验证 Replication,只需验证虚拟 IP 即可。在局域网中的某主机 192.168.0.123
上执行:
mysql -h 192.168.0.88 -u root -p
并输入密码,应该能够成功登录 MySQL 服务。退出 MySQL 环境后,将 ubuntu1 的以太
网线拔出,再次执行:
mysql -h 192.168.0.88 -u root -p
并输入密码,应仍能成功登录 MYSQL 服务。测试后退出 MySQL 环境并重新插好以太
网线。
4.3、验证 Tomcat 的 Session 同步
首先创建文本文件/var/lib/tomcat6/webapps/ROOT/WEB-INF/web.xml,编辑其内容为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>ROOT</display-name>
<distributable/>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
注意这个<distributable/> 一定要写!
接下来在 ubuntu1 主机上创建三个 jsp 文件,第一个文件
是/var/lib/tomcat6/webapps/ROOT/main.jsp,内容是:
I'm ubuntu1.
<br/>
<form action="action.jsp" method="post">
<input type="text" name="var" />
<input type="submit" value="Submit" />
</form>
第二个文件为/var/lib/tomcat6/webapps/ROOT/action.jsp,内容是:
<%
String var = request.getParameter("var");
session.setAttribute("VAR", var);
%>
I'm ubuntu1.
<br/>
<a href="continue.jsp">Continue</a>
这个文件的作用是将用户输入的数据存储到 Tomcat 的 Session 里边去。需要特别注意的
是,在实际应用中,为了实现 Session 同步,要求所有存储于 Session 中的对象都必须是简单
数据类型或实现 java.io.Serializable 接口的类的实例,且这些类的所有属性及其递归子属性也
应该是简单数据类型或实现上述接口。
第三个文件为/var/lib/tomcat6/webapps/ROOT/continue .jsp,内容是:
I'm ubuntu1.
<br/>
Your session value is <%= session.getAttribute("VAR") %>.
将上述 4 个文件复制到 ubuntu2 主机的相同路径下,并将文中所有 ubuntu1 改为
ubuntu2,以示区别。
重启两台主机的 Tomcat 服务:
sudo /etc/init.d/tomcat6 restart
用局域网中的某主机 192.168.0.123 上以 Web 浏览器浏览网址
http://192.168.0.88/main.html,应该看到
I'm ubuntu1.
“和一个输入框,输入文字 TEST”并提交,应该看到
I'm ubuntu1.
和一个 Continue 链接,点击链接,显示
I'm ubuntu1.
Your session value is TEST.
这里的 TEST 即为我们记录到 Session 中的数据。此时将 ubuntu1 主机的以太网线拔出,
刷新 Web 浏览器,应该显示
I'm ubuntu2.
Your session value is TEST.
注意此次主机名称的不同和 Session 的相同。插好以太网线并再次刷新 Web 浏览器,应
该显示
I'm ubuntu1.
Your session value is TEST.
至此,一个简单的双机热备配置便已大功告成。
5、进阶
本文中所描述的是一种简单的、通过虚拟 IP 失效转移的手段实现的高可用性方案,仅
适合于对于系统可用性相对较高,却不至于苛刻的场合。
此外,如果发生某种情况,使得主服务器的虚拟 IP 没有失效,然而服务程序却出现了
故障,则会导致此种失效转移失败。
“ ”进一步,目前的双机热备所配置的都是 被动 提供服务的业务,却不适合主动向外发送
业务请求的功能(如搜索引擎使用的网络爬虫)。
上述问题都将成为本文给出的方案的缺失环节,有待于进一步研究解决。

More Related Content

What's hot

Sery lvs+keepalived
Sery lvs+keepalivedSery lvs+keepalived
Sery lvs+keepalivedcolderboy17
 
Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Zhaoyang Wang
 
soyo manual 8100 Vt6103 Ok
soyo manual 8100 Vt6103 Oksoyo manual 8100 Vt6103 Ok
soyo manual 8100 Vt6103 Okguest69f195
 
OpenSTACK Installation on Ubuntu
OpenSTACK Installation on UbuntuOpenSTACK Installation on Ubuntu
OpenSTACK Installation on Ubuntu康志強 大人
 
Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版redhat9
 
方建国 -V mware-ha实战1
方建国 -V mware-ha实战1方建国 -V mware-ha实战1
方建国 -V mware-ha实战1landece
 
Install Hmc 734 V Box
Install Hmc 734 V BoxInstall Hmc 734 V Box
Install Hmc 734 V Boxguest96e3e1
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络lovingprince58
 
StackOps step by-step guide
StackOps step by-step guideStackOps step by-step guide
StackOps step by-step guideslmagicbox
 
The New Process No. 1 of Linux -- SystemD
The New Process No. 1 of Linux -- SystemDThe New Process No. 1 of Linux -- SystemD
The New Process No. 1 of Linux -- SystemDfreedman6022e20
 
Deployment instruction trus guard utm 500
Deployment instruction trus guard utm 500Deployment instruction trus guard utm 500
Deployment instruction trus guard utm 500ahnlabchina
 
Installation and configuration 11g r2
Installation and configuration 11g r2Installation and configuration 11g r2
Installation and configuration 11g r2Zhaoyang Wang
 
Deployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnDeployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnahnlabchina
 
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)hik_lhz
 
Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Yiwei Ma
 
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络F.l. Yu
 
Manual instruction apc3.0
Manual instruction apc3.0Manual instruction apc3.0
Manual instruction apc3.0ahnlabchina
 
利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版xingsu1021
 
Deployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnDeployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnahnlabchina
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmmYiwei Ma
 

What's hot (20)

Sery lvs+keepalived
Sery lvs+keepalivedSery lvs+keepalived
Sery lvs+keepalived
 
Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...
 
soyo manual 8100 Vt6103 Ok
soyo manual 8100 Vt6103 Oksoyo manual 8100 Vt6103 Ok
soyo manual 8100 Vt6103 Ok
 
OpenSTACK Installation on Ubuntu
OpenSTACK Installation on UbuntuOpenSTACK Installation on Ubuntu
OpenSTACK Installation on Ubuntu
 
Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版
 
方建国 -V mware-ha实战1
方建国 -V mware-ha实战1方建国 -V mware-ha实战1
方建国 -V mware-ha实战1
 
Install Hmc 734 V Box
Install Hmc 734 V BoxInstall Hmc 734 V Box
Install Hmc 734 V Box
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络
 
StackOps step by-step guide
StackOps step by-step guideStackOps step by-step guide
StackOps step by-step guide
 
The New Process No. 1 of Linux -- SystemD
The New Process No. 1 of Linux -- SystemDThe New Process No. 1 of Linux -- SystemD
The New Process No. 1 of Linux -- SystemD
 
Deployment instruction trus guard utm 500
Deployment instruction trus guard utm 500Deployment instruction trus guard utm 500
Deployment instruction trus guard utm 500
 
Installation and configuration 11g r2
Installation and configuration 11g r2Installation and configuration 11g r2
Installation and configuration 11g r2
 
Deployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnDeployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cn
 
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
 
Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)
 
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络
 
Manual instruction apc3.0
Manual instruction apc3.0Manual instruction apc3.0
Manual instruction apc3.0
 
利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版
 
Deployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnDeployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cn
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmm
 

Viewers also liked

Green supply chain management
Green supply chain managementGreen supply chain management
Green supply chain managementAlexander Decker
 
Amnistia30urte
Amnistia30urteAmnistia30urte
Amnistia30urteetengabe
 
Valley European Auto Servi | Independent Porsche Repair Los Angeles
Valley European Auto Servi | Independent Porsche Repair Los AngelesValley European Auto Servi | Independent Porsche Repair Los Angeles
Valley European Auto Servi | Independent Porsche Repair Los Angelesrichserrano
 
No todos creerán
No todos creeránNo todos creerán
No todos creerániccjcv
 
(A2 Media Studies - Megan Smith) The Chosen Locations (Planning)
(A2 Media Studies - Megan Smith) The Chosen Locations (Planning) (A2 Media Studies - Megan Smith) The Chosen Locations (Planning)
(A2 Media Studies - Megan Smith) The Chosen Locations (Planning) Megan Smith
 
xcel energy EEI_Pres_November_2007SEC
xcel energy  EEI_Pres_November_2007SECxcel energy  EEI_Pres_November_2007SEC
xcel energy EEI_Pres_November_2007SECfinance26
 
Connecting Collections, March 2010. Almut Grűner, UKMCG Medicine At The Movies
Connecting Collections, March 2010. Almut Grűner, UKMCG Medicine At The MoviesConnecting Collections, March 2010. Almut Grűner, UKMCG Medicine At The Movies
Connecting Collections, March 2010. Almut Grűner, UKMCG Medicine At The MoviesCollections Trust
 
MBA: 9 шагов управление маркетингом
MBA: 9 шагов управление маркетингомMBA: 9 шагов управление маркетингом
MBA: 9 шагов управление маркетингомLLC Fiesta media
 
олимпиада сочи 2014
олимпиада сочи 2014олимпиада сочи 2014
олимпиада сочи 2014LESNIC
 
The henley group_market_outlook_aug13
The henley group_market_outlook_aug13The henley group_market_outlook_aug13
The henley group_market_outlook_aug13Pierre-Armand FIEVET
 
De toan a_b_d_2002_2012
De toan a_b_d_2002_2012De toan a_b_d_2002_2012
De toan a_b_d_2002_2012Huynh ICT
 
Josh Groban Mi Mancherai
Josh Groban Mi MancheraiJosh Groban Mi Mancherai
Josh Groban Mi MancheraiKalaukia
 
In the court of people 1
In the court of people   1In the court of people   1
In the court of people 1kirby1973
 
Tech Petting Zoo & gMail
Tech Petting Zoo & gMailTech Petting Zoo & gMail
Tech Petting Zoo & gMailmkbarteau
 
Возрождени еэлектронной инженериии гражданской электроники в России
Возрождени еэлектронной инженериии гражданской электроники в РоссииВозрождени еэлектронной инженериии гражданской электроники в России
Возрождени еэлектронной инженериии гражданской электроники в РоссииITMO University
 
Supporting individuals in poverty
Supporting individuals in povertySupporting individuals in poverty
Supporting individuals in povertywalescva
 

Viewers also liked (18)

Green supply chain management
Green supply chain managementGreen supply chain management
Green supply chain management
 
Amnistia30urte
Amnistia30urteAmnistia30urte
Amnistia30urte
 
Valley European Auto Servi | Independent Porsche Repair Los Angeles
Valley European Auto Servi | Independent Porsche Repair Los AngelesValley European Auto Servi | Independent Porsche Repair Los Angeles
Valley European Auto Servi | Independent Porsche Repair Los Angeles
 
No todos creerán
No todos creeránNo todos creerán
No todos creerán
 
(A2 Media Studies - Megan Smith) The Chosen Locations (Planning)
(A2 Media Studies - Megan Smith) The Chosen Locations (Planning) (A2 Media Studies - Megan Smith) The Chosen Locations (Planning)
(A2 Media Studies - Megan Smith) The Chosen Locations (Planning)
 
xcel energy EEI_Pres_November_2007SEC
xcel energy  EEI_Pres_November_2007SECxcel energy  EEI_Pres_November_2007SEC
xcel energy EEI_Pres_November_2007SEC
 
Connecting Collections, March 2010. Almut Grűner, UKMCG Medicine At The Movies
Connecting Collections, March 2010. Almut Grűner, UKMCG Medicine At The MoviesConnecting Collections, March 2010. Almut Grűner, UKMCG Medicine At The Movies
Connecting Collections, March 2010. Almut Grűner, UKMCG Medicine At The Movies
 
MBA: 9 шагов управление маркетингом
MBA: 9 шагов управление маркетингомMBA: 9 шагов управление маркетингом
MBA: 9 шагов управление маркетингом
 
Silabus
SilabusSilabus
Silabus
 
олимпиада сочи 2014
олимпиада сочи 2014олимпиада сочи 2014
олимпиада сочи 2014
 
The henley group_market_outlook_aug13
The henley group_market_outlook_aug13The henley group_market_outlook_aug13
The henley group_market_outlook_aug13
 
De toan a_b_d_2002_2012
De toan a_b_d_2002_2012De toan a_b_d_2002_2012
De toan a_b_d_2002_2012
 
Josh Groban Mi Mancherai
Josh Groban Mi MancheraiJosh Groban Mi Mancherai
Josh Groban Mi Mancherai
 
In the court of people 1
In the court of people   1In the court of people   1
In the court of people 1
 
Tech Petting Zoo & gMail
Tech Petting Zoo & gMailTech Petting Zoo & gMail
Tech Petting Zoo & gMail
 
Возрождени еэлектронной инженериии гражданской электроники в России
Возрождени еэлектронной инженериии гражданской электроники в РоссииВозрождени еэлектронной инженериии гражданской электроники в России
Возрождени еэлектронной инженериии гражданской электроники в России
 
Shifaussaqaam
Shifaussaqaam Shifaussaqaam
Shifaussaqaam
 
Supporting individuals in poverty
Supporting individuals in povertySupporting individuals in poverty
Supporting individuals in poverty
 

Similar to Ubuntu 10.04 LTS上配置简单双机热备方案

构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 Renaun Erickson
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 
Juniper ScreenOS 基于Policy的
Juniper ScreenOS 基于Policy的Juniper ScreenOS 基于Policy的
Juniper ScreenOS 基于Policy的mickchen
 
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除5045033
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUGYingSiang Geng
 
Deployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnDeployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnahnlabchina
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newYiwei Ma
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章鍾誠 陳鍾誠
 
0513 深入Windows Server 2008 系統核心
0513 深入Windows Server 2008  系統核心0513 深入Windows Server 2008  系統核心
0513 深入Windows Server 2008 系統核心Timothy Chen
 
8 集群
8 集群8 集群
8 集群hik_lhz
 
Corega CG-WLAPGMN Manual
Corega CG-WLAPGMN ManualCorega CG-WLAPGMN Manual
Corega CG-WLAPGMN Manualtag taglife
 
20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大MAKERPRO.cc
 
九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)heima911
 
九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)heima911
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365Peter Yi
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on praticeKenny (netman)
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)Yiwei Ma
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结Yiwei Ma
 

Similar to Ubuntu 10.04 LTS上配置简单双机热备方案 (20)

构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
Juniper ScreenOS 基于Policy的
Juniper ScreenOS 基于Policy的Juniper ScreenOS 基于Policy的
Juniper ScreenOS 基于Policy的
 
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
Deployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnDeployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cn
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 new
 
manual
manualmanual
manual
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章
 
Manual
ManualManual
Manual
 
0513 深入Windows Server 2008 系統核心
0513 深入Windows Server 2008  系統核心0513 深入Windows Server 2008  系統核心
0513 深入Windows Server 2008 系統核心
 
8 集群
8 集群8 集群
8 集群
 
Corega CG-WLAPGMN Manual
Corega CG-WLAPGMN ManualCorega CG-WLAPGMN Manual
Corega CG-WLAPGMN Manual
 
20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大
 
九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)
 
九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)九州通 Tsm重新配置文档(2008 11 10)
九州通 Tsm重新配置文档(2008 11 10)
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结
 

Ubuntu 10.04 LTS上配置简单双机热备方案

  • 1. Ubuntu 10.04 LTS 上配置简单双机热备方案 ——Tomcat6.0 + MySQL5.1 的 IP 失效转移 4b3tt0r_at_gmail.com 在某些对于可用性要求较高的 Web 应用场合,一般都是用双机热备的方案进行实现的。 这样,当一台服务器由于某种原因发生故障时,在很短的时间内,应用可以无缝的切换到另 一台服务器上,从而避免应用的中断。 本文所描述的方法和步骤,是一种简单的已 IP 可用性为核心的双机热备方案。 1、环境 OS:Ubuntu Server 10.04 LTS 硬件:服务器两台 IP/机器名:192.168.0.11/ubuntu1、192.168.0.22/ubuntu2 2、软件安装 安装 MySQL 5.1 sudo apt-get install mysql-server 安装 Tomcat 6.0 sudo apt-get install tomcat6 安装 Heartbeat2 和 Pacemaker sudo apt-get install heartbeat pacemaker 3、配置过程 3.1、MySQL 的 Master-Master Replication MySQL 的 Master-Master Replication 方式,其实就是互相的 Master-Slave Replication 方 式。这种方式下,在确保仅对其中一个节点做写操作的前提下,可以很好的保证数据同步 (一般是毫秒级的同步时间),甚至可以在读写分离模式下大大提高总体性能。 MySQL 的 Master-Slave Replication 请参阅拙作《Ubuntu 上 MySQL 的 Replication 配置》, 其中详细描述了这种方案的操作步骤。就下来要做的,就是把 Master 和 Slave 的角色互换一 下,再次配置 Master-Slave Replication,就成了 Master-Master Replication 了。 3.2、Tomcat 的 Session 同步 为了在 IP 失效转移的时候实现用户无感知,就必须让用户的 Session 能够在主机和备机 之间同步。这样,用户登录主机后,即使主机宕机,也不会导致要求用户必须在备机上重新 登录一遍。 我们要操作的 Tomcat 的配置文件是/etc/tomcat/server.xml。 首先将端口改到 80 上(这是根据具体项目所设计的服务端口而定的,Web 应用一般默 认为 80 端口,而 ubuntu 在安装的时候会配置在 8080 端口): 将
  • 2. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" /> 改为 <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" /> 然后配置 Session 同步参数: 将 <Engine name="Catalina" defaultHost="localhost"> 改为 <Engine name="Catalina" defaultHost="localhost" jvmRoute="ubuntu1"> 注意这里的 ubuntu1,是本服务器上的 Tomcat 节点名称,不同的服务器上不能相同,不 妨以机器名命名之。 再将 <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> --> 改为 <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"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4001" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <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"/> </Channel>
  • 3. <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <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> 此处 228.0.0.4 为组播地址,不应与当前已存在的组播地址相同。 修改完毕重启 Tomcat 服务,Tomcat 的 Session 同步就应该正常工作了。这一点,我们将 在后文中予以验证。 到这里,您可能会发现 Tomcat 的 80 端口监听失败了,那是因为您的 Tomcat 绑定了 1023 以下的端口,而 ubuntu 默认情况下要求这些端口必须由 authbind 来绑定。解决的办法 很简单,编辑/etc/default/tomcat6 文件,将 #AUTHBIND=no 改为 AUTHBIND=yes 然后重启 Tomcat 即可。 sudo /etc/init.d/tomcat6 restart 3.3、Heartbeat 基本配置 上文中的操作仅仅构建了具备双机热备业务能力的应用层配置,而真正要将双机热备特 性实现出来,则需要 Heartbeat 出场了。 Heartbeat 是一款开源的 Linux 系统高可用性(HA)解决方案及实现,它可以让两台或 以上 Linux 主机之间可以互相意识到彼此的存活状况,并在适当的条件下对主机的服务、资 源、特性、进程等进行自动的操作,从而达到失效转移的目的。 既然命名为 Heartbeat “ ”,其工作机制当然依赖于主机之间的 心跳 来实现。Heartbeat 支持 的心跳接口包括以太网、串口等多种方式。方便起见,我们在局域网里选用以太网方式,无 须增加额外的硬件和网络配置。 首先要配置的是 Heartbeat 认证信息,以便要进行双机热备的主机之间可以在互相可信 的状态下进行通信。创建文本文件/etc/ha.d/authkeys,并编辑其内容如下: auth 1 1 sha1 HA_SHARED_KEY 其中 sha1 是将要使用的加密算法,也可以考虑使用 md5,HA_SHARED_KEY 是共享密 码。这个文件应该在两台主机上都存在,且内容完全相同。为了保障系统的安全性,应该将
  • 4. 这个文件的访问权限设置为仅 root 访问: sudo chown root:root /etc/ha.d/authkeys sudo chmod 600 /etc/ha.d/authkeys 接下来,开始配置 Heartbeat 的心跳配置文件,创建文件/etc/ha.d/ha.cf,编辑其内容: bcast eth0 warntime 3 deadtime 6 initdead 60 keepalive 1 node ubuntu1 node ubuntu2 crm respawn 其中 eth0 表示用于心跳的以太网接口,这里直接使用主机对外提供服务的设备即可 (如果有必要,可以使用专门的以太网接口作为心跳设备,而不使用提供业务服务的设备); ubuntu1 和 ubuntu2 是两台主机的机器名,也可以用域名(这里要求主机之间可以通过机器 名或域名解析到彼此的 IP 地址(分别为 192.168.0.11 和 192.168.0.22),如果无法访问域名 服务,则应在/etc/hosts 文件中予以指定);其它参数请查阅相关文档。 完成以上工作,重启 Heartbeat 服务即可。 sudo /etc/init.d/tomcat6 restart 3.4、用 Pacemaker 设置虚拟 IP 接下来的工作是利用 Pacemaker 设定虚拟 IP 地址,用以对外提供服务。 PaceMaker “ ”是双机热备方案中的 首脑 ,用于指导 Heartbeat 执行具体的工作,比如监测 服务的可用性、资源的可用性、主机状态等。设定 Pacemaker 可以使用专门的 crm 系列指令, 方便的对双机热备的规则进行管理。 这里,我们要实现的方案是 IP 地址失效转移,故只需配置一个虚拟 IP 地址即可。首先 检查 Heartbeat 的工作状态: sudo crm_mon -1 看到 Online: [ ubuntu1 ubuntu2 ] 这行信息,就说明 Heartbeat 工作正常了。其中 ubuntu1 和 ubuntu2 就是上文中提到的两 台主机的机器名或域名。 第一步,禁用 STONITH: sudo crm configure property stonith-enabled=false 以简化双机热备方案的配置工作。STONITH “的意思是 Shoot The Other Node In The Head” “,是用来避免双机热备的系统发生 裂脑(split-brain ”) 行为的(详情请参见:
  • 5. http://yimu1023.blog.163.com/blog/static/362522822008621511567/或 http://www.linux- ha.org/wiki/STONITH),这里我们暂时不考虑这个问题。 第二步,配置虚拟 IP 地址: sudo crm configure crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 > params ip="192.168.0.88" > nic="eth0" > cidr_netmask="24" > op start interval="0s" timeout="60s" > op monitor interval="5s" timeout="20s" > op stop interval="0s" timeout="60s crm(live)configure# commit crm(live)configure# exit 其中:蓝色字体部分为系统提示符;vip 为本虚拟 IP 配置的名称,可以自行定义; 192.168.0.88 是业务应用要使用的虚拟 IP 地址;eth0 是对外提供服务的,或者说是虚拟 IP 地 址要绑定的以太网接口名;24 是 CIDR 子网掩码长度;其它参数可查阅相关文档。 第三步,验证虚拟 IP 状态: sudo crm_mon -1 除了上文中看到的 Online 信息之外,还应该看到 vip (ocf::heartbeat:IPaddr2): Started ubuntu1 其中 vip 是上文提到的虚拟 IP 配置的名称,ubuntu1 是当前活动的主机机器名或域名, 根据实际情况不同,这里也有可能是 ubuntu2。此处假设 ubuntu1 为主服务器,则当前值应 为 ubuntu1。 4、效果验证 4.1、验证 IP 失效转移 编辑 ubuntu1 和 ubuntu2 主机上的/var/lib/tomcat6/webapps/ROOT/index.html 文件,内容 分别为: <h1>This is ubuntu1.</h1> 和 <h1>This is ubuntu2.</h1> 在局域网中的某主机 192.168.0.123 上以 Web 浏览器浏览网址 http://192.168.0.88/,应该 看到 This is ubuntu1. 将 ubuntu1 的以太网线拔出,刷新 Web 浏览器,应该看到 This is ubuntu2.
  • 6. 重新插好以太网线,再次刷新 Web 浏览器,应该看到 This is ubuntu1. 4.2、验证 MySQL 由于拙作《Ubuntu 上 MySQL 的 Replication 配置》中已经提及对 MySQL Replication 的 验证,故无须再验证 Replication,只需验证虚拟 IP 即可。在局域网中的某主机 192.168.0.123 上执行: mysql -h 192.168.0.88 -u root -p 并输入密码,应该能够成功登录 MySQL 服务。退出 MySQL 环境后,将 ubuntu1 的以太 网线拔出,再次执行: mysql -h 192.168.0.88 -u root -p 并输入密码,应仍能成功登录 MYSQL 服务。测试后退出 MySQL 环境并重新插好以太 网线。 4.3、验证 Tomcat 的 Session 同步 首先创建文本文件/var/lib/tomcat6/webapps/ROOT/WEB-INF/web.xml,编辑其内容为: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>ROOT</display-name> <distributable/> <session-config> <session-timeout>60</session-timeout> </session-config> </web-app> 注意这个<distributable/> 一定要写! 接下来在 ubuntu1 主机上创建三个 jsp 文件,第一个文件 是/var/lib/tomcat6/webapps/ROOT/main.jsp,内容是: I'm ubuntu1. <br/> <form action="action.jsp" method="post"> <input type="text" name="var" /> <input type="submit" value="Submit" />
  • 7. </form> 第二个文件为/var/lib/tomcat6/webapps/ROOT/action.jsp,内容是: <% String var = request.getParameter("var"); session.setAttribute("VAR", var); %> I'm ubuntu1. <br/> <a href="continue.jsp">Continue</a> 这个文件的作用是将用户输入的数据存储到 Tomcat 的 Session 里边去。需要特别注意的 是,在实际应用中,为了实现 Session 同步,要求所有存储于 Session 中的对象都必须是简单 数据类型或实现 java.io.Serializable 接口的类的实例,且这些类的所有属性及其递归子属性也 应该是简单数据类型或实现上述接口。 第三个文件为/var/lib/tomcat6/webapps/ROOT/continue .jsp,内容是: I'm ubuntu1. <br/> Your session value is <%= session.getAttribute("VAR") %>. 将上述 4 个文件复制到 ubuntu2 主机的相同路径下,并将文中所有 ubuntu1 改为 ubuntu2,以示区别。 重启两台主机的 Tomcat 服务: sudo /etc/init.d/tomcat6 restart 用局域网中的某主机 192.168.0.123 上以 Web 浏览器浏览网址 http://192.168.0.88/main.html,应该看到 I'm ubuntu1. “和一个输入框,输入文字 TEST”并提交,应该看到 I'm ubuntu1. 和一个 Continue 链接,点击链接,显示 I'm ubuntu1. Your session value is TEST. 这里的 TEST 即为我们记录到 Session 中的数据。此时将 ubuntu1 主机的以太网线拔出, 刷新 Web 浏览器,应该显示 I'm ubuntu2. Your session value is TEST. 注意此次主机名称的不同和 Session 的相同。插好以太网线并再次刷新 Web 浏览器,应 该显示
  • 8. I'm ubuntu1. Your session value is TEST. 至此,一个简单的双机热备配置便已大功告成。 5、进阶 本文中所描述的是一种简单的、通过虚拟 IP 失效转移的手段实现的高可用性方案,仅 适合于对于系统可用性相对较高,却不至于苛刻的场合。 此外,如果发生某种情况,使得主服务器的虚拟 IP 没有失效,然而服务程序却出现了 故障,则会导致此种失效转移失败。 “ ”进一步,目前的双机热备所配置的都是 被动 提供服务的业务,却不适合主动向外发送 业务请求的功能(如搜索引擎使用的网络爬虫)。 上述问题都将成为本文给出的方案的缺失环节,有待于进一步研究解决。