Keepalived(高可用)

        通过在两台主、备调度器上实现Keepalived高可用解决调度器单点失败问题

        主、备调度器上配置LVS,正常情况下主调度器工作

        主调度器异常时,Keepalived启用备用调度器,保证了调度器的高可用

        调度器保证了后台服务的高可用

        

    Keepalived + LVS 高可用负载均衡集群部署_Keepalived

IP地址分配:

Web1:        192.168.10.20      ifcfg-lo:0   192.168.10.50

Web2:        192.168.10.22      ifcfg-lo:0   192.168.10.50

Client:       192.168.10.40

LVS+Keepalived主调度器: 192.168.10.10  

LVS+Keepalived调度器: 192.168.10.11

 

* LVS+Keepalived服务器上可以配置多个VIP虚拟IP,每个虚拟IP对应一个服务

 如 200.1.1.10 httpd 服务的虚拟IP

    200.1.1.20 是邮件服务的虚拟IP

 

* 在LVS+Keepalived服务器上不配置eth0:0  只在真实WEB服务器上配置lo:0

 

一、两台调度器都安装keepalived

# yum install -y gcc gcc-c++ kernel-devel openssl-devel popt-devel

# tar xvzf keepalived-1.2.7.tar.gz -C /usr/src/

# cd /usr/src/keepalived-1.2.7/

# uname -r

2.6.32-358.el6.x86_64

#./configure  --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/  && make  && make install


--sysconf  // keepalived的主配置文件存放位置/etc/keepalived/keepalived.conf

--with-kernel-dir    //指定本服务器正在使用的内核文件的存放位置


# ln -s /usr/local/sbin/keepalived /sbin/

# chkconfig  keepalived on

 

二、Keepalived 配置说明


1、主调度器设置

vim /etc/keepalived/keepalived.conf

#设置报警邮件

global_defs {

  notification_email {

    admin@dave.com.cn    //发件人邮箱

  }

  notification_email_from  keepalived@localhost    //收件人邮箱 

  smtp_server 172.0.0.1    //给谁发邮件

  smtp_connect_timeout 30

  router_id LVS_devel

}

 

#VRRP实例设置

vrrp_instanceVI_1 {

  state MASTER    //主服务器就写MASTER,辅助备份就写SLAVE

  interface eth0

  virtual_router_id 51

  priority 100    //主服务器优先级要比备份的高例子:主是100  那么备用就是60

  advert_int 1     //主备服务器多长时间互相检测 这里是1

  authentication {

    auth_type pass

    auth_pass 1111   //主辅服务器密码必须一致

  }

  virtual_ipaddress {  192.168.10.50  }    //指定调度器上的VIP虚拟IP

}

 

virtual_server 192.168.10.50 80 {   //设置Real ServerWeb服务器)上虚拟IP192.168.10.50端口号80

  delay_loop 6

  lb_algo rr          //设置LVS调度算法为RR

  lb_kind DR       //设置LVS的模式为DR

  persistence_timeout 50   //50秒内再次建立链接,会发配到以前的WEB服务器上

  protocol TCP

  real_server 192.168.10.20 80 {    //指定真实服务器web上的IP和端口号

    weight 1          //设置权重为1

    TCP_CHECK {

         connect_timeout 3   //连接3秒超时

         nb_get_retry 3   //连接失败,重连3

         delay_before_retry 3   //每次连接失败3秒后在连接

    }

  }

 real_server 192.168.10.22  80 {    //指定真实服务器web上的IP和端口号

    weight 2          //设置权重为2

    TCP_CHECK {

         connect_timeout 3   //连接3秒超时

         nb_get_retry 3   //连接失败,重连3

         delay_before_retry 3   //每次连接失败3秒后在连接

    }

  }

}

 

注:其它的删除


2、备调度器设置  只要改下面两处

state SLAVE    //主服务器就写MASTER,辅助备份就写SLAVE

priority 90    //主服务器优先级要比备份的高例子:主是100  那么备用就是60


三、两台调度器上都安装LVS(ipvsadm)

# mount /dev/sr0 /media

# rpm -ihv /media/Packages/ipvsadm-1.26-2.el6.x86_64.rpm

# service ipvsadm start ; chkconfig ipvsadm on

 

在所有真实WEB服务器上配置

1、调整内核参数

# vim /etc/sysctl.conf        //调整web服务器上的内核参数

net.ipv4.conf.all.arp_announce = 2     //添加进去

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_ignore = 1

# sysctl -p


2、创建和配置lo本地循环地址的子端口

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-lo  ifcfg-lo:0


# vim ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.10.50

NETMASK=255.255.255.255     //子网掩码必须全是255

BROADCAST=192.168.10.50     //广播地址跟IP一样

ONBOOT=yes

 

五、检查测试

两台调度器上操作:

# /etc/init.d/keepalived  restart  //重启keepalived服务

# ipvsadm -Ln                // 查看LVS服务规则

# /etc/init.d/ipvsadm  save     //规则没问题,就保存

 

主调度器上操作:

# ip addr show eth0    //查看某一块网卡上面上的虚拟IP,能显示192.168.10.50

# ipvsadm -Ln        // 再查看LVS服务规则

Keepalived + LVS 高可用负载均衡集群部署_ 高可用_02


备调度器上操作:

# ip addr show eth0    //不能显示192.168.10.50

# ipvsadm -Ln         // 再查看LVS服务规则


客户端访问:

http://192.168.10.50    此时显示web2上的内容,此时查看主调度器


# ipvsadm -Ln   // 主调度器再查看LVS服务规则,已经有了连接

Keepalived + LVS 高可用负载均衡集群部署_LVS_03


过会刷新http://192.168.10.50 此时显示web1上的内容,此时再查看主调度器,192.168.10.20对应

InActConn已从0变成1,说明LVS起到了负载作用。


 

主调度器关闭,查看备调度器:

# ip addr show eth0    //此时显示192.168.10.50,说明备服务器起作用,keepalived实现了高可用