LVS+Keepalived

系統:CentOS5.6

HA:Keepalived 1.1.17
IP:
VIP:
10.0.1.250
10.0.1.251
DR(DIR):
10.0.1.120
10.0.1.121
Realserver(RIP):
10.0.1.122
10.0.1.123
Client(CIP):
10.0.1.203
配置
iptables -F
iptables -t nat -F
建議在LVS之上使用硬件防火牆,在本機上使用iptables會影響系統的性能。
DR:
1.配置yum源
ipvsadm 是Cluster人的一個軟件包
yum install -y ipvsadm
2.安裝keepalived
注:keepalived不會對語法進行檢測,即使錯誤也不會有提示信息,所以書寫過程中一定要認真。
DR1#tar fvxz keepalived-1.1.17.tar.gz
DR1#yum install kernel-devel ipvsadm -y (不裝一會安裝會有問題)
DR1#ln -s /usr/src/kernels/2.6.18-238.el5-x86_64/ /usr/src/linux
DR1#cd keepalived-1.1.17
DR1#./configure --prefix=/usr/local/keepalived
DR1#make
DR1#make install
安裝後,把人家提供好的文件進行對應的複製!
DR1#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/
DR1#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
DR1#mkdir -pv /etc/keepalived
DR1#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
DR1#ln -s /usr/local/keepalived/sbin/keepalived /sbin/
同樣的安裝步驟在DR2上執行一次!
Keepalived配置文件
DR1----->MASTER                                                     DR2------>BACKUP
! Configuration File for keepalived
global_defs {
  router_id dr1
}
vrrp_sync_group web122 {
       group {
               apache122
       }
}
vrrp_sync_group web123 {
       group {
               apache123
       }
}
vrrp_instance apache122 {
   state MASTER
   interface eth0
   virtual_router_id 51
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       10.0.1.250
   }
}
virtual_server 10.0.1.250 80 {
       delay_loop 6
       lb_algo rr
       lb_kind DR
       protocol TCP
       real_server 10.0.1.122 80 {
       weight 1
       TCP_CHECK {
       connect_timeout 3
       connect_port 80
               }
       }
}
vrrp_instance apache123 {
   state BACKUP
   interface eth0
   virtual_router_id 52
   priority 99
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 2222
   }
   virtual_ipaddress {
       10.0.1.251
   }
}
virtual_server 10.0.1.251 80 {
       delay_loop 6
       lb_algo rr
       lb_kind DR
       protocol TCP
       real_server 10.0.1.123 80 {
       weight 1
       TCP_CHECK {
       connect_timeout 3
       connect_port 80
               }
       }
}
! Configuration File for keepalived
global_defs {
  router_id dr2
}
vrrp_sync_group web122 {
       group {
               apache122
       }
}
vrrp_sync_group web123 {
       group {
               apache123
       }
}
vrrp_instance apache123 {
   state MASTER
   interface eth0
   virtual_router_id 52
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 2222
   }
   virtual_ipaddress {
       10.0.1.251
   }
}
virtual_server 10.0.1.251 80 {
       delay_loop 6
       lb_algo rr
       lb_kind DR
       protocol TCP
       real_server 10.0.1.123 80 {
       weight 1
       TCP_CHECK {
       connect_timeout 3
       connect_port 80
               }
       }
}
vrrp_instance apache122 {
   state BACKUP
   interface eth0
   virtual_router_id 51
   priority 99
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       10.0.1.250
   }
}
virtual_server 10.0.1.250 80 {
       delay_loop 6
       lb_algo rr
       lb_kind DR
       protocol TCP
       real_server 10.0.1.122 80 {
       weight 1
       TCP_CHECK {
       connect_timeout 3
       connect_port 80
               }
       }
}
注:使用ipvsadm -ln 進行查看
Forward :
Route 爲 DR模式
msq (masquerading) 爲NAT模式
使用-A添加VIP
ipvsadm -A -t VIP:80 -s 算法
使用 -E 選項修改VIP
使用-a 添加realserver
ipvsadm -a -t VIP:80 -r  RIP -m
使用-s 添加算法
ipvsadm -A -t VIP:80 -s 算法
使用 -e  可修改權重
ipvsadm -e -t VIP:80 -r  RIP -w 100
使用-D刪除VIP
RealServer1配置:
注:如果有路由器,需要將網關指向路由器
如路由器:eth0爲公網地址  eth1爲內網地址
route add default gw  eth1爲內網地址
route add -host 10.0.1.250 dev lo:0
ifconfig lo:0 10.0.1.250 netmask 255.255.255.255 broadcast 10.0.1.250 up
修改內核參數,可以寫入開機腳本或sysctl.conf。(/etc/rc.local)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
RealServer2配置:
注:如果有路由器,需要將網關指向路由器
如路由器:eth0爲公網地址  eth1爲內網地址
route add default gw  eth1爲內網地址
route add -host 10.0.1.251 dev lo:0
ifconfig lo:0 10.0.1.251 netmask 255.255.255.255 broadcast 10.0.1.251 up
修改內核參數,可以寫入開機腳本或sysctl.conf。(/etc/rc.local)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p  使當前生效
腳本:
#!/bin/bash
VIP1=10.0.1.250
ROUTE=路由接口地址
start() {
ifconfig lo:0 $VIP1/32 broadcast $VIP up
route add -host $VIP1 dev lo:0
route add default gw $ROUTE
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo start;
}
stop() {
route del default gw $ROUTE
route del -host $VIP1 dev lo:0
ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo stop;
}
case $1 in
start)
       start
       ;;
stop)
       stop
       ;;
restart)
       stop
       start
       ;;
*)
       echo 'start | stop'
esac
注:可將腳本放入/etc/init.d下,如:service vip start
解決無用的廣播包太多,造成DR無法綁定vip
DR1上執行
iptables -F
iptables -A INPUT -m ttl --ttl-eq 255 -j REJECT
iptables -I INPUT -s 10.0.1.121 -j ACCEPT
DR2上執行
iptables -F
iptables -A INPUT -m ttl --ttl-eq 255 -j REJECT
iptables -I INPUT -s 10.0.1.120 -j ACCEPT


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章