请教关于heartbeat做双机和数据同步的问题

原贴地址:
http://bbs.chinaunix.net/viewthread.php?tid=770597&extra=page%3D1
说明:
系统:ubuntu5
kernel:kernel-2.6.14,支持LVS,打过避免ARP问题的补丁
5个ubuntu系统都是用同样的内核!soft_list:
LVS:
ipvsadm-1.24.tar.gz
mon:
Time-HiRes-1.87.tar.gz
Convert-BER-1.3101.tar.gz
Mon-0.11.tar.gz
mon-0.99.2-8.i386
heartbeat:
heartbeat-2.0.5.tar.gz
libnet.tar.gz
glib2-devel-2.6.4-1.i386

realserver对外提供的服务是web服务:php+apache+mysql,3个软件都装在1台机器上!
网络结构描述:
Load balance:192.168.0.10
Load balance_bk:192.168.0.11
realserver1:192.168.0.12
realserver2:192.168.0.13
realserver3:192.168.0.14
virtual ip:192.168.0.20
10.0.0.1和10.0.0.2是用来做心跳的

要实现的要求:
1>用户对web访问的网络流量负载均衡(LVS来实现)
2>对realserver的web服务是否正常实现监控(mon来实现)
3>如果Load balance出了问题,Load balance_bk能够马上接管Load balance的工作,继续担任调度的角色

目前我已经在vmware虚拟机上实现了前面2个要求

疑问:
情况1:数据库的改动:
比如一个用户通过virtual IP访问了web,Load balance把这个请求发给了realserver1,这个用户的动作是注册一个ID,意味着,在realserver1的mysql里有了这个ID的信息, 那么,当这个用户再次访问web,这时候Load balance却把他的请求发给了realserver2,显然,realserver2的mysql里没有他的ID信息

情况2:网页内容的改动:
比如一个用户通过virtual IP访问了web,Load balance把这个请求发给了realserver1,这个用户的动作是发表一篇文章,意味着,在realserver1的web路径下,如/usr/local/apache/htdocs/bbs.html有所改动,那么,当这个用户再次访问web,这时候Load balance却把他的请求发给了realserver2,显然,realserver2的/usr/local/apache/htdocs/bbs.html里没有他的文章.

问题请教:
我如何能够让所有的realserver的网页内容和mysql内容同步?是否用heratbeat配合比如NFS(网络文件系统?)能够做到呢? 如果能,heartbeat只要装在Load balance和Load balance_bk上就可以了么?NFS呢?装在那些系统上呢?realserver?

看了些文章,觉的heartbeat主要是用来做双机备份的,不知道小弟理解是否有错?

请做过这方面的朋友指教我,谢谢

附件大小
Image icon lvs.JPG28.46 KB

Forums:

数据库用同一个数据库就可以了.

网页用NFS共享,是个不错的方法

这个要看你是如何一个网络负载!

如果非常大,而且超过8台需要 mount的哈,NFS的性能明显就有问题了!

我是这样理解的:
lvs和hb主要是用来减轻大量数据访问时“http服务器”的负载的,
这里所谓的“http服务器”是指比较单纯的接收数据和发送数据的一个服务器,
至于怎么处理接收到的数据,或者调用什么东西,最好的方式还是再建立一个文件服务器(或集群),也就是再做一“层”服务。

这样,可以保证http服务器的高效,并且可以保证数据的完整性、可扩展性和其他性(暂时想不起来了,不要拍砖。嗬嗬)

不过,如果是像session或者一些需要持久性的简单存储应用的话,
在ipvsadm里面有一个[-p]的参数可以满足要求。

但是,像mysql这样比较专业的数据库的应用的话,还是2台真实服务器直接访问一个mysql服务器比较好。(基本是“应该”了,不应该用“比较好”的)

另外题外话,好像mysql支持分布式存储,我只是听说,没做过。
有兴趣的话可以研究一下。

good luck

Thinnikg like that shows an expert at work

I'm shcoekd that I found this info so easily.

randomness