【每日一学】浮动IP

来源:互联网 发布:最伟大的皇帝知乎 编辑:程序博客网 时间:2024/06/06 03:18

在集群或者主备双机场景,对服务使用者而言期望的只有一个IP或域名,这个时候需要的就是浮动IP。

一、主备实现

利用单个网卡绑定多个ip地址的技术和crontab自动执行技术
 为主机的网卡多绑定一个静态ip,如124.158.26.32 ,这个地址是便于从机判断的,为从机的网卡多绑定一个动态ip,127.0.0.1,它在主机故障时将会被脚本修改为124.158.26.30
 在从机添加一个脚本 floatip.sh,使用crontab技术让这个脚本每分钟执行一次,这个脚本的作用是判断主机的地址32能否ping通,一旦不通则将让自己的网卡多余那个ip地址改为124.158.26.30,如果主机恢复,则将这个地址改回为127.0.0.1

步骤:

1、为主机多绑定一个静态ip124.158.26.32 

 /sbin/ifconfig
2、在从机上建立脚本floatip.sh

机上建立crontab

 用crontab -e
 */1 * * * * floatip.sh > /dev/null 2>&1


二、keppalived的实现

利用VRRP协议避免单点故障,主服务器会发送心跳给备份服务器,单备份服务器收不到消息时,多台备份服务器中BACKUP优先级最高的服务器快速抢占为MASTER,接管浮动IP。


三、转发规则

iptables 增加了两条处理 floating IP 的规则:
1. 当 router 接收到从外网发来的包,如果目的地址是 floating IP 10.10.10.3,将目的地址修改为 cirros-vm3 的 IP 172.16.101.3。这样外网的包就能送达到 cirros-vm3。
2. 当 cirros-vm3 发送数据到外网,源地址 172.16.101.3 将被修改为 floating IP 10.10.10.3。

-A neutron-vpn-agen-PREROUTING -d 10.10.10.3/32 -j DNAT --to-destination 172.16.101.3

-A neutron-vpn-agen-float-snat -s 172.16.101.3/32 -j SNAT --to-source 10.10.10.3