keepalived高可用集群技术介绍及实战演练
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keepalived高可用集群技术介绍及实战演练相关的知识,希望对你有一定的参考价值。
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
二、Keepalived的特性
配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能
稳定性强:keepalived是一个类似于layer3, 4&7交换机制的软件,具备我们平时说的第3层、第4层和第7层交换机的功能,常用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,监测机制灵活,成功率高。
成本低廉:开源软件,可直接下载配置使用,没有额外费用。
应用范围广:因为keepalived可应用在多个层面,所以它几乎可以对所有应用做高可用,包括LVS、数据库、http服务、nginx负载均衡等等
支持多种类型:支持主从模式、主主模式高可用,可根据业务场景灵活选择。
三、keepalived工作流程
keepalived主要模块是VRRP Stack和Cheackers,实现HA集群中失败切换(Failover)功能。Keepalived通过VRRP功能能再结合LVS负载均衡软件即可部署一个高性能的负载均衡集群系统。Cheackers主要实现可实现对服务器运行状态检测和故障隔离。,其中ipvs和realserver健康状态检查通过配置文件配置就可以实现,而其他服务高可用则需要通过自己编写脚本,然后配置keepalived调用来实现。Keepalived运行有3个守护进程。父进程主要负责读取配置文件初始化、监控2个子进程等;然后两个子进程,一个负责VRRP,另一个负责Cheackers健康检查。其中父进程监控模块为WacthDog,工作实现:每个子进程打开一个接受unix域套接字,父进程连接到那些unix域套接字并向子进程发送周期性(5s)hello包。上图是Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)。内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部份。
四、什么是vrrp协议
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)可以认为是实现路由器高可用的协议,简单的说,当一个路由器故障时可以由另一个备份路由器继续提供相同的服务。VRRP根据优先级来确定虚拟路由器中每台路由器的角色(Master路由器或Backup路由器)。VRRP优先级的取值范围为0到255(数值越大表明优先级越高),可配置的范围是1到254,优先级0为系统保留给路由器放弃Master位置时候使用,255则是系统保留给IP地址拥有者使用。优先级越高,则越有可能成为Master路由器。当两台优先级相同的路由器同时竞争Master时,比较接口IP地址大小。接口地址大者当选为Master。
五、keepalived的应用场景
在网络层、数据链路层,运行着4个重要的协议:互联网协议IP、互联网控制报文协议ICMP、地址转换协议ARP以及反向地址转换协议RARP。Keepalived在网络层采用的最常见的工作方式是通过ICMP协议向服务器集群中的那个节点发送一个ICMP数据包(类似于ping实现的功能),如果某个节点没有返回响应数据包,那么认为此节点发生了故障,Keepalived将报告次节点失效,并从服务器集群中剔除故障节点。在传输层,提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP。传输控制协议TCP可以提供可靠的数据传输服务、Ip地址和端口代表TCP的一个连接端。要获得TCP服务,需要在发送机的一个端口上和接收机的一个端口上建立连接,而Keepalived在传输层就是利用TCP协议的端口连接和扫描技术来判断集群点是否正常的。比如,对于常见的WEB服务默认的80端口、SSH服务默认的22端口等,Keepalived一旦在传输层探测到这些端口没有响应数据返回,就认为这些端口发生异常,然后强制将此端口对应得节点从服务器集群组中移除。在应用层,可运行FTP、TELNET、HTTP、DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived的工作方式;例如:用户可以通过编写程序来运行keepalived。而keepalived将根据用户的设定检测各种程序或服务是否运行正常,如果Keepalived的检测结果与用户设定不一致时,Keepalived将把对应的服务从服务器中移除。
六、keepalived配置文件分析
global_defs { #全局配置
notification_email { #realserver故障时通知邮件的收件人地址,可以多个
[email protected]
}
notification_email_from root_keepalived #发件人信息(可以随意伪装,因为邮件系统不会验证处理发件人信息)
smtp_server 127.0.0.1 #发邮件的服务器(一定不可为外部地址)
smtp_connect_timeout 30 #连接超时时间
router_id KEEPALIVED #路由器的标识(可以随便改动)
}
vrrp_instance VI_1 { #配置虚拟路由器的实例,VI_1是自定义的实例名称
state MASTER #初始状态,MASTER|BACKUP,当state指定的instance的初始化状态,在两台服务器都启动以后,马上发生竞选,优先级高的成为MASTER,所以这里的MASTER并不是表示此台服务器一直是MASTER
interface eth0 #通告选举所用端口
virtual_router_id 51 #虚拟路由的ID号(一般不可大于255)
priority 101 #优先级信息 #备节点必须更低
advert_int 1 #VRRP通告间隔,秒
authentication {
auth_type PASS #认证机制
auth_pass 5344 #密码(尽量使用随机)
}
nopreempt #非抢占模式
virtual_server 192.168.18.240 80 { #设置一个virtual server:VIP:Vport
delay_loop 3 # service polling的delay时间,即服务轮询的时间间隔
lb_algo rr #LVS调度算法:rr|wrr|lc|wlc|lblc|sh|dh
lb_kind DR #LVS集群模式:NAT|DR|TUN
persistence_timeout 120 #会话保持时间(持久连接,秒),即以用户在120秒内被分配到同一个后端realserver
nat_mask 255.255.255.255
protocol TCP #健康检查用的是TCP还是UDP主要,后端有几台这里就要设置几个
real_server 192.168.18.251 80 { #后端真实节点主机的权重等设置,主要,后端有几台这里就要设置几个
weight 1 #给每台的权重,rr无效
inhibit_on_failure #表示在节点失败后,把他权重设置成0,而不是IPVS中删除
url {
path /
status_code 200
}
TCP_CHECK {
connect_timeout 2 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 1 #重连间隔
}
七、实战演练
实现基于keepalived高可用集群:
一、环境准备:centos系统主从两台、yum源、防火墙关闭、各节点时钟服务同步、各节点之间可以通过主机名互相通信
二、安装步骤:
1、iptables -F && setenforing 清空防火墙策略,关闭selinux 2、两台服务器都使用yum方式安装keepalived服务
三、修改配置文件:
1.修改/etc/keepalived/keepalived.conf配置文件内容 2、对glob段进行定义,添加管理员邮箱等 3、对vrrp_instance 进行配置,配置一主一从,定义一个基于虚拟IP的实例
四、检验高可用的效果
1、配置完成后,观察两侧IP的是情况,看是否虚拟IP在主上配置成功 2、检查主从服务日志,服务是否运行正常,监测机制是否有效 3、停掉主服务上的keepalived服务,看虚拟IP是否正常转移到从节点上 4、观察日志,了解整个切换过程,之后启动主节点服务,看虚拟IP能否被主服务再接管
实现keepalived企业级高可用基于LVS-DR模式的应用实战
一、环境准备:两台centos系统做DR、一主一从,两台实现过基于LNMP的电子商务网站(提前分配好各个主机的角色并注意不要搞混IP地址)
二、安装步骤:
1、两台服务器都使用yum方式安装keepalived服务
2、iptables -F && setenforing 清空防火墙策略,关闭selinux
三、配置基于DR模式的LVS负载均衡集群:
1、修改keepalived主(lvs-server-master)配置文件实现全局配置以及virtual_instance
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 172.17.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface ens34
virtual_router_id 87
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 666666
}
virtual_ipaddress {
172.17.251.197
}
}
2、修改keepalived主(lvs-server-master)配置文件实现virtual_server
virtual_server 172.17.251.197 80 {
delay_loop 6
lb_algo wrr (调度算法)
lb_kind DR (工作模式)
nat_mask 255.255.255.255
persistence_timeout 600
protocol TCP
real_server 172.17.253.114 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.17.250.142 80{
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
3、修改keepalived从(lvs-server-backup)配置文件实现virtual_instance
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 172.17.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface ens34
virtual_router_id 87
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 666666
}
virtual_ipaddress {
172.17.251.197
}
}
4、修改keepalived从(lvs-server-backup)配置文件实现virtual_server
virtual_server 172.17.251.197 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.255
persistence_timeout 600
protocol TCP
real_server 172.17.253.114 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.17.250.142 80{
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
注意:
1、在配置完keepalived配置文件之后需要检查real server中是否配置VIP到本地回环网卡lo上,并只广播自己。
2、在配置文件中需要注意借口不要写错
3、keepalived主(lvs-server-master)配置文件与从配置文件除了 state(状态)、interface(VIP接口)、 priority(权重)不同之外其他的内容都一样,所以可以在完成主配置文件后直接将主配置文件copy到从配置文件,修改对应的信息即可。
本文出自 “13145479” 博客,请务必保留此出处http://13155479.blog.51cto.com/13145479/1980827
以上是关于keepalived高可用集群技术介绍及实战演练的主要内容,如果未能解决你的问题,请参考以下文章