我是靠谱客的博主 活力钻石,最近开发中收集的这篇文章主要介绍【Keepalived】开源高可用的Keepalived一、What is Keepalived?二、什么是高可用?三、keepalived故障转移实现高可用四、keepalived运行环境四、Nginx高可用之Keepalived五、MySQL高可用之Keepalived六、MySQL+MyCAT高可用方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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高可用方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部