背景

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

Keepalived的特性

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

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

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

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

2、修改keepalived主(lvs-server-master)配置文件实现virtual_instance
3、修改keepalived主(lvs-server-master)配置文件实现virtual_server
4、修改keepalived从(lvs-server-master)配置文件实现real_server
5、修改keepalived主(lvs-server-backu)配置文件实现virtual_instance
6、修改keepalived从(lvs-server-backup)配置文件实现virtual_server
7、修改keepalived从(lvs-server-backup)配置文件实现real_server

四.在两台主从负载均衡器上开启路由转发
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给拿回来,继续工作,不会影响客户端访问。
好了,今天的内容就到这里,我们下期再见。

转载于:https://www.cnblogs.com/1477717815fuming/p/7874384.html

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

  1. 基于keepalived实现多种模式的高可用集群网站架构

    一. 实现主从服务器高可用技术. 大概网络拓扑图: 前提准备条件: 准备四台机器,一台为keepalived的master,一台为keepalived的backup,一台为rs1,一台为rs2,同时都 ...

  2. LVS负载均衡—基于Keepalived做高可用

    备注:开通虚拟IP时,一定备注清楚作为LVS使用,系统底层要进行一些策略 的配置 一.架构 先看看:高可用软件keepalived详解 Lvs+Keepalived的基本使用架构如下图如下: 当然,我 ...

  3. 基于MySQL的高可用可扩展架构探讨

    随着信息量飞涨,信息的存储成为了这个时代至关重要的一项技术.如何来保证数据存储技术能够适应信息量的增长速度和我们对信息的高度依赖,成为一个非常重要的课题.本文将从数据库架构的层面,通过以开源的数据存储 ...

  4. 一步一步搭建Redis + Keepalived主从高可用之Keepalived安装配置(三)

    开心一笑 [我:"屎克郎,你不是移‍民了吗?怎么又回来了?" 屎克郎:"再不回来,就饿死了!" 我:"怎么会这样子!" 屎克郎:" ...

  5. 服务器集群之keepalived配置高可用(资料)

    2019独角兽企业重金招聘Python工程师标准>>> Linux集群概述 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当 ...

  6. docker 部署nginx 使用keepalived 部署高可用

    一.体系架构 在Keepalived + Nginx高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故 ...

  7. Redis主从+KeepAlived实现高可用

    Redis是我们当下比较流行使用的非关系数据库,可支持多样化的数据类型,多线程高并发支持,redis运行在内存拥有更快的读写.因为redis的表现如此出色,如何能保障redis在运行中能够应对宕机故障 ...

  8. Nginx+keepalived 实现高可用,防盗链及动静分离配置

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  9. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)...

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

最新文章

  1. linux flush 保证 磁盘,linux cache介绍及控制
  2. Python语言 目录
  3. C++11多线程---future和promise
  4. phoenix hbase java_spark通过phoenix读写hbase(Java版)
  5. 《领域驱动设计精粹》DDD Domain-Driven Design Distilled -- Vaughn Vernon 读后感
  6. C语言基础—进制转换
  7. 一个故事讲完CPU的工作原理 侵删
  8. NERO8注册码序列号
  9. 静态网页HTML知识点归纳
  10. 第十一届hackathon落地啦:百度截图识字
  11. maya2018安装教程
  12. Multisim如何导入NPN,三极管9013
  13. Gif动图如何自制?一招教你快速完成gif制作
  14. matlab天线测试数据处理,通信天线建模与MATLAB仿真分析.pdf
  15. 重庆美食地图(绝对霸道)
  16. printf中%p的输出应用
  17. Oracle 11gR2 dataguard搭建说明 --- duplicate方式
  18. vue大屏展示 代码 从0 到1
  19. e2label设置文件系统的卷标
  20. odoo openerp 分享-oe嵌入qweb】用js读取数据库数据,用类似html语言重写web报表

热门文章

  1. 苹果发布首款 Mac 自研芯片 M1,贯通生态快人一步!
  2. 2013年蓝桥杯省赛C/C++A组真题解析
  3. python读写json文件
  4. 第二章 -- (第一单元) -- 自动安装虚拟机
  5. window for jdk install
  6. 个人作业-Alpha项目测试
  7. Oracle ASM 翻译系列第二十七弹:ASM INTERNAL ASM METADATA BLOCK
  8. 页面切换语言包使用session不用cookie
  9. 一个同步github上fork过来的项目的批处理脚本
  10. linux 下 将 shell script 与 一个桌面图标联系在一起 (2)