最近几天在搞lvs+keepalived 现将其过程大致写出来 明天更新细节。
一、基础环境配置
申请了五台虚拟机 因为只是做测试 所以配置忽略不计
节点类型 | IP地址规划 | 主机名 | 类型 |
lvs-master | eth0:10.240.210.41 | lvs-master | public ip |
eth1:192.168.1.100 | priv1 | private ip | |
eth0:0:10.240.210.46 | 无 | vitural ip | |
lvs-master-back | eth0:10.240.210.42 | lvs-master-back | public ip |
eth1:192.168.1.101 | priv2 | private ip | |
RealServerA | eth0:10.240.210.43 | lvs-master-back | public ip |
lo:0:10.240.210.46 | 无 | vitural ip | |
RealServerB | eth0:10.240.210.44 | RealServerB | public ip |
lo:0:10.240.210.46 | 无 | vitural ip | |
lvs备机 | eth0:10.240.210.45 | RealServerB | public ip |
两台lvs利用private ip 即eth1做心跳。
VIP,即虚IP,可以写脚本加上,脚本稍后公布,如果只为keepalived服务,也可以不写,因为keepalived.conf里可以配。
lo:0:10.240.210.46(此ip也为虚ip 脚本与注意事项稍后公布)
简单说明下,其实做lvs三台机器就够了,而且一块网卡也行了。毕竟并不是每个公司都有那么多实力来这么铺张浪费的搞lvs 有实力还可以去软硬结合,F5+lvs效果更好。之所以还这样,主要是想系统的了解这个lvs。
两台lvs做双机热备,中间有个eth1做心跳,这样可以实时监控到对方机器的存货状态。
两台RS服务器也做了lo:0而不是专门的eth,主要是因为结合实际情况,降低成本,一块网卡就够了,可以将VIP绑定到lo口上,而且lo口更加安全,不容易down掉。
lvs-master端绑定VIP脚本:
#!/bin/bash VIP=10.240.210.46 /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.0 up /sbin/route add -host $VIP dev eth0:0
并把vip.sh加入到rc.local:
echo "/root/vip.sh" >> /etc/rc.local
lvs-master-back可以不用绑VIP,当然后期出点问题做调试的时候还是要绑定的,稍后再说。
RSA和RSB端绑定VIP脚本:
#!/bin/bash VIP="10.240.210.46" ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p >/dev/null 2>&1 echo "RealServer Start OK"
并把lo.sh加入到rc.local:
echo "/root/lo.sh" >> /etc/rc.local
二、lvs+keepalived
2.1.1 LVS是通过IPVS模块来实现的。IPVS是LVS集群系统的核心软件,主要用于完成用户的请求到达负载调度器后,如何将请求发送到每个RS节点,RS节点如何返回数据给用户等。
我用的系统是Redhat6.5,系统内核默认支持LVS功能。
可以通过modprobe -l | grep ipvs来检查kernel是否已经支持LVS的模块
[root@lvs_master ~]# modprobe -l | grep ipvs kernel/net/netfilter/ipvs/ip_vs.ko kernel/net/netfilter/ipvs/ip_vs_rr.ko kernel/net/netfilter/ipvs/ip_vs_wrr.ko kernel/net/netfilter/ipvs/ip_vs_lc.ko kernel/net/netfilter/ipvs/ip_vs_wlc.ko kernel/net/netfilter/ipvs/ip_vs_lblc.ko kernel/net/netfilter/ipvs/ip_vs_lblcr.ko kernel/net/netfilter/ipvs/ip_vs_dh.ko kernel/net/netfilter/ipvs/ip_vs_sh.ko kernel/net/netfilter/ipvs/ip_vs_sed.ko kernel/net/netfilter/ipvs/ip_vs_nq.ko kernel/net/netfilter/ipvs/ip_vs_ftp.ko kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
如果有上述类似输出,表明系统内核默认支持IPVS模块。
2.1.2 安装IPVS管理软件,这里用yum,不用手编,简单快捷。
yum install ipvsadm
然后执行
ipvsadm --help
如果看到帮助信息,表明IPVS已经成功安装。
2.2 安装keepalived
最新版本是keepalived-1.2.13.tar.gz
tar keepalived-1.2.13.tar.gz cd keepalived-1.2.13 ./configure --sysconf=/etc \ >--with-kernel-dir=/usr/src/kernels/2.6.32-431.29.2.el6.x86_64 make make install ln -s /usr/local/sbin/keepalived /sbin
--sysconf指定了keepalived配置文件的安装路径,--with-kernel-dir这个参数不是要把keepalived编译进内核,而是指定使用内核源码中的头文件,即include目录。只有使用LVS时,才需要用到此参数,其他时候是不需要的。
安装完成后,执行以下操作
keepalived --help
表明keepalived已成功安装。