一、Keepalived介绍

keepalived是在Linux系统下的一个轻量级的高可用解决方案,是使用C语言编写的,在 Keepalived 中实现了一组检查器,可以根据服务集群中服务器的健康状态,自动的进行动态主备切换、管理。

VRRP(Virtual Router Redundancy Protocol)虚拟路由器冗余协议,是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信。

Keepalived软件主要是通过VRRP协议实现高可用功能,在安装keepalived的服务器主机上会在配置文件中设置一个虚拟IP,当该keepalived节点为主节点且正常运行时,设置的虚拟Ip就会在该节点生效且绑定在该主机的网卡上,而其他备用主机设置的虚拟IP就不会生效。当测到主keepalived节点出现故障时,备用keepalived节点检会进行抢占提供服务,抢占成功的keepalived节点就会将配置的虚拟IP绑定在自己的网卡上,这样对外部用户来说虚拟IP提供的服务是一直可用的,当故障服务器被修复后可以正常工作时Keepalived会自动的将该服务器加入到服务器群中。在整个过程中,故障检测、故障服务器剔除以及修复后的服务器重新上线这些操作都是由keepalived自动完成,运维人员只需要关注故障服务器的修复。

通过keepalived配置nginx高可用

如图:有两台服务器Server1(192.168.56.101)和Server2(192.168.56.102)。每台服务器上都运行一个nginx实例和一个keepalived实例,其中Server1的keepalived实例是Master节点,Server2的keepalived实例是备用节点,两个keepalived实例配置的虚拟IP为192.168.56.100

1)nginx配置:

nginx保持默认配置即可,通过真实ip访问两台nginx服务如下

2)keepalived配置:

keepalived配置文件一般在/etc/keepalived/keepalived.conf下,    keepalive-master配置如下

! Configuration File for keepalived
global_defs {#路由id,全局唯一,表示当前keepalived节点的唯一性router_id keep_101
}vrrp_instance VI_1 {#设置当前实例状态为MASTER。MASTER代表是主实例,BACKUP代表是备用实例state MASTER#当前实例绑定的网卡interface enp0s8#当前实例的虚拟路由id,一组主备的实例的路由id是相同的virtual_router_id 51#当前实例的优先级priority 100#主备之间同步检查时间间隔advert_int 1#一组主备实例的认证密码,方式非法节点进入路由组authentication {auth_type PASSauth_pass 1111}#设置当前实例的虚拟IPvirtual_ipaddress {192.168.56.100}
}

keepalive-slve配置如下

! Configuration File for keepalived
global_defs {#由于是全局唯一Id,所有需要与master保持不同router_id keep_102
}vrrp_instance VI_1 {#备用实例状态应设置为BACKUPstate BACKUPinterface enp0s8virtual_router_id 51#设置备用实例的优先级低于主实例,这样可保证在主实例故障修复后可以再次将主节点抢占回来priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.56.100}
}

启动keepalived,通过虚拟ip访问nginx服务,然后kill掉Server1上的keepalived验证是否保证虚拟ip正常访问,验证图示如下

二、LVS

LVS(Linux Virtual Server)Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS在Linux内核中实现了基于IP的内容请求分发的负载均衡调度解决方案,属于四层负载均衡。

LVS将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。在使用LVS负载均衡时,用户的请求都会被LVS调度器转发到真实服务器,真实服务器在处理完请求后将数据发送给用户时会有多种方式(三种)可以选择,整个服务器集群的结构对客户是透明的。

1、三种工作模式:

1)NAT模式:
NAT(Network Address Translation)网络地址转换,通过修改数据报头,使得内网中的IP可以和外部网络进行通信。LVS负载调度器使用两块不同的网卡配置不同的IP地址,网卡一设置为公网IP负责与外部通信,网卡二设置内网IP负责与内网服务通信。

外部用户通过访问LVS调度器的公网IP发送服务请求,LVS调度器接受请求后,将请求数据进行转换,通过内网IP的网卡设备,根据调度策略将数据转发给内部服务,内部服务处理完成将响应数据再返回给LVS调度器,LVS调度器再将数据转换通过公网IP的网卡设备将响应结果返回给请求用户。

以上描述的就是一个基于NAT工作模式的LVS调度,这种模式的瓶颈在于LVS调度器,因为所有的请求数据和响应数据都需要经过LVS来进行转换处理,当大流量到来时,LVS调度器就成了一个短板,限制整个集群服务性能的上限。

2)TUN模式:
TUN模式与NAT的不同在于,TUN模式下LVS调度器只负责接受请求,而真实服务器进行响应请给用户。LVS调度器与真实服务器建立IP隧道,IP隧道它可以将原始数据包封装并将新的源地址及端口、目标地址及端口添加新的包头中,将封装后的数据通过隧道转发给后端的真实服务器,真实服务器在收到请求数据包后直接给外部用户响应数据,这种模式下要求真实服务器具有直接外部用户通信的能力。

外部用户访问LVS调度器发送服务请求,LVS调度器接收请求后,将请求数据转换,根据调度策略将数据转发给服务集群真实服务器,真实服务器在处理完成后,就直接与外部请求用户通信,直接将响应结果返回给请求用户。

以上描述就是一个基于TUN工作模式的LVS调度,这种模式下LVS调度器就只负责请求的负载均衡转发,而处理数据的响应则全部由真实服务器来直接和用户通信了。在实际环境中,请求的数据量往往是小于响应的数据量,所以仅仅将请求数据让LVS来转发,好处就是LVS调度器的压力减少很多,可以承载更大的流量,同时真实服务器的性能也能得到充分利用,缺点就是真实服务器需要与外部网络用户直接通信,在安全上会存在一定风险。

3)DR模式:
DR模式是在TUN模式的基础上又进行了改造,在DR模式下LVS调度器与真实服务器共享一个虚拟IP,且调度器的虚拟IP对外暴露,而真实服务器的虚拟IP地址将配置在Non-ARP的网络设备上,这种网络设备不会向外广播自己的MAC及对应的IP地址,这样即保证了真实服务器可以接受虚拟IP的网络请求也让真实服务器所绑定的虚拟IP对外部网络部是不可见的。

外部用户通过访问虚拟IP将请求数据包发送到调度器,调度器根据调度策略确定转发的真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器,之后真实服务器在处理完后进行数据响应时,会将虚拟IP封装在数据包中,再经过路由将数据返回给外部用户,在这整个过程中,真实服务器对外部用户不可见,外部用户只能看到虚拟IP的地址

在DR模式下因为真实服务器给外部用户回应的数据包设置的源IP是虚拟IP地址,又因为真实服务器的虚拟IP不对外暴露,这样外部用户在通过虚拟IP访问时,就访问到了调度器的虚拟IP地址,就实现了整个集群对外部用户透明。

2、负载均衡算法:

轮询、加权轮询等。。。

3、使用LVS对集群进行DR模式的负载均衡

我们演示的DR模式的LVS负载均衡,所以真实服务器的虚拟IP将和LVS调度器的虚拟IP一样,且真实服务器的虚拟IP不能对外暴露,所以我们会将虚拟IP绑定在lo回环接口上。

参考:https://zhuanlan.zhihu.com/p/156858630

https://zhuanlan.zhihu.com/p/157303195

三、LVS+Keepalived 实现高可用负载均衡

上面我们了解了lvs和keepalived,将二者结合起来使用可以达到一个完美的高可用负载均衡。

回顾

LVS 是一种预装在 Linux 系统中,基于四层、具有强大性能的反向代理服务器。ipvsadm 是 LVS 的命令行管理工具。

LVS 特点是:

  1. 首先它是基于 4 层的网络协议的,抗负载能力强,对于服务器的硬件要求除了网卡外,其他没有太多要求;
  2. 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,大大减少了人为出错的几率;
  3. 应用范围比较广,不仅仅对 web 服务做负载均衡,还可以对其他应用(mysql)做负载均衡;
  4. LVS 架构中存在一个虚拟 IP 的概念,需要向 IDC 多申请一个 IP 来做虚拟 IP。

Keepalived 是一个基于 VRRP 协议来实现的服务高可用方案,可以利用其来避免 IP 单点故障,一般与其它负载均衡技术(如 LVS 、HAProxy 、Nginx)一起工作来达到集群的高可用。Keepalived 是 LVS 的扩展项目, 因此它们之间具备良好的兼容性,可直接通过 Keepalived 的配置文件来配置 LVS。

相关术语:

  • LB (Load Balancer 负载均衡)
  • HA (High Available 高可用)
  • Failover (失败切换)
  • Cluster (集群)
  • LVS (Linux Virtual Server Linux 虚拟服务器)
  • DS (Director Server),指的是前端负载均衡器节点
  • RS (Real Server),后端真实的工作服务器
  • VIP (Virtual IP),虚拟的 IP 地址,向外部直接面向用户请求,作为用户请求的目标的 IP 地址
  • DIP (Director IP),主要用于和内部主机通讯的 IP 地址
  • RIP (Real Server IP),后端服务器的 IP 地址
  • CIP (Client IP),访问客户端的 IP 地址

环境:

软件环境:CentOS7、Keepalived1.3.5、ipvsadm1.27

  • DS1(MASTER):172.17.13.120
  • DS1(BACKUP):172.17.13.123
  • RS1:172.17.13.142:80 Nginx
  • RS1:172.17.13.173:80 Nginx
  • VIP:172.17.13.252

集群的架构图如上图所示。DS1、DS2 为两个 LB 节点,RS1、RS2 为两个真实的服务节点,通过一个虚拟的 IP 地址对外提供服务。最终我们要达到的目标为:

  1. Client 通过 VIP 访问服务能够将请求根据配置的规则进行分发(LB)
  2. 当 MATSER 的 LB 节点故障时,自动切换到 BACKUP 的 LB 节点上,保证服务正常访问;MASTER 恢复后,再次作为主 LB 负载节点
  3. 当某个 RS 节点故障时,自动剔除该节点;恢复后,再次加入集群

参考:https://www.cnblogs.com/Sinte-Beuve/p/13392747.html

LVS+Keepalived 实现高可用负载均衡相关推荐

  1. LVS+Keepalived实现高可用负载均衡

    本文来说下如何使用LVS+Keepalived 实现高可用负载均衡 文章目录 概述 LVS与Keepalived 相关术语 本文小结 概述 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时 ...

  2. Linux下部署lvs+keepalived实现高可用负载均衡

    lvs+keepalived是什么? keepalived工作原理 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalive ...

  3. LVS + Keepalived 实现高可用负载均衡

    前言 本文以DR模式来进行实验! 首先这次研究这个LVS的前景,是因为公司要给客户的Master服务器做一个虚拟IP来提供访问,是在一个局域网下.想通过虚拟IP访问正式的环境,通过Master本身的I ...

  4. LVS(DR)+keepalived实现高可用负载均衡

    一.lvs+keepalived 1.lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将 ...

  5. L8.1 lvs+heartbeat-ldirectord实现高可用负载均衡

    lvs+heartbeat-ldirectord实现高可用负载均衡 拓扑: IPVS规则与heartbeat ipvs规则不再使用ipvsadm配置,而是依靠heartbeat的包工具ldirecto ...

  6. 搭建Keepalived+Nginx高可用负载均衡服务器

    一.服务器搭建策略 单机模式: 只有一台应用服务器,组成一个单机模式 优点:简单方便(搭建.运营.维护) 缺点:不能出故障(停电.断网.系统崩溃.硬件老化.性能瓶颈) 应用场景:小型项目(几十个人) ...

  7. IPVS-DR+keepalived实现高可用负载均衡集群

    IPVS-DR+keepalived高可用负载均衡集群方案前端的负载调度器采用双机热备方式,Keepalived主要用来监测RealServer的健康状态以及主负载均衡器和备份负载均衡器之间的故障转移 ...

  8. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

  9. 使用LVS和Keepalived搭建高可用负载均衡服务器集群

    目录 1.什么是LVS和Keepalived 2.负载均衡服务器集群示例环境搭建及安装配置 2.1.环境网络拓扑结构 2.2.安装ipvsadm软件 2.3.安装keepalived 2.4.配置网络 ...

最新文章

  1. 2021年春季学期-信号与系统-第三次作业参考答案-第十一道题
  2. Xamarin ios C#苹果应用开发第二讲配置环境和编写代码
  3. linux环境变量配置的方法,Linux环境变量配置方法
  4. 你可能不知道的Docker资源限制
  5. ehcache 实现缓存共享
  6. Python并发编程:多线程-Thread对象的其它属性和方法
  7. 参数默认值,剩余参数,拓展参数(default spread rest parameter)
  8. 20. 有效的括号 python
  9. 计算机系统的四种启动方式是,电脑启动方式有几种你知道吗?
  10. 修真院教学模式四大体系之技能体系
  11. 《软技能(代码外的生存指南)》读书笔记——持续更新
  12. 软件测试学习 之 进阶之路
  13. elementui表格获取mysql数据_vue+element-ui表格封装tag使用slot插槽标签
  14. linux(centos7)内核升级
  15. GifCam – 更好用的 gif 动画录制/剪辑工具
  16. 解决module not found: error: can‘t resolve ‘path‘ in ‘C:\xxx\xxx‘
  17. timer控件自动停止问题
  18. 戴尔R730 RAID崩溃 38T数据恢复要多久?
  19. 最新微信QQ域名防封、微信群活码系统
  20. Video标签上面覆盖播放按钮点击播放

热门文章

  1. 滴滴程序员被亲戚鄙视:年薪八十万还不如二本教书的...
  2. 第五卷《鏖战雁门(下)》第41章《良夜》
  3. python-课后作业-4
  4. 一级造价工程师(安装)- 计量笔记 - 第二章第三节吊装工程
  5. 纸壳CMS可视化建站系统创建多语言网站
  6. 医疗ChatGPT、金融GPT都来啦!“潘多拉的魔盒”已经打开?
  7. pta—紧急救援 (dijkstra)
  8. Python爬虫 图片爬取简陋版
  9. (转)使用Excel批量给数据添加单引号和逗号
  10. Kubenetes1.13.1集群部署 --01基于Kubeadm搭建Kubernetes