前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >keepalived实现高可用LVS

keepalived实现高可用LVS

作者头像
小小科
发布2018-05-02 16:56:54
8610
发布2018-05-02 16:56:54
举报
文章被收录于专栏:北京马哥教育北京马哥教育

前言

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官方结构图如下所示:

一、安装配置keepalived高可用lvs

1、实验环境:

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是否可以正常访问

4、 启动keepalived

4.1 启动

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

4.2 查看vip地址,ipvs规则

4.3访问测试:

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
    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档