概述
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前需要安装相关依赖:
yum install openssl openssl-devel popt popt-devel ipvsadm libnl libnl-devel libnfnetlink libnfnetlink-devel -y
解压下载下来的压缩文件:
tar -zxvf keepalived-2.0.20.tar.gz
执行配置:
./configure --prefix=/usr/local/keepalived
其中–prefix是指定要将keepalived安装在哪个位置;
在linux上安装软件可以选择 yum安装、rpm包安装、.tar.gz的源码包安装,对于.tar.gz的源码包安装,经常会用到了./configure脚本,configure脚本有大量的命令行选项,可以通过–help查看:./configure --help;
执行编译:
make (yum install gcc -y)
执行安装:
make install
也可以将编译和安装一句执行:make && make install
2、启动keepalived
启动命令**:/usr/local/keepalived/sbin/keepalived -D**
启动后会有两个进程,包括父进程、vrrp子进程,原来老版本还有一个healthchecker子进程,现在新版本已经没有了;
父进程主要负责读取配置文件初始化 、监控子进程等;
配置文件默认需要放在 /etc/keepalived 目录下,启动的时候找这个配置文件;
如果指定配置文件路径可以使用-f:
/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
! 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
! 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监控脚本
#!/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监控脚本
#!/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 is Keepalived?二、什么是高可用?三、keepalived故障转移实现高可用四、keepalived运行环境四、Nginx高可用之Keepalived五、MySQL高可用之Keepalived六、MySQL+MyCAT高可用方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复