keepalived实现高可用LVS

前言

vrrp介绍:

 vrrp(Virtual Router Redundancy Protocol)虚拟路由冗余协议;就是把多个路由器或多个网关设备加入到组中,然后在这一组中虚拟出一个路由器,此虚拟路由器有真是的IP和MAC地址,客户端将网关指向此虚拟路由器的IP;客户端向此虚拟路由器的IP和MAC地址发起请求时,由活动路由器负责响应;当活动路由器发生故障时,由备份路由器响应客户端请求,同时备份路由器转变为活动路由器,从而实现客户端网关无缝切换,保证客户端无感知情况下正常上网。 

keepalived介绍:

 keepalived就是vrrp协议在Linux主机上以守护进程方式的实现,能根据配置文件生成ipvs规则,不需要ipvsadm客户端工具,还能对后端real server主机做健康状态检查,当real sever主机发生故障时,自动从ipvs中删除;当故障real server恢复后,还可以自动加入到ipvs中;从而实现业务正常运转。

keepalived官方结构图如下所示:

     Software Design.gif

一、安装配置keepalived高可用lvs

1、实验环境:

1.png

keepalived主机:

  node1: 172.16.2.14/24

  node2:172.16.2.13/24

web主机:

  node3:172.16.2.12/24

Virtual:

 Virtaul 1:172.16.2.15/24

2、安装keepalived:

# yum -y  install keepalived

2.1配置keepalived:

node1配置:

[root@node1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {   \\全局定义
   notification_email {  \\定义邮件的接收者
     node1@mylinux.com
         node2@mylinux.com
   notification_email_from root@mylinux.com  \\定义邮件的发送者
   smtp_server 127.0.0.1  \\定义邮件发送服务器
   smtp_connect_timeout 30 \\定义与邮件服务器的连接超时时长
   router_id LVS_DEVEL  \\定义主机名称,默认即可
}

vrrp_instance mylinux_1 {  \\定义实例,名称为mylinux_1
    state BACKUP   \\为备份节点
    interface eth0  \\工作在eth0接口
    virtual_router_id 51  \\虚节点路由id,每个实例节点id不能相同
    priority 98  \\优先级,
    advert_int 1  \\定义vrrp间隔时间
    authentication {  \\定义认证类型以及秘钥
        auth_type PASS  \\常用的认证类型有PASS||AH
        auth_pass 111122233334444  \\定义秘钥
    }
    virtual_ipaddress {  \\定义虚拟ip地址,也就是VIP地址
        172.16.2.15/24 dev eth0 label eth0:0 
    }\\可以直接使用172.16.2.15不加其他选项是只能使用ip addr list查看,加上此参数可以使用ifconfig查看
    virtual_routers {  定义路由
        172.16.2.15/24 dev eth0:0   \\定义主机路由
   }
}
virual_server 172.16.2.15 80 {  \\定义ipvs
   dealay_loop 6   \\定义时延
   lb_algo rr  \\调度方法,常用的调度方法有rr|wrr|lc|wlc|lblc|sh|dh
   lb_kind DR  \\ipvs的工作类型
   persistence_timeout 10  \\持久连接为10s,可根据需求自定义
   protocol TCP  \\ipvs的协议

   sorry_server 127.0.0.1 \\当后端所有real_server故障,使用本机web响应信息

   real_server 172.16.2.12 80 {  \\添加后端主机real_server
      weight 1   \\定义权重
      HTTP_GET {   \\在应用层,对后端real_server健康检测
           url {   
            path /  \\请求的url为根路径
            status_code 200  \\当返回的状态码为200时则证明此real_server正常;可以使用digest做校验,前提是事先利用genhash对请求的url做hash,然后将结果保存到此位置
           }  
          connect_timeout 3  \\后端real_server连接超时时长
          nb_get_retry 3  \\确定当重试多少次之后连接不到后端real_server认为其发生故障
          delay_before_retry 3 \\在尝试去连接时的时间间隔
         }
     }
}

node2节点配置:

[root@node2 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     node1@mylinux.com
     node2@mylinux.com
   }
   notification_email_from root@mylinux.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance mylinux_1 {
    state MASTER  \\此处MASTER,为主节点
    interface eth0
    virtual_router_id 51
    priority 100   \\优先级比backup要高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 111122233334444
    }
    virtual_ipaddress {
        172.16.2.15/24 dev eth0 label eth0:0
    }
    virtual_routers {
        172.16.2.15/24 dev eth0:0
   }
}
virual_server 172.16.2.15 80 {
   dealay_loop 6
   lb_algo rr
   lb_kind DR
   persistence_timeout 10
   protocol TCP

   sorry_server 127.0.0.1

   real_server 172.16.2.12 80 {
      weight 1
      HTTP_GET {
           url {
            status_code 200
           }
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
         }
     }
}

3、在node3安装httpd服务

3.1安装httpd服务

[root@node3 ~]# yum -y install httpd

3.2添加默认文档

[root@node3 ~]# echo "<h1>test keepalived</h1>" >/var/www/html/index.html

3.3 修改node3的相关参数:

[root@node3 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@node3 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@node3 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@node3 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

3.4 配置vip地址和主机路由:

[root@node3 ~]# ifconfig lo:0 172.16.2.15 broadcast 172.16.2.15 netmask 255.255.255.255 up
[root@node3 ~]# route add -host 172.16.2.15 dev lo:0

3.5 启动httpd

[root@node3 ~]# /etc/init.d/httpd start

3.5 访问测试http是否可以正常访问

2.png

4、 启动keepalived

4.1 启动

[root@node1 ~]# /etc/init.d/keepalived start; ssh node2 '/etc/init.d/keepalived start '

4.2 查看vip地址,ipvs规则

6.png 

7.png

4.3访问测试:

5.png

5、知识扩展:

参考/usr/share/doc/keepalived-1.2.13/samples/目录下的文件,可以参考里面的文件自定检查脚本

例如:

在全局中定义检查:
vrrp_script chk_nginx {
    killall -0 nginx   \\检查nginx进程,如果错误此主机在keepalived中的权重减去5,检查时间间隔为5s
    interval 1
    weight -5
  }
}
vrrp_script chk_haproxy {\\检查haproxy进程,如果错误此主机在keepalived中的权重减去5,检查时间间隔为5s
    killall -0 haproxy
    interval 1
    weight -5
  }
   vrrp_script chk_keealived_down {\\当/etc/keepalived/目录中有down文件时,则此服务器再keepalived中的权限将会减5,检查时间间隔为5s
  [[ -f /etc/keepalived/down ]] && exit 1 || exit 0
  interval 1
  weight -5
}
在实例中引用:
 track_script {  \\在实例中调用此检查脚本
      chk_nginx
      chk_haproxy
      chk_keepalived_down
    }

原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/6384

(0)
马行空马行空
上一篇 2015-07-21
下一篇 2015-07-24

相关推荐

  • 马哥教育网络21期+第十二周练习博客中

    4、建立httpd服务器(基于编译的方式进行),要求:  提供两个基于名称的虚拟主机: (a)www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access; (b)www2.stuX.com,页面文件目录为/web…

    Linux干货 2016-10-17
  • LVM

    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地…

    Linux干货 2016-12-17
  • 编程真难啊

    上周,在Sun的Java论坛上出现了一个这样的帖子,这个贴子的链接如下:http://forums.sun.com/thread.jspa?threadID=5404590&start=0&tstart=0 LZ的贴子翻译如下: 大家好,我是一个Java的新手,我有一个简单的问题:请问我怎么才能反转一个整数的符号啊。比如把-12转成+12。是…

    Linux干货 2015-04-03
  • LVM-逻辑盘卷管理

    LVM   一、简介         LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。   二、原理   &nb…

    Linux干货 2016-04-12
  • M22 wireshark使用方法简介

    wireshark是一款著名的开源抓包软件,它可以抓取网卡的数据包,以供网络管理员分析。 一 安装方法 debain系安装方法: sudo add-apt-repository ppa:wireshark-dev/stable sudo apt update sudo apt install wireshark 启动wireshark: sudo wires…

    2017-03-20
  • HA Cluste 的配置:keepalived:vrrp协议 双主模型

    keepalived:vrrp协议 双主模型 第一步配置出始环境: 准备两节点: 主节点:172.18.57.7 long1 备节点:172.18.57.8 long2 (1) 各节点时间必须同步; 同步时间: ~]# yum -y install chrony ~]# vim /etc/chrony.conf ~]# systemctl start chr…

    Linux干货 2017-05-15