Keepalived
- 一、What is Keepalived?
- 二、什么是高可用?
- 三、keepalived故障转移实现高可用
- 四、keepalived运行环境
- 1、下载安装
- 2、启动keepalived
- 3、Keepalived配置文件
- 四、Nginx高可用之Keepalived
- 配置文件1
- 配置文件2
- Nginx监控脚本
- 运行原理
- 五、MySQL高可用之Keepalived
- 六、MySQL+MyCAT高可用方案
一、What is Keepalived?
官网:https://www.keepalived.org
Keepalived是一个用C语言
编写的路由软件,本项目的主要目标是为Linux系统和基于Linux的基础设施提供简单、健壮的负载均衡和高可用性的工具。Loadbalance framework
依赖于著名且广泛使用的Linux虚拟服务器(IPVS)内核模块提供Layer4负载均衡
。Keepalived实现了一组检查程序,以便根据运行状况动态地、自适应地维护和管理负载均衡的服务器池。另一方面利用VRRP协议实现了高可用性。VRRP是路由器故障转移的基础模块。此外,Keepalived实现了一组连接到VRRP有限状态机的钩子,提供低层和高速的协议交互。为了提供最快的网络故障检测,Keepalived实现了BFD协议。VRRP状态转换可以考虑BFD提示来驱动快速的状态转换。Keepalived框架可以独立使用,也可以一起使用,以提供弹性基础设施;
Keepalived是自由软件;您可以根据自由软件基金会(free software Foundation)发布的GNU通用公共许可证(GNU General Public License)的条款重新分发和/或修改它;许可证的版本2,或(由您选择)任何更高版本;
1、Keepalived是一个用C语言编写的开源的路由软件;
2、基于Linux虚拟服务器(IPVS)提供负载均衡;(结合LVS一起)
3、基于VRRP协议实现了高可用;
Github:https://github.com/acassen/keepalived
作者:法国巴黎 Alexandre Cassen(acassen)
二、什么是高可用?
HA(High Available),高可用性是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的;
在实际应用中,通常用平均无故障时间(MTFF)来度量系统的可靠性,用平均维护时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTFF/(MTFF+MTTR) (平均无故障时间/总时间,总时间=平均无故障时间+平均维护时间),比较好的情况是宕机时间不超过6分钟;
具体HA(可用性)衡量标准:
99%可用性,则一年宕机时间不超过4天
99.9%可用性,则一年宕机时间不超过10小时
99.99%可用性,则一年宕机时间不超过1小时
99.999%可用性,则一年宕机时间不超过6分钟
三、keepalived故障转移实现高可用
Keepalived软件起初是专为LVS负载均衡软件设计的(Keepalived+LVS天作之合),用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol 虚拟路由器冗余协议)功能,因此Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案;
Keepalived高可用服务之间的故障转移是通过 VRRP 实现;
VRRP 协议即 Virtual Router Redundancy Protocol,虚拟路由器冗余协议, 为了解决局域网内默认网关单点故障的问题;
为了解决局域网内默认网关单点故障的问题;
在 Keepalived服务正常工作时,主 Master节点会不断地向备Backup节点发送(组播/多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是备Backup节点调用自身的接管程序,接管主Master节点的IP资源及服务,而当主 Master节点恢复服务时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备Backup角色;
keepalived的主从切换和redis的主从切换是不一样的,keepalived的主节点挂了以后,从节点变为主节点,之前的主节点恢复以后继续做主节点,redis的主节点挂了以后,重新恢复以后变为从节点;
Keepalived主节点一般要选择性能比较好的机器;
Keepalived备节点可以部署多个;
单播、多播和广播
单播(Unicast)、多播(Multicast 或者组播)和 广播(Broadcast)这是用来描叙网络节点之间通讯方式的术语;
除了keepalived,还有Heartbeat或Corosync实现高可用;
四、keepalived运行环境
1、下载安装
下载:https://www.keepalived.org/download.html
安装keepalived前需要安装相关依赖:
1
2yum install openssl openssl-devel popt popt-devel ipvsadm libnl libnl-devel libnfnetlink libnfnetlink-devel -y
解压下载下来的压缩文件:
1
2tar -zxvf keepalived-2.0.20.tar.gz
执行配置:
1
2./configure --prefix=/usr/local/keepalived
其中–prefix是指定要将keepalived安装在哪个位置;
在linux上安装软件可以选择 yum安装、rpm包安装、.tar.gz的源码包安装,对于.tar.gz的源码包安装,经常会用到了./configure脚本,configure脚本有大量的命令行选项,可以通过–help查看:./configure --help;
执行编译:
1
2make (yum install gcc -y)
执行安装:
1
2make install
也可以将编译和安装一句执行:make && make install
2、启动keepalived
启动命令**:/usr/local/keepalived/sbin/keepalived -D**
启动后会有两个进程,包括父进程、vrrp子进程,原来老版本还有一个healthchecker子进程,现在新版本已经没有了;
父进程主要负责读取配置文件初始化 、监控子进程等;
配置文件默认需要放在 /etc/keepalived 目录下,启动的时候找这个配置文件;
如果指定配置文件路径可以使用-f:
1
2/usr/local/keepalived/sbin/keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf
选项-D:表示把启动信息打印到日志记录,即/var/log/messages
刚安装后启动不了,因为配置文件的ip不对,需要配置正确ip,然后才能正常启动;
将keepalived制作为系统服务:
cp /usr/local/keepalived/sbin/keepalived /etc/init.d/
置为可用:systemctl enable keepalived
查看状态:systemctl status keepalived
启动服务:systemctl start keepalived
停止服务:systemctl stop keepalived
3、Keepalived配置文件
keepalived配置分为三个部分:
(1)全局配置(Global Configuration)
(2) VRRP配置
(3) LVS配置
四、Nginx高可用之Keepalived
配置文件1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44! Configuration File for keepalived global_defs { notification_email { 123swwww@qq.com } notification_email_from keepalived services smtp_server smtp.qq.com smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr #vrrp_strict vrrp_garp_interval 1 vrrp_gna_interval 1 script_user root enable_script_security } vrrp_script check_nginx { script "/root/check_ngx.sh" interval 2 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.194.200/24 } }
配置文件2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30! Configuration File for keepalived global_defs { notification_email { 1234567@qq.com } notification_email_from keepalived services smtp_server smtp.qq.com smtp_connect_timeout 30 router_id LVS_DEVEL_02 vrrp_skip_check_adv_addr vrrp_garp_interval 1 vrrp_gna_interval 1 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.194.200/24 } }
注:如果ping不通vip地址,把下面这个注释掉;
vrrp_strict
Nginx监控脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#!/bin/sh count=`ps -ef | grep nginx | grep -v grep | wc -l` if [ $count -eq 0 ] then echo "nginx is not running....., starting nginx...." `/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf` sleep 2 count=`ps -ef | grep nginx | grep -v grep | wc -l` if [ $count -eq 0 ] then #kill keepalived awk fi else echo "nginx is running...." fi
vip切换及恢复:
切换:master服务器的nginx服务停止,则master上的keepalived要么通过脚本自杀要么重启nginx,如果是自杀则vip漂移到backup服务器;
恢复:分别启动nginx和keepalived,master服务器修复恢复后,则vip会自动漂移到master服务器;
运行原理
keepalived 通过选举(看服务器设置的优先级)挑选出一台热备服务器做 MASTER 机器,MASTER 机器会被分配到一个指定的虚拟 ip,即VIP, 外部程序可通过该 VIP 访问这台服务器,如果这台服务器出现故障(断网,重启,或者本机器上的 keepalived crash 等),keepalived 会从其他的备份机器上重选(还是看服务器设置的优先级)一台机器做 MASTER 并分配同样的虚拟 IP,充当前一台 MASTER 的角色,优先级越高,备用机器被拉起来的机会就越大;
五、MySQL高可用之Keepalived
MySQL的高可用一般有如下几种方案:
keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster
比较常用的是keepalived+双主,MHA和PXC 三种方案(DBA);
对于中小公司,一般推荐使用keepalived+双主,非常方便,也比较简单;
MySQL监控脚本
1
2
3
4
5
6
7
8
9
10
11#!/bin/sh count=`ps -ef | grep mysql | grep -v grep | wc -l` if [ $count -eq 0 ] then echo "mysql is not running....., starting mysql...." `/usr/local/mysql-5.7.24/bin/z_start_mysql.sh` sleep 2 else echo "mysql is running...." fi
六、MySQL+MyCAT高可用方案
最后
以上就是活力钻石最近收集整理的关于【Keepalived】开源高可用的Keepalived一、What is Keepalived?二、什么是高可用?三、keepalived故障转移实现高可用四、keepalived运行环境四、Nginx高可用之Keepalived五、MySQL高可用之Keepalived六、MySQL+MyCAT高可用方案的全部内容,更多相关【Keepalived】开源高可用的Keepalived一、What内容请搜索靠谱客的其他文章。
发表评论 取消回复