trssc 发表于 2018-12-30 14:42:07

Keepalived实现LVS的高可用全解析

                      Keepalived实现LVS的高可用
一、概念引入:
keepalived作用:为lvs提供高可用集群
Keepalived的功能:1、将IP地址转移到另一个节点上;2、转移lvs规则;3、健康状况检查 即:health-check
Keepalived通过VRRP协议实现health-check,那么,什么叫做VRRP呢?

二、VRRP的定义
VRRP (Virtual Routing Redundent Protocol)是虚拟路由冗余协议,通过此协议我们可以把多个路由器做成一个虚拟路由器,从而来保证其中某个路由DOWN掉的时候不会造成我们内部外部网络的全部中断,其主要是实现地址漂移的
利用keepalive来实现lvs的Directory Server的高可用集群,然后在利用keepalive和lvs的高可用来实现web服务的负载均衡!

三、RS上相关软件的安装和配置
1、安装配置Web
web1和web2上分别配置相应的IP地址:
RIP1:192.16.0.210/16
RIP2:192.16.0.211/16

2、安装httpd
yum install httpd –y
echo "web1.yuanquan.com"> /var/www/html/index.html

http://blog.运维网.com/attachment/201305/204418195.png
http://blog.运维网.com/attachment/201305/204437547.png
3、配置脚本 startrs.sh 如下:

#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
./etc/rc.d/init.d/functions

VIP=192.168.0.212
host=`/bin/hostname`

case "$1" in
start)
       # Start LVS-DR real server on this machine.
      /sbin/ifconfig lo down
      /sbin/ifconfig lo up
      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

      /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
      /sbin/route add -host $VIP dev lo:0

;;
stop)

      # Stop LVS-DR real server loopback device(s).
      /sbin/ifconfig lo:0 down
      echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
      echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
      echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
      echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

;;
status)

      # Status of LVS-DR real server.
      islothere=`/sbin/ifconfig lo:0 | grep $VIP`
      isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
      if [ ! "$islothere" -o ! "isrothere" ];then
            # Either the route or the lo:0 device
            # not found.
            echo "LVS-DR real server Stopped."
      else
            echo "LVS-DR real server Running."
      fi
;;
*)
            # Invalid entry.
            echo "$0: Usage: $0 {start|status|stop}"
            exit 1
;;
esac


4、在web1上执行此脚本,来完成vip和arp参数的设置
sh startrs.sh
然后查看相关IP参数信息
ifconfig

http://blog.运维网.com/attachment/201305/204450842.png

5、将Web1配置复制到web2
http://blog.运维网.com/attachment/201305/204503606.png

然后查看相关IP参数信息
ifconfig


http://blog.运维网.com/attachment/201305/204529507.png



四、DR上相关软件的安装和配置
1、安装keepalive软件,这里使用的是已经制作好的rpm包进行安装
yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm   #不校验并自动安装
http://blog.运维网.com/attachment/201305/204625873.png
2、ipvsadm软件安装,用于后面的ipvs规则的查看。

yum –y install ipvsadm#安装用户空间工具ipvsadm
ipvsadm –L –n            #查看系统ipvs规则

http://blog.运维网.com/attachment/201305/204739282.png
如此般,我们的keepalived就安装完毕!~



五、keepalive配置文件的详解


   keepalive的配置文件是/etc/keepalived/keepalived.conf,其文件内分为:全局配置、vrrp配置、lvs配置、服务程序监控检查



(1)全局配置:


! Configuration File for keepalived            
global_defs {                           #全局配置,配置参数为{}内的内容   
notification_email {               #keepalive服务服务信息通知邮箱,可以为多个   
acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
}   
notification_email_from Alexandre.Cassen@firewall.loc   
smtp_server 127.0.0.1                   #smtp服务器   
smtp_connect_timeout 30                      #连接smtp超时时间   
router_id LVS_DEVEL   


(2):虚拟路由组
vrrp_instance VI_1{

state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication{
auth_type PASS
auth_pass password
}
virtual_ipaddress {
172.16.10.1
}
}

(3):Virtual_server与real_server设置



virtual_server 172.16.10.1 80 {
delay_loop 6
lb_algo wlc
Lb_kind DR
nat_mask 255.255.0.0
persistence_timeout 50
protocol TCP

real_server 192.168.0.21080 {
weight 1
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
virtual_server 172.16.10.1 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.0.0
persistence_timeout 50
protocol TCP

real_server 192.168.0.21180 {
weight 1
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3

}
}
(4):更改完成后复制到DS2上相同的一份,并把其中的state改成BACKUP,priority修改为100,其他的保存不变


http://blog.运维网.com/attachment/201305/204759631.png


(5)至此我们的DS高可用已经设置完了,启动keepalive测试下效果吧


    DS1和DS2上分别开启keepalive服务
    service keepalived start
    ip addr show
(6)
http://blog.运维网.com/attachment/201305/204813195.png



(7)下面用Vip访问一下我们的web,看是否能成功


http://blog.运维网.com/attachment/201305/204827691.png
   刷新一下
http://blog.运维网.com/attachment/201305/204844467.png

(8)下面模拟一下DS1 down掉吧~看看其vip能否否自动漂移
    在DS1上停止keepalive服务
    service keepalived stop
http://blog.运维网.com/attachment/201305/204858483.png


此时再看DS2的IP

http://blog.运维网.com/attachment/201305/204911294.png




再用vip进行web访问:


http://blog.运维网.com/attachment/201305/204926384.png

    以上就是keepalived所要实现的基于LVS高可用的一些功能,当然它的功能远不止这些,这里只讲了一小部分(其他以后会慢慢补充),希望对读者有所帮助哦!

  




页: [1]
查看完整版本: Keepalived实现LVS的高可用全解析