主备ld之间的状态同步Linux认证考试

文章作者 100test 发表时间 2009:12:19 11:05:39
来源 100Test.Com百考试题网


  公司的一业务使用的是长连接的tcp协议(就算在没有业务数据包交互的情况下,每隔n秒c/s间都会有keepalive包传递),使用lvs作接入层的负载均衡,ld通过heartbeat做双机热备,主备ld之间因为只涉及到公网ip的漂移,所以没有使用ldirectd来重构ipvs表,而是直接使用自己写的脚本来重构备机上的ipvs表。所以haresoucre的配置很简单:master_node_name public_ip ipvs_shell。

  在实际的运营过程中,由于是长连接业务,且为了保证更好的用户体验,我们决定把主备ld之间的状态同步也加上,所谓的状态同步,就是ld会维护一张连接跟踪表(connectiontrackingtable),把每个连接的实时状态都保存在这张表里面。要做到主备ld之间的这张连接跟踪表的同步,需要在主备ld上分别启动一个内核守护线程,通过广播的方式来同步数据。

  主ld:

  ipvsadm--start-daemon=master--mcast-interface=eth1

  备ld:

  ipvsadm--start-daemon=backup--mcast-interface=eth1

  在主备ld上分别执行这两个命令后,可以在发现备ld上有个224.0.0.81:8848listen的内核守护线程,用来接收从主ld发过来的广播包。所以,要记得把防火墙的udp协议的8848端口打开,不然同步不了,可以在备ld上通过ipvsadm-Lnc看是否有连接同步过来。

  另外,在实际的运营过程中还发现,主备ld之间是怎么触发这种同步的呢?

  一是新的连接,不管怎么样,都会同步过去,

  二是对于已经存在的连接,如果有足够的数据量在这个连接上传送,在备ld上的expiretime即将到期/或者已经到期的时候,主ld会把这份已经存在的连接再次同步到备ld

  另外的是,一个老的连接,一直存在,但是备机上的expiretime已经到期了(主备上的expiretime分别有主备机维护)还发现跟这个连接上的传递数据量有关系(就是要数据量要达到一定的阀值,才会触发),如果c/s之间一直没有业务数据,仅仅只有每n秒传递的心跳数据(也就是说没有达到触发的阀值),会发现备ld上的连接跟踪表里已经没有这份数据。

  编辑特别推荐:

  Linux内核中流量控制(1)

  Linux内核中流量控制(2)

  Linux内核中流量控制(3)

  Linux内核中流量控制(4)

  Linux内核中流量控制(5)



相关文章


LinuxKernel2.6进程调度的分析(1)Linux认证考试
linux可设置tcp_ip协议参数说明Linux认证考试
提高Linux上socket性能Linux认证考试
Linuxttyptypts概念区别Linux认证考试
主备ld之间的状态同步Linux认证考试
linux查看端口流量的脚本Linux认证考试
使用stty修改终端设置Linux认证考试
在Fedora下安装PPStream网络电视Linux认证考试
ssh超时断开的解决方法Linux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛