keepalived实现socket server 热机备份

在CentOS 6.5环境下,通过Keepalived 1.2.14实现socket server的热机备份。当socket server绑定本地IP时,Keepalived的VRRP无法正常工作。解决方案是让server绑定INADDR_ANY(0.0.0.0),允许服务在所有地址上监听,从而实现热备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keepalived实现socket server 热机备份
环境:CentOS6.5  x86_64
Keepalived:1.2.14
在使用Keepalived进行负载均衡的备份的时候,由于负载均衡是自己用socket写的,绑定的自然是本地的IP,这时使用Keepalived配置进行热机备份的时候,却无法正常通信。
又研究了一下Keepalived对Linux下Httpd服务的支持:
使用Httpd服务在本地监听一个端口(LISTEN  Port),这个时候并没有绑定IP,所以当用其他机子访问用Keepalived设置的VIP的时候(http://VIP:Port),可以正常跳转到Httpd中所设置的html;但当设置加上本机地址时(LISTEN  IP:Port),使用http://VIP:Port访问时,无法正常跳转到Httpd中所设置的html。由此可知,在使用VIP访问的时候,Keepalived(VRRP)并没有将VIP转换为真实的IP。
又写了个简单的Socket Server和Client,实现Client向Server发消息,Server回传。在使用Keepalived进行热备的时候,Server也不能直接bind本地地址,这个时候Client和Server无法通信;当将Server直接bind所设置的VIP的时候才可以通信,但是这样的话无法在两台机子上无法同时运行Server(IP:Port都一样,会报错:Address already used)。
解决方案:
Server在绑定IP的时候,采用另一种方式:sockaddr.sin_addr.s_addr = htonl(INADDR_ANY) 
INADDR_ANY:INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。
这样就可以实现TCP和UDP Server的热备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值