LVS+Keepalived高可用实战

一.前言

关于LVS的介绍可参考

LVS介绍及原理详解: http://blog.csdn.net/qq_30256711/article/details/78986510

LVS的应用架构详解: http://blog.csdn.net/qq_30256711/article/details/78986841

   Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。KeepalivedVRRP的完美实现,因此在介绍keepalived之前,先介绍一下VRRP的原理。

VRRP 工作机制

      在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台的物理的机器并不能同时工作,而是由一台称为MASTER的负责路由工作,其它的都是BACKUPMASTER并非一成不变,VRRP让每个VRRP路由器参与竞选,最终获胜的就是MASTERMASTER拥有一些特权,比如,拥有虚拟路由器的IP地址,我们的主机就是用这个IP地址作为静态路由的。拥有特权的MASTER要负责转发发送给网关地址的包和响应ARP请求。

      VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(multicast)(多播地址224.0.0.18)形式发送的。虚拟路由器由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址。所以,在一个虚拟路由器中,不管谁是MASTER,对外都是相同的MACIP(称之为VIP)。客户端主机并不需要因为MASTER的改变而修改自己的路由配置,对客户端来说,这种主从的切换是透明的。

      在一个虚拟路由器中,只有作为MASTERVRRP路由器会一直发送VRRP通告信息(VRRPAdvertisementmessage)BACKUP不会抢占MASTER,除非它的优先级(priority)更高。当MASTER不可用时(BACKUP收不到通告信息)多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性。由于安全性考虑,VRRP包使用了加密协议进行加密。

 

二.环境准备

本次实验用四台Centos6.5虚拟机实现LVS+Keepalived高可用方案,以下是软件版本和IP分配

操作系统:Centos 6.5 2.6.32-431.el6.x86_64

软件版本: httpd.x86_64 0:2.2.15-60.el6.centos.6

keepalived-1.2.24.tar.gz

ipvsadm-1.2.1

机器名

IP

用途

LB1_MASTER

Eth0 192.168.1.111/24

Eth0:1 192.168.1.109/24

Eth0用作DIP

Eth0:1 用作VIP

LB2_SLAVER

Eth0 192.168.1.112/24

Eth0:1 192.168.1.109/24

Eth0用作DIP

Eth0:1 用作VIP

RS1

Eth0 192.168.1.113/24

Lo:0 192.168.1.109/32

Eth0 用作RIP

Lo:0 用作VIP

RS2

Eth0 192.168.1.114/24

Lo:0 192.168.1.109/32

Eth0 用作RIP

Lo:0 用作VIP

 

 

三.LVS+Keepalived实战

1)安装lVS

Ipvsadm:版本选择

ipvsadm-1.24 适合centos5.x

ipvsadm-1.26 适合centos6.x

 

lsmod|grep ip_vs查看系统是否安装lvs

创建软链接

[root@LVS ~]#ln-s /usr/src/kernels/2.6.32-696.16.1.el6.x86_64/ /usr/src/linux

[root@LVS ~]# ll/usr/src/

total 8

drwxr-xr-x. 2root root 4096 Sep 23  2011 debug

drwxr-xr-x. 3root root 4096 Oct 25 04:25 kernels

lrwxrwxrwx. 1root root   44 Jan  4 18:44 linux ->/usr/src/kernels/2.6.32-696.16.1.el6.x86_64/

*注意:如果没有/usr/src/kernel/2.6.18-194.el5-x86_64路径,很可能是缺少kernel-devel软件包,因此

可通过yum install kernel-devel -y安装

wgethttp://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz

tar zxfipvsadm-1.26.tar.gz

cd ipvsadm-1.26

make #如果make 报错:yum install libnl* popt* -y

make install

 

/sbin/ipvsadm

[root@LB1_MASTER~]# lsmod |grep ip_vs

ip_vs                 125220  0

libcrc32c               1246  1 ip_vs

ipv6                  317340  280ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

也可用yum安装:yum installipvsadm –y

配置VIP:

[root@LB1_MASTER~]# ifconfig eth0:0 10.0.0.10/24 up

[root@LB1_MASTER~]# route add -host 10.0.0.10 dev eth0

配置LVS

[root@LB1_MASTER~]# ipvsadm -C

[root@LB1_MASTER~]# ipvsadm --set 60 5 30

[root@LB1_MASTER~]# ipvsadm -A -t 192.168.1.109 -s wrr -p 20

[root@LB1_MASTER~]# ipvsadm -a -t 192.168.1.110 -r 192.168.1.113 -g -w 1

[root@LB1_MASTER~]# ipvsadm -a -t 192.168.1.110 -r 192.168.1.114 -g -w 2

在LB2_SLAVE 上同样执行以上操作

 

RS端

[root@mysql ~]#ifconfig lo:0 192.168.1.109/32 up

 

[root@mysql ~]#route add -host 192.168.1.110 dev lo

抑制RS上的ARP广播

[root@mysql ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@mysql ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@mysql ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@mysql ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

 

Yum installhttpd -y

service httpdstart

这样LVS就搭建成功了

 

2)在两台LB上安装配置Keepalived

wgethttp://www.keepalived.org/software/keepalived-1.2.4.tar.gz

ln -s/usr/src/kernels/2.6.32-696.16.1.el6.x86_64/ /usr/src/linux

yum install libnl*popt* -y

./configure

make &&make install

安装完成后,执行以下命令

cp/usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

cp/usr/local/etc/sysconfig/keepalived /etc/sysconfig/

mkdir/etc/keepalived -p

cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

cp/usr/local/sbin/keepalived /usr/sbin/

/etc/init.d/keepalivedstart

ps -ef |grepkeepalived

至此,keepalived就安装好了

3)配置keepalived

配置LB1_MASTER keepalived.conf

! ConfigurationFile for keepalived

 

global_defs {

   notification_email {

    185604832@qq.com

   }

   notification_email_fromAlexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_1

}

 

vrrp_instanceVI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 150

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.109

    }

}

 

virtual_server192.168.1.109 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    nat_mask 255.255.255.0

    persistence_timeout 50

    protocol TCP

 

    real_server 192.168.1.113 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 8

        }

    }

    real_server 192.168.1.114 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 8

        }

    }

}

配置LB2_SLAVE keepalived.conf配置文件

! ConfigurationFile for keepalived

 

global_defs {

   notification_email {

    185604832@qq.com

   }

   notification_email_fromAlexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_1

}

 

vrrp_instanceVI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.109

    }

}

 

virtual_server192.168.1.109 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    nat_mask 255.255.255.0

    persistence_timeout 50

    protocol TCP

 

    real_server 192.168.1.113 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 8

        }

    }

    real_server 192.168.1.114 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 8

        }

    }

}

 

 

到此,LVS+keepalived高可用就配置完了


四.小结

1.LVS的Real Server 在生产环境中可使用双网卡,并且使用公网IP,将数据直接返回给用户,这里为了演示方便,使用了IP别名的方式

2.Keepalived可使用多个VIP,两台Server互为主备,这样充分利用资源,又提高性能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值