Haproxy+keepalived架构实践

Haproxy+keepalived架构实践
2.1 VRRP介绍
VRRP中的角色
VRRP路由器
VRRP路由器就是一台路由器,只不过上面运行了VRRP协议的程序,比如我们等下要安装的Keepalived就是运行了VRRPD这样的程序来实现VRRP协议,我们可以理解为一台物理路由器,需要注意的是一台VRRP路由器可以位于多个虚拟路由器。
VRRP虚拟路由器
VRRP虚拟路由器通常有多台物理的VRRP路由器组成,这多台物理路由器组成一个Pool,虚拟路由器在生产环境中可以有多个,通过VRID进行标示。
MASTER和BACKUP
在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台路由器并不同时工作,而是由一台称之为MASTER的负责路由工作,其它的都是BACKUP。MASTER并不是一成不变的,VRRP协议让每个VRRP路由器参与竞选,竞选成功的就可以成为MASTER。MASTER拥有虚拟路由器的IP地址,我们把这个IP地址称之为VIP,MASTER负责转发发送给网关地址的数据包和响应ARP请求。
VRRP是如何工作的?
VRRP通过竞选协议来实现虚拟路由器的功能,协议报文通过IP多播(多播地址:224.0.0.18)方式进行发送。虚拟路由器有VRID(范围0-255)和一组IP地址组成,对外表现为一个MAC地址:00-00-5E-00-01-{VRID}。所以,在一个虚拟路由器中,不管谁是Master,对外都是相同的MAC地址和IP地址。如果其中一台虚拟路由器Down机,角色发送切换,那么客户端并不需要因为Master的变化修改自己的路由设置,可以做到透明的切换。这样就实现了如果一台机器宕机,那么备用的机器会拥有MASTER上的IP地址,实现高可用功能。
VRRP是如何通信的?
在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP广播包,BACKUP的路由器会被动接收数据库,不会抢占MASTER。当MASTER不可用时,这个时候BACKUP就收不到广播包,多台BACKUP中优先级最高的这台会抢占成为MASTER。这个抢占的速度非常快小于1s,几乎不会影响生产应用。为了安全考虑VRRP的数据包使用了加密协议进行加密。

2.2 Keepalived部署
[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz
[root@linux-node1 src]# tar zxf keepalived-1.2.19.tar.gz
[root@linux-node1 src]# cd keepalived-1.2.19
[root@linux-node1 keepalived-1.2.19]# ./configure --prefix=/usr/local/keepalived-1.2.19
[root@linux-node1 keepalived-1.2.19]# make && make install
[root@linux-node1 keepalived-1.2.19]# cp keepalived/etc/init.d/keepalived.init /etc/init.d/keepalived
[root@linux-node1 keepalived-1.2.19]# chmod +x /etc/init.d/keepalived
[root@linux-node1 keepalived-1.2.19]# cp keepalived/etc/init.d/keepalived.sysconfig /etc/sysconfig/keepalived
[root@linux-node1 keepalived-1.2.19]# cp keepalived/etc/keepalived/keepalived.conf /etc
2.3 Keepalived配置详解
Keepalived的所有配置都在一个配置文件里面,主要分为三大类:

  1. 全局配置
  2. VRRPD配置
  3. LVS配置
    配置文件是以配置块的形式存在,每个配置块都在一个闭合的{}范围内,所有编辑的时候注意大括号的闭合问题。#和!开头的都是注释。
    2.3.1 全局配置
    全局配置是对整个Keepalived生效的配置,一个典型的配置如下:
    global_defs {
    #设置keepalived再发生事件(比如切换)的时候,需要发送到的email地址,可以设置多个,每行一个。
    notification_email {
    shundong.zhao@dianjoy.com
    }
    #设置通知邮件发送来自于哪里
    notification_email_from keepalived@dianjoy.com
    #指定发送邮件的smtp服务器
    smtp_server 127.0.0.1
    #设置smtp连接超时事件,单位是秒
    smtp_connect_timeout 30
    #设置route_id,是运行keepalived的一个标示,多个集群设置为不同的。
    router_id nginx_ha
    }
    下面我们拿几个具体的实例来讲解Keepalived配置文件
    2.3.2 VRRPD配置
    VRRPD的配置是Keepalived比较重要的配置,主要分为两个部分VRR同步组合VRRP实例,我们先说VRRP实例,也就是要想使用VRRP进行高可用选举,那么就一定需要配置一个VRRP实例,在实例中来定义VIP、服务器角色等。
    vrrp_instance NGINX_HA {
    #指定实例初始状态,实际的MASTER和BACKUP是选举决定的
    state MASTER
    #指定实例绑定的网卡
    interface eth0
    #设置VRID标记,多个集群不同重复(0…255)
    virtual_router_id 51
    #设置优先级,优先级高的会被竞选为Master,Master要高于BACKUP至少50
    priority 150
    #检查的时间间隔,默认是1s。
    advert_int 1
    #设置验证的类型和密码。
    authentication {
    auth_type PASS
    auth_pass nginx
    }
    #设置VIP,可以设置多个,用于切换时的地址绑定。
    virtual_ipaddress {
    192.168.99.176
    192.168.99.170
    }
    }
    可选的选项:
    #设置路由,可以设置多条,用于切换时执行。
    virtual_routes{
    #src to / via | gw dev scope
    }
    #track_interface 设置额外的监控网卡,如果任何一个出现故障,就会进入FAULT状态
    #mcast_src_ip 设置发送多播的地址,默认是绑定的网卡的primary IP
    2.3.3 配置案例
    ! Configuration File for keepalived

global_defs {

notification_email {

saltstack@example.com

}

notification_email_from keepalived@example.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id 150

}

vrrp_instance haproxy_ha {

state Master

interface eth0

virtual_router_id 36

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.56.20

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值