ipt_CLUSTERIP
TODO list里躺了好久了,最近被逼着发PATCH。就把这个target拖出来看了看。
还是很简单的。
modprobe ipt_CLUSTERIP
这样就会在/proc/net下创建个ipt_CLUSTERIP目录。
使用iptables创建一条规则,这条规则同时也会创建一个clusterip_config,和规则是一一对应的,同样在
/proc/net/ipt_CLUSTERIP下也会创建一个文件,文件名是虚拟服务器的ip (vip)。在iptables里指定。
在node1上执行
iptables -I INPUT -d 192.168.122.33(这个就个vip) -i eth0 (哪个接口属于集群) -p icmp -j CLUSTERIP --new(必须有的) --hashmode sourceip(用source ip做hash,还有其他的?) --clustermac 01:00:5E:7F:18:0A(虚拟服务器的mac地址,必须为多播地址) --total-nodes 2(这个集群里一共有几台机器) --local-node 1(本地机器编号,只有编号为1的机器才有权力与客户端通信)。这个命令会将为eth0设备添加这个多播地址,见dev_mc_add。
添加完命令后,给这个Node加个ip
ifconfig eth0:0 192.168.122.33, 这样node的内核才回相应arp请求。
所以,客户端在想访问192.168.122.33前,会发送一个arp请求,node1收到后,看到这个ip是自己的,于是便回复你找的就是我,把自己
的mac地址发送给客户端。当这个arp回复经过OUTPUT链的arp_mangle钩子时,这个函数会判断 这个arp回复里的消息,如果发现客户端
想知道vip的mac地址,就把这个mac地址修改为clustermac,也就是01:00:5E:7F:18:0A。
这样以后客户端发的数据包就会变成广播包了, 所有的node ip都是192.168.122.33,所以所有的node都会收到这个消息,但是只有node1才有权力回复消息。其他node会在clusterip target里把数据包丢掉。
CLUSTERIP TARGET还有一个作用,就是把数据包pky_type修改为PACKET_HOST,让上层乐意收包。
下面是几个链接
http://www.linux-ha.org/ClusterIP
http://www.tummy.com/blogs/2009/12/04/clusterip-for-load-balancing-and-ha/
http://www.rkeene.org/projects/info/resources/projects/ipcluster/flavios-tech-talk-on-ipcluster.html
还是很简单的。
modprobe ipt_CLUSTERIP
这样就会在/proc/net下创建个ipt_CLUSTERIP目录。
使用iptables创建一条规则,这条规则同时也会创建一个clusterip_config,和规则是一一对应的,同样在
/proc/net/ipt_CLUSTERIP下也会创建一个文件,文件名是虚拟服务器的ip (vip)。在iptables里指定。
在node1上执行
iptables -I INPUT -d 192.168.122.33(这个就个vip) -i eth0 (哪个接口属于集群) -p icmp -j CLUSTERIP --new(必须有的) --hashmode sourceip(用source ip做hash,还有其他的?) --clustermac 01:00:5E:7F:18:0A(虚拟服务器的mac地址,必须为多播地址) --total-nodes 2(这个集群里一共有几台机器) --local-node 1(本地机器编号,只有编号为1的机器才有权力与客户端通信)。这个命令会将为eth0设备添加这个多播地址,见dev_mc_add。
添加完命令后,给这个Node加个ip
ifconfig eth0:0 192.168.122.33, 这样node的内核才回相应arp请求。
所以,客户端在想访问192.168.122.33前,会发送一个arp请求,node1收到后,看到这个ip是自己的,于是便回复你找的就是我,把自己
的mac地址发送给客户端。当这个arp回复经过OUTPUT链的arp_mangle钩子时,这个函数会判断 这个arp回复里的消息,如果发现客户端
想知道vip的mac地址,就把这个mac地址修改为clustermac,也就是01:00:5E:7F:18:0A。
这样以后客户端发的数据包就会变成广播包了, 所有的node ip都是192.168.122.33,所以所有的node都会收到这个消息,但是只有node1才有权力回复消息。其他node会在clusterip target里把数据包丢掉。
CLUSTERIP TARGET还有一个作用,就是把数据包pky_type修改为PACKET_HOST,让上层乐意收包。
下面是几个链接
http://www.linux-ha.org/ClusterIP
http://www.tummy.com/blogs/2009/12/04/clusterip-for-load-balancing-and-ha/
http://www.rkeene.org/projects/info/resources/projects/ipcluster/flavios-tech-talk-on-ipcluster.html