阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于Keepalived主从高可用集群网站架构实现

470次阅读
没有评论

共计 6319 个字符,预计需要花费 16 分钟才能阅读完成。

背景

上一期我们实现了基于 LVS 负载均衡集群的电商网站架构,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的 1000QPS,变为 3000QPS,目前业务已经通过集群 LVS 架构可做到随时拓展,后端节点已经通过集群技术保障了可用性,但对于前端负载均衡器来说,是个比较大的安全隐患,因为当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,因此,负载均衡器的可用性也显得至关重要,那么怎么来解决负载均衡器的可用性问题呢?

技术说明

集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。
集群组成后,可以利用多个计算机和组合进行海量请求处理(负载均衡),从而获得很高的处理效率,也可以用多个计算机做备份 高可用),使得任何一个机器坏了整个系统还是能正常运行。集群在目前互联网公司是必备的技术,极大提高互联网业务的可用性和可缩放性。
高可用(High Availability)高可用集群,英文原文为 HighAvailability Cluster,简称 HA Cluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。高可用性集群(HA cluster)是指如单系统一样地运行并支持(计算机)持续正常运行的一个主机群。

高可用集群技术

高可用(High Availability)高可用集群,英文原文为 HighAvailability Cluster,简称 HA Cluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。高可用性集群(HA cluster)是指如单系统一样地运行并支持(计算机)持续正常运行的一个主机群。
高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损 失。如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。
高可用(High Availability)
HA(High Available), 高可用性群集是通过系统的可靠性 (reliability) 和可维护性 (maintainability) 来度量的。工程上,通常用平均无故障时间 (MTTF) 来度量系统的可靠性, 用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%(平均无故障时间 / 总时间,总时间 = 平均无故障时间 + 平均维修时间)
具体 HA(可用性)衡量标准:
99% 一年宕机时间不超过 4 天
99.9% 一年宕机时间不超过 10 小时
99.99% 一年宕机时间不超过 1 小时
99.999% 一年宕机时间不超过 6 分钟

高可用集群技术实现

高可用(High Availability)
高可用工作方式:主从方式(非对称方式)、双机双工方式(互备互援)、集群工作方式(多服务器互备方式)
高可用的资源分类:网络高可用、服务器高可用、存储高可用、服务高可用等
开源高可用解决方案:keepalived:通过实现 vrrp 协议来实现地址漂移;heartbeat(开源社区项目),cman+rgmanager (RHCS:RedHat cluster suite),corosync+pacemaker(大型解决方案,一个用于心跳检测,一个用于资源转移。两个结合起来使用,可以实现对高可用架构的自动管理。)
 我们今天讲的就是基于 keepalived 通过 vrrp 协议来实现地址漂移从而来实现高可用。

高可用技术演示图(主从)

基于 Keepalived 主从高可用集群网站架构实现

高可用技术演示图(双主)
基于 Keepalived 主从高可用集群网站架构实现

Keepalived 是什么

Keepalived 的作用是检测服务器的状态,如果有一台 web 服务器宕机,或工作出现故障,Keepalived 将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后 Keepalived 自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

Keepalived 的特性

配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能
稳定性强:keepalied 是一个类似于 layer3,4&7 交换机机制的软件,具备我们平时说的第 3 层、第 4 层和第 7 层交换机的功能,常用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,监测机制灵活,成功率高。
成本低廉:开源软件,可直接下载配置使用,没有额外费用。
应用范围广:因为 keepalived 可应用在多个层面,所以它几乎可以对所有应用做高可用,包括 LVS、数据库、http 服务、nginx 负载均衡等等
支持多种类型:支持主从模式、主主模式高可用,可根据业务场景灵活选择。

Keepalived 工作流程图

基于 Keepalived 主从高可用集群网站架构实现

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 协议

基于 Keepalived 主从高可用集群网站架构实现

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 主从高可用集群网站架构实现

实现基于 keepalived 的高可用服务,在两台主机上分别实现主从,主主模型,通过 keepalived 实现 IP 地址高可用和 LVS 的主从高可用架构。

实战演练

实现基于 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 的电子商务网站

基于 Keepalived 主从高可用集群网站架构实现

二、安装步骤:
1、两台服务器都使用 yum 方式安装 keepalived 服务
2、iptables -F && setenforing 清空防火墙策略,关闭 selinux
三、配置基于 DR 模式的 LVS 负载均衡集群:
vim /etc/keepalived/keepalived.conf
1. 对 glob 段进行定义,添加管理员邮箱

基于 Keepalived 主从高可用集群网站架构实现

2、修改 keepalived 主 (lvs-server-master) 配置文件实现 virtual_instance
基于 Keepalived 主从高可用集群网站架构实现
3、修改 keepalived 主 (lvs-server-master) 配置文件实现 virtual_server
基于 Keepalived 主从高可用集群网站架构实现
4、修改 keepalived 从 (lvs-server-master) 配置文件实现 real_server
基于 Keepalived 主从高可用集群网站架构实现
 基于 Keepalived 主从高可用集群网站架构实现
5、修改 keepalived 主 (lvs-server-backu) 配置文件实现 virtual_instance
基于 Keepalived 主从高可用集群网站架构实现
6、修改 keepalived 从 (lvs-server-backup) 配置文件实现 virtual_server
基于 Keepalived 主从高可用集群网站架构实现
7、修改 keepalived 从 (lvs-server-backup) 配置文件实现 real_server
基于 Keepalived 主从高可用集群网站架构实现

 基于 Keepalived 主从高可用集群网站架构实现

四. 在两台主从负载均衡器上开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
五,在后端服务器的回环网卡上配置 vip,并将网关指向 vip
ifconfig lo:0 172.17.253.100 broadcast 172.17.253.100 netmask 255.255.255.255 up
route add -host 172.17.253.100 dev lo:0
六,在后端服务器关闭 arp
echo “1” > /proc/sys/net/ipv4/conf/lo/arp_ignore
#1 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求
echo “2” > /proc/sys/net/ipv4/conf/lo/arp_announce
#2 对查询目标使用最适当的本地地址. 在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该地址通信的本地地址.
echo “1” > /proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/all/arp_announce
# 关闭 arp 应答
(1): 仅在请求的目标 IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
(2):必须避免将接口信息向非本网络进行通告
七,检验高可用的效果
两台负载均衡器都开启 keepalived 服务,我停止了负载均衡器主服务器的 keepalived 服务(模拟负载均衡器主服务器宕机),立刻负载均衡器从服务器会将主服务器上的 vip 拿过来(地址漂移),接替负载均衡器主服务器的工作,一旦负载均衡器主服务器被修好了,从新开启 keepalived 服务,由于默认为抢占模式,主服务器再将从服务器的 vip 给拿回来,继续工作,不会影响客户端访问。
好了,今天的内容就到这里,我们下期再见。

 

一些关于 Keepalived 相关教程集合

CentOS 7 下 Keepalived + HAProxy 搭建配置详解  http://www.linuxidc.com/Linux/2017-03/141593.htm

Keepalived 高可用集群应用场景与配置 http://www.linuxidc.com/Linux/2017-03/141866.htm

Nginx+Keepalived 实现站点高可用  http://www.linuxidc.com/Linux/2016-12/137883.htm

Nginx+Keepalived 实现站点高可用(负载均衡)  http://www.linuxidc.com/Linux/2016-12/138221.htm

构建高可用集群 Keepalived+Haproxy 负载均衡 http://www.linuxidc.com/Linux/2016-12/138917.htm

CentOS6.5 下 Keepalived 高可用服务单实例配置 http://www.linuxidc.com/Linux/2016-12/138110.htm

Keepalived 安装与配置 http://www.linuxidc.com/Linux/2017-02/140421.htm

Nginx 之 Keepalived 高可用  http://www.linuxidc.com/Linux/2017-05/143708.htm

基于 Keepalived 高可用集群网站架构实现的多种方法  http://www.linuxidc.com/Linux/2017-11/148571.htm

Linux 下 Keepalived 服务安装文档  http://www.linuxidc.com/Linux/2017-03/141441.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149079.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6319字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7990585
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...