您当前的位置:首页 > 电脑百科 > 软件技术 > 软件技术

Keepalived 的安装和配置

时间:2023-08-27 13:54:19  来源:  作者:小时候裸奔是多么潇洒

keepalived主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间fAIlover的实现。keepalived主要目的在于,其自身启动一个服务,能够实现工作在双节点或多个节点上,并且可以在内核生效的ipvs规则其中当前持有资源的节点被称为活跃节点,另外的节点被称为备节点被称为 Master/Backup。

VRRP(如果有学习过TCPIP,这一块很好理解):

虚拟路由器冗余协议(VRRP)是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟 IP 地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的 IP 地址可以作为终端主机的默认第一跳路由器。使用 VRRP 的好处是有更高的默认路径的可用性而无需在每个终端主机上配置动态路由或路由发现协议。 VRRP 包封装在 IP 包中发送。

VRRP优先级别:

VRRP每个节点是有自己的优先级的,一般优先级是从0-255,数字越大优先级越高因此可以这么定义:假如要有一初始化的状态,其中一节点优先级100另一节点优先级99,那么毫无疑问,谁的优先级高谁就是主节点所有的节点刚启动后上线都是backup状态,需通过选举的方式选择master,如果其他节点没有响应则将自己提升为master

通告机制:如果节点之间master出现故障,其会自动转移当前角色,这时我们的管理员应该知道其已切换角色keepalived支持邮件发送机制,如果其状态发生改变的话可以通过邮件方式发送给管理员,使管理员第一时间可以查看其活动状态,方便之后的运维工作

keepalived核心组成部分
1.vrrp的实现
2.virtual_server:基于vrrp作为所谓通告机制之上的
3.vrrp_script:以外部脚本方式进行检测

Keepalived 的安装和配置

 

KeepAlived的安装:

[root@Nginx-one ~]# tar zxf keepalived-1.2.13.tar.gz 
[root@Nginx-one ~]# cd keepalived-1.2.13
[root@Nginx-one keepalived-1.2.13]# yum install kernel-devel openssl-devel libnl-devel
[root@Nginx-one keepalived-1.2.13]#./configure --prefix=/ --mandir=/usr/local/share/man/--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/
[root@Nginx-one keepalived-1.2.13]# make && make install

Keepalived configuration
------------------------
Keepalived version       :1.2.13        ##version##
Compiler: gcc				##编译工具##
Compiler flags           :-g -O2	##参数##
ExtraLib:-lssl -lcrypto -lcrypt 	##扩展库##
Use IPVS Framework:Yes                  ##LVS核心代码框架,不使用LVS可以编译时disable-lvs##
IPVS sync daemon support :Yes           ##IPVS同步进程,是否开启取决于 IPVS FRAMEWORK###
IPVS use libnl           :Yes           ##是否使用libnl库##
fwmark socket support    :Yes           ##套接字框架##
Use VRRP Framework:Yes                  ##VRRP框架,keepalived的核心进程vrrpd##
Use VRRP Vmac            :Yes           ##VRRP Virtual mac##
SNMP support             :No
SHA1 support             :No
UseDebug flags           :No
[root@Nginx-one keepalived-1.2.13]# make && make install

KeepAlived的所有配置都在一个配置文件里设置,支持的配置可分为以下三类:

1、全局配置(global configure)
2、VRRPD配置
3、LVS配置

很明显,全局配置就是对整个keepalived生效的配置,不管是否使用LVS,VRRPD是keepalived的核心,LVS配置只在要使用keepalived来配置和管理LVS时使用,如果仅使用keepalived来做HA,LVS不需要配置。
配置文件都是以块(block)形式组织的,每个块都在{}范围内,#和!表示注释。

全局定义(global definition)

global_defs {
   notification_email {##指定keepalived在发生事件(如切换)需要发送Email的对象,多个写多行##
     itchenyi@gmail.com
   }
   notification_email_from itchenyi@gmail.com
   smtp_server 127.0.0.1##SMTP服务器##
   smtp_connect_timeout 30##链接超时时间##
   router_id Nginx-one			##路由标识,这里用主机名##
}

VRRPD配置(VRRP同步组(syncchroization group) 和 VRRP实例 (VRRP instance))

不 使用SYNC Group的话,如果路由有2个网段,一个内网,一个外网,每个网段开启一个VRRP实例,假设VRRP配置为检查内网,那么当外网出现问题 时,VRRPD会认为自己是健康的,则不会发送Master和Backup的切换,从而导致问题,Sync Group可以把两个实例都放入Sync Group,这样的话,Group 里任何一个实例出现问题都会发生切换。

vrrp_instance VI_1 {   ##虚拟路由标识##
state MASTER           ##初始状态,默认,选举产生后才可以升级为Master ,这里明确定义其为Master##
interface eth1         ##选举通过那个网卡接口##
virtual_router_id 10   ##虚拟路由的ID号,一般不大于255,可选IP最后一段使用##
priority 100           ##初始优先级,选举过程中判断的依据,和路由的概念一样##
advert_int 1           ##检查间隔,默认1s##
authentication {       ##认证机制##
auth_type PASS         ##认证方式,PASS为明文##
auth_pass iPython/ target=_blank class=infotextkey>Python      ##认证密码##
}
virtual_ipaddress {    ##虚拟地址池##
1.1.1.100
}
}

配置Backup 配置如下:

[root@nginx-two keepalived-1.2.13]# cat /software/keepalived/etc/keepalived/keepalived.conf 
2.! Configuration File for keepalived
3. 
4.global_defs {
5.   notification_email {
6.     itchenyi@gmail.com
7.   }
8.   notification_email_from itchenyi@gmail.com
9.   smtp_server 127.0.0.1
10.   smtp_connect_timeout 30
11.   router_id nginx-two
12.}
13. 
14.vrrp_instance VI_1 {
15.    state BACKUP
16.    interface eth1
17.    virtual_router_id 20
18.    priority 50
19.    advert_int 1
20.    authentication {
21.        auth_type PASS
22.        auth_pass ipython
23.    }
24.    virtual_ipaddress {
25.        1.1.1.100
26.    }
27.}
28. 
29.###其他配置:####
30.	nopreempt 设置为不抢占,这个配置只能设置在state为BACKUP的节点上,并且这个机器的优先级必须比另一台高
31.	preempt_delay 抢占延迟,默认5分钟
32.	debug debug级别
33.	notify_master 切换到Master时执行的脚本
34. 
35.##start##
36.[root@Nginx-one keepalived-1.2.13]# service keepalived start
37.Starting keepalived:   [  OK  ]
38. 
39.###观察其日志文件###
40.[root@Nginx-one keepalived-1.2.13]# tail -f /var/log/messages 
41.Aug  3 00:02:12 Nginx-one Keepalived[8177]: Starting Keepalived v1.2.13 (08/03,2014)
42.Aug  3 00:02:12 Nginx-one Keepalived[8178]: Starting Healthcheck child process, pid=8180
43.Aug  3 00:02:12 Nginx-one Keepalived[8178]: Starting VRRP child process, pid=8181
44.####当前的IP地址####
45.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]:.NETlink reflector reports IP 1.1.1.10 added
46.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]: Netlink reflector reports IP fe80::20c:29ff:fecb:90a2 added
47.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]: Registering Kernel netlink reflector
48.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]: Registering Kernel netlink command channel
49.Aug  3 00:02:13 Nginx-one Keepalived_healthcheckers[8180]: Netlink reflector reports IP 1.1.1.10 added
50.Aug  3 00:02:13 Nginx-one Keepalived_healthcheckers[8180]: Netlink reflector reports IP fe80::20c:29ff:fecb:90a2 added
51.Aug  3 00:02:13 Nginx-one Keepalived_healthcheckers[8180]: Registering Kernel netlink reflector
52.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]: Registering gratuitous ARP shared channel
53.Aug  3 00:02:13 Nginx-one Keepalived_healthcheckers[8180]: Registering Kernel netlink command channel
54.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]: Opening file '/etc/keepalived/keepalived.conf'.
55.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]: Configuration is using : 62834 Bytes
56.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]: Using LinkWatch kernel netlink reflector...
57.Aug  3 00:02:13 Nginx-one Keepalived_vrrp[8181]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
58.###打开并加载配置文件####
59.Aug  3 00:02:13 Nginx-one Keepalived_healthcheckers[8180]: Opening file '/etc/keepalived/keepalived.conf'.
60.Aug  3 00:02:13 Nginx-one Keepalived_healthcheckers[8180]: Configuration is using : 7377 Bytes
61.Aug  3 00:02:13 Nginx-one Keepalived_healthcheckers[8180]: Using LinkWatch kernel netlink reflector...
62.####切换为Master 状态####
63.Aug  3 00:02:14 Nginx-one Keepalived_vrrp[8181]: VRRP_Instance(VI_1) Transition to MASTER STATE
64.Aug  3 00:02:15 Nginx-one Keepalived_vrrp[8181]: VRRP_Instance(VI_1) Entering MASTER STATE
65.Aug  3 00:02:15 Nginx-one Keepalived_vrrp[8181]: VRRP_Instance(VI_1) setting protocol VIPs.
66.####在接口上添加VIP###
67.Aug  3 00:02:15 Nginx-one Keepalived_vrrp[8181]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 1.1.1.100
68.Aug  3 00:02:15 Nginx-one Keepalived_healthcheckers[8180]: Netlink reflector reports IP 1.1.1.100 added
69.Aug  3 00:02:20 Nginx-one Keepalived_vrrp[8181]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 1.1.1.100
70. 
71. 
72.###查看是否添加VIP###
73.[root@Nginx-one keepalived-1.2.13]# ip a show|awk '/inet /'
74.    inet 127.0.0.1/8 scope host lo
75.    inet 1.1.1.10/8 brd 1.255.255.255 scope global eth1
76.    inet 1.1.1.100/32 scope global eth1
77. 
78.停止MASTER,查看BACKUP的状态转移
79.[root@Nginx-one keepalived-1.2.13]# service keepalived stop
80.Stopping keepalived:                                       [  OK  ]
81. 
82. 
83.[root@nginx-two keepalived-1.2.13]# tail -f /var/log/messages 
84.Aug  3 00:05:01 nginx-two Keepalived_vrrp[5148]: Using LinkWatch kernel netlink reflector...
85.Aug  3 00:05:01 nginx-two Keepalived_vrrp[5148]: VRRP_Instance(VI_1) Entering BACKUP STATE
86.Aug  3 00:05:01 nginx-two Keepalived_healthcheckers[5147]: Using LinkWatch kernel netlink reflector...
87.Aug  3 00:05:01 nginx-two Keepalived_vrrp[5148]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
88.Aug  3 00:05:40 nginx-two Keepalived_vrrp[5148]: VRRP_Instance(VI_1) Transition to MASTER STATE
89.Aug  3 00:05:41 nginx-two Keepalived_vrrp[5148]: VRRP_Instance(VI_1) Entering MASTER STATE
90.Aug  3 00:05:41 nginx-two Keepalived_vrrp[5148]: VRRP_Instance(VI_1) setting protocol VIPs.
91.Aug  3 00:05:41 nginx-two Keepalived_healthcheckers[5147]: Netlink reflector reports IP 1.1.1.100 added
92.Aug  3 00:05:41 nginx-two Keepalived_vrrp[5148]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 1.1.1.100
93.Aug  3 00:05:46 nginx-two Keepalived_vrrp[5148]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 1.1.1.100
94. 
95.####和路由协议一样,当MASTER上线被检测到会抢占VIP,可以想象的到,Keepalived也支持非抢占模式,只有BACKUP在变成MASTER后宕机了,才会转移VIP,说起来怎么这么绕口####

定义Keepalived的检测机制

###一只简单的脚本判断nginx 是否在工作###
[root@nginx-two ~]# cat nginx_check.sh 
#!/bin/bash
alive=`netstat -pant|awk '/0.0.0.0:80/&&/LISTEN/'|wc -l`
if[ $alive -eq 1];then
   exit 0
else
   exit 1 
fi
###增加keepalived配置###
vrrp_script nginx_check
{
    script "/root/nginx_check.sh"
    interval 1      ###检测时间间隔 1s###
    weigh -60      ###如果条件成立,权重-60###
}
####将track_script块加入instance 配置块####
    track_script
    {
        nginx_check
    }
[root@Nginx-one ~]# service keepalived restart
Stopping keepalived:[  OK  ]
Starting keepalived:[  OK  ]
###无须质疑,只要nginx 的80端口是正常监听的,主就还是主###
[root@Nginx-one ~]# ip a show|awk '/inet /'
    inet 127.0.0.1/8 scope host lo
    inet 1.1.1.10/8 brd 1.255.255.255 scope global eth1
    inet 1.1.1.100/32 scope global eth1

###停止Nginx服务###
[root@Nginx-one ~]# service nginx stop
Stopping nginx:[  OK  ]
###看看日志###
Aug300:52:13Nginx-one Keepalived_vrrp[8490]: VRRP_Script(nginx_check) failed
Aug300:52:14Nginx-one Keepalived_vrrp[8490]: VRRP_Instance(VI_1)Entering FAULT STATE
Aug300:52:14Nginx-one Keepalived_vrrp[8490]: VRRP_Instance(VI_1) removing protocol VIPs.
Aug300:52:14Nginx-one Keepalived_vrrp[8490]: VRRP_Instance(VI_1)Nowin FAULT state
Aug300:52:14Nginx-one Keepalived_healthcheckers[8489]:Netlink reflector reports IP 1.1.1.100 removed

###Backup机器变成Master了###
[root@nginx-two ~]# ip a show|awk '/inet /'
    inet 127.0.0.1/8 scope host lo
    inet 1.1.1.20/8 brd 1.255.255.255 scope global eth1
    inet 1.1.1.100/32 scope global eth1


Tags:Keepalived   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Keepalived 的安装和配置
keepalived主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。keepalived主要目的在于,其自身启动一个服务,能够实现工作在双节...【详细内容】
2023-08-27  Search: Keepalived  点击:(233)  评论:(0)  加入收藏
MySQL + Keepalived 双主热备搭建
什么是双主复制在传统的主从复制架构中,从库仅仅是作为主库数据的备份,当主库发生故障时,数据库将停止对外提供服务,并且主库故障后手动进行主从切换的过程也较为繁琐。为了解决...【详细内容】
2023-07-04  Search: Keepalived  点击:(265)  评论:(0)  加入收藏
Linux + Nginx + Keepalived 高可用配置教程
众所周知,NGINX 是一个广受好评的 web 服务器,也可以用作反向代理,负载均衡器和 HTTP 缓存。keepalive 工作在虚拟路由器冗余协议 vrrp (Virtual Router Redundancy Protocol)...【详细内容】
2023-03-17  Search: Keepalived  点击:(242)  评论:(0)  加入收藏
LVS+Keepalived+Nginx高可用分布式集群
LVS简介LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集...【详细内容】
2020-06-04  Search: Keepalived  点击:(378)  评论:(0)  加入收藏
linux高级技巧:10分钟自主搭建keepalived
1.keepalived简介Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障。使用多台节点安装keepalived。其他的节点用来提供真实的服务,同样的,他...【详细内容】
2019-09-24  Search: Keepalived  点击:(634)  评论:(0)  加入收藏
▌简易百科推荐
Win10/Win11和 macOS用户反馈:谷歌云服务“捆绑”系统 DNS 设置
IT之家 4 月 6 日消息,谷歌公司承认旗下的 Google One 订阅服务中存在问题,在 Windows 10、Windows 11 以及 macOS 系统上会更改系统 DNS 设置,变更为 8.8.8.8 地址。Google On...【详细内容】
2024-04-08    IT之家  Tags:Win10   点击:(4)  评论:(0)  加入收藏
微软 Edge 浏览器将迎来“内存限制器”功能,用户可自主控制 Edge 内存占用
IT之家 3 月 28 日消息,微软即将为其 Edge 浏览器带来一项实用新功能,据悉该公司正在测试一项内置的内存限制器,这项功能可以让用户限制 Edge 所占用的内存,防止浏览器超出内存...【详细内容】
2024-03-29    IT之家  Tags:Edge   点击:(14)  评论:(0)  加入收藏
一寸照片的大小如何压缩?四个实测效果很好的方法
一寸照片作为生活中常见的尺寸之一,常用于各类证件照与证明文件的制作。然而,受限于其较为狭小的尺寸,上传及打印过程中很容易出现尺寸超限的情况。所以,这个时候就需要对其体积...【详细内容】
2024-03-18  宠物小阿涛    Tags:压缩   点击:(12)  评论:(0)  加入收藏
手机投屏到电脑/电视的方法
方法一:Win10自带的投影功能1、将手机和电脑连接同一个无线网络。2、选择【开始】>【设置】>【系统】>【投影到此电脑】3、将默认的始终关闭的选项更改为所有位置都可用。4、...【详细内容】
2024-03-18    老吴讲I  Tags:投屏   点击:(15)  评论:(0)  加入收藏
微软商店怎么卸载应用 一分钟快速看懂!
微软商店怎么卸载应用 一分钟快速看懂!微软公司(Microsoft Corporation)是一家全球领先的科技企业,总部位于美国华盛顿州的雷德蒙德。成立于1975年,由比尔·盖茨和保罗&mid...【详细内容】
2024-02-27  婷婷说体育    Tags:微软商店   点击:(35)  评论:(0)  加入收藏
微软Edge浏览器新功能:手机上传 配对设备直接传文件
2月21日,微软最新的稳定版本Edge浏览器在Windows 11/10端加入了“手机上传”功能。这一功能允许用户直接从移动设备上上传文件,适用于所有网站,并且没有文件格式限制。要使用这...【详细内容】
2024-02-21    中关村在线  Tags:Edge   点击:(127)  评论:(0)  加入收藏
什么是虚拟机?你知道吗?
谁都没想到 Sun 公司技术如此的强大,却在之后的岁月里逐渐走向陨落,因为不懂销售和运营,导致公司财务逐渐出现亏损,在 2009 年,Oracle 公司以现金方式收购 Sun 公司,交易价格达 74...【详细内容】
2024-02-19  Java极客技术  微信公众号  Tags:虚拟机   点击:(44)  评论:(0)  加入收藏
怎么查看电脑使用记录
查看电脑使用记录是一项常见的操作,可以帮助用户了解自己或其他人在电脑上进行了哪些操作。下面是一个详细的解释,包括查看浏览历史、文件访问记录、应用程序使用记录以及其他...【详细内容】
2024-02-06  编程资料站    Tags:使用记录   点击:(81)  评论:(0)  加入收藏
电脑虚拟内存怎么设置?1分钟快速增加内存!
“我电脑里的内存好像不太够用,因此,我想在电脑里增加一些虚拟内存。不知道我应该怎么操作呢?有什么比较简单的此操作方法吗?” 虚拟内存是计算机系统内存管理的一种技术,它为程...【详细内容】
2024-02-06  数据蛙恢复专家    Tags:虚拟内存   点击:(61)  评论:(0)  加入收藏
新手制作ai写真都是用哪些工具?
春节即将来临,你的朋友圈是否已经被各种春节主题的个人写真刷屏了?看到那么多美照,你是否也心动了?其实,制作个人写真并不需要专门去拍摄,现在有很多AI写真软件可以轻松制作出自己...【详细内容】
2024-01-31  雨后海棠    Tags:ai写真   点击:(60)  评论:(0)  加入收藏
站内最新
站内热门
站内头条