Linux高可用(HA)集群之Keepalived的介绍

简介:

一、Keepalived介绍
什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,那说到keepalived时不得不说的一个协议就是VRRP协议,可以说这个协议就是keepalived实现的基础,那么首先我们来看看VRRP协议。
二、VRRP协议
Virtual Route Redundancy Protocol虚拟路由冗余协议。是一种容错协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。在介绍VRRP之前先介绍一些关于VRRP的相关术语:

虚拟路由器:由一个 Master 路由器和多个 Backup 路由器组成。主机将虚拟路由器当作默认网关。

VRID:虚拟路由器的标识。有相同 VRID 的一组路由器构成一个虚拟路由器。

Master 路由器:虚拟路由器中承担报文转发任务的路由器。

Backup 路由器: Master 路由器出现故障时,能够代替 Master 路由器工作的路由器。

虚拟 IP 地址:虚拟路由器的 IP 地址。一个虚拟路由器可以拥有一个或多个IP 地址。

IP 地址拥有者:接口 IP 地址与虚拟 IP 地址相同的路由器被称为 IP 地址拥有者。

虚拟 MAC 地址:一个虚拟路由器拥有一个虚拟 MAC 地址。虚拟 MAC 地址的格式为 00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应 ARP 请求使用的是虚拟 MAC 地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实 MAC 地址。

优先级: VRRP 根据优先级来确定虚拟路由器中每台路由器的地位。

非抢占方式:如果 Backup 路由器工作在非抢占方式下,则只要 Master 路由器没有出现故障,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器。

抢占方式:如果 Backup 路由器工作在抢占方式下,当它收到 VRRP 报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的 Master 路由器的优先级高,就会主动抢占成为 Master 路由器;否则,将保持 Backup 状态。

VRRP将局域网内的一组路由器划分在一起,形成一个VRRP备份组,它在功能上相当于一台路由器的功能,使用虚拟路由器号进行标识(VRID)。虚拟路由器有自己的虚拟IP地址和虚拟MAC地址,它的外在形式和实际的物理路由完全一样。局域网内的主机将虚拟路由器的IP地址设置为默认网关,通过虚拟路由器与外部网络进行通信。

VRRP的工作过程:

(1) 虚拟路由器中的路由器根据优先级选举出 Master。Master 路由器通过发送免费 ARP 报文,将自己的虚拟 MAC 地址通知给与它连接的设备或者主机,从而承担报文转发任务;

(2) Master路由器周期性发送VRRP 报文,以公布其配置信息(优先级等)和工作状况;

(3)如果 Master 路由器出现故障,虚拟路由器中的Backup路由器将根据优先级重新选举新的 Master;

(4) 虚拟路由器状态切换时, Master 路由器由一台设备切换为另外一台设备,新的 Master 路由器只是简单地发送一个携带虚拟路由器的 MAC 地址和虚拟 IP地址信息的ARP 报文,这样就可以更新与它连接的主机或设备中的ARP 相关信息。网络中的主机感知不到 Master 路由器已经切换为另外一台设备。

(5) Backup 路由器的优先级高于 Master 路由器时,由 Backup 路由器的工作方式(抢占方式和非抢占方式)决定是否重新选举 Master。

VRRP优先级的取值范围为0到255(数值越大表明优先级越高)

三、Keepalived的工作原理

Keepalived是基于VRRP协议实现的保证集群高可用的一个服务软件,主要功能是实现真机的故障隔离和负载均衡器间的失败切换,防止单点故障。

Keepalived运行时,会启动3个进程,分别为:core(核心进程),check和vrrp

  • core:是keepalived的核心,负责主进程的启动,维护和全局配置文件的加载解析等;

  • check:负责健康检查,包括了各种检查方式,以及对应的配置解析包括LVS的配置解析,

  • vrrp:用来实现vrrp协议

总结:在vrrp协议的基础上实现了服务器主机的负载均衡,VRRP负责调度器之间的高可用。

四、Keepalived 配置文件介绍:

在yum安装好keepalived之后,keepalived会产生一个配置文件/etc/keepalived/keepalived.conf,配置文件包含了三段:全局定义段、VRRP实例定义段、虚拟服务定义段。

global_defs {

notification_email {指定keepalived在发生切换时需要发送email到的对象。 acassen@firewall.loc

}

notification_email_from rootxiaomi@163.com #指定发件人

smtp_server 127.0.0.1 #指定smtp服务器地址

smtp_connect_timeout 3 #指定smtp连接超时时间

router_id LVS_DEVEL #运行keepalived的一个标识

}

#VRRP实例定义段

vrrp_instance VI_1 {

state MASTER #指定哪个为master,哪个为backup

interface eth0 #设置实例绑定的网卡

virtual_router_id 51 #VRID标记

priority 100 #优先级,高优先级的DR会抢占为master (默认为抢占模式)

advert_int 1 #检查间隔,1秒

authentication { #设置认证

auth_type PASS #认证方式

auth_pass 1111 #认证字符串(使用 openssl rand -hex 6生成随机字符串)

}

virtual_ipaddress { #设置VIP

         192.168.159.110/16

}

virtual_server 192.168.159.110 80 {

delay_loop 6 #健康检查时间间隔,单位秒

lb_algo rr #负载调度算法,支持的算法:rr|wrr|lc|wlc|lblc|sh|dh

lb_kind DR #LVS的类型:有NAT|DR|TUN

nat_mask255.255.255.0 #子网掩码

persistence_timeout50 #会话保持时间,单位秒(可以适当延长时间以保持session) protocol TCP #转发协议类型,有TCP和UDP两种

real_server 192.168.159.151 80 { #定义RS 服务

weight 1#权重

#inhibit_on_failure #当服务器健康检查失效时,将weight设置为0不是直接从ipvs中删除

#后端RS服务器的检查 (HTTP_GET 和SSL_GET):

SSL_GET {

    url { #检查url,可以指定多个,status_codeand digest

    path /

    digest ff20ad #或者status_code 200 ....

}

connect_timeout 3 #连接超时时间

nb_get_retry 3 #重连次数

delay_before_retry 3 #重连间隔时间

}

    #也可以通过TCP_CHECK判断RealServer的健康状况:

}

}


本文转自 优果馥思 51CTO博客,原文链接:http://blog.51cto.com/youguofusi/2044113


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
23天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
109 0
|
4月前
|
Kubernetes Shell Linux
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
58 0
|
4月前
|
存储 Java Linux
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群
73 1
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
|
3月前
|
分布式计算 Hadoop Java
linux上面hadoop配置集群
linux上面hadoop配置集群
46 0
|
4月前
|
关系型数据库 MySQL Linux
Linux|集群初始化脚本--osiniit.sh简介
Linux|集群初始化脚本--osiniit.sh简介
23 0
|
4月前
|
存储 NoSQL Linux
猿创征文|linux部署Redis集群(修订版)
猿创征文|linux部署Redis集群(修订版)
146 1
|
4月前
|
网络协议 Linux 数据安全/隐私保护
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(一)
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群
79 1
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(一)
|
4月前
|
负载均衡 算法 网络协议
小白带你学习linux的LVS集群(三十六)
小白带你学习linux的LVS集群(三十六)
71 0
|
4月前
|
存储 NoSQL Linux
小白带你学习linux的Redis3.2集群(三十三)
小白带你学习linux的Redis3.2集群(三十三)
24 0
小白带你学习linux的Redis3.2集群(三十三)
|
4月前
|
监控 Linux 网络安全
Linux系统下的keepalived双机热备
在一个 LVS 服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但 是对外表现为一个虚拟 IP,主服务器会发送 VRRP 通告信息给备份服务器,当备份服务器收不到 VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。
57 0