最近几天在搞lvs+keepalived 现将其过程大致写出来 明天更新细节。

一、基础环境配置

  1. 申请了五台虚拟机 因为只是做测试 所以配置忽略不计

    节点类型IP地址规划主机名类型
    lvs-mastereth0:10.240.210.41lvs-masterpublic ip

    eth1:192.168.1.100priv1private ip

    eth0:0:10.240.210.46vitural ip
    lvs-master-backeth0:10.240.210.42lvs-master-backpublic ip

    eth1:192.168.1.101priv2private ip
    RealServerAeth0:10.240.210.43lvs-master-backpublic ip

    lo:0:10.240.210.46vitural ip
    RealServerBeth0:10.240.210.44RealServerBpublic ip

    lo:0:10.240.210.46vitural ip
    lvs备机 eth0:10.240.210.45RealServerBpublic 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已成功安装。