LVS负载均衡与Keepalive高可用
LVS负载均衡与Keepalive高可用负载均衡
- 一、LVS介绍
- 二、LVS的三种工作模式
- 1、NAT模式
- 2、TUN模式
- 3、DR模式
- 三、ipvsadm实现Apache负载均衡横
- 四、keepalive实现DR模式故障检测
- 五、keepalive实现LVS高可用
一、LVS介绍
- LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器。
- 将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的。
- LVS工作模式分为NAT模式、TUN模式、以及DR模式
二、LVS的三种工作模式
1、NAT模式
- 通过网络地址转换的方式来实现调度
(1)首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。
(2)接着调度把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),真实服务器(RS)就可以接收到客户的请求数据包了。
(3)真实服务器响应完请求后,查看默认路由(NAT模式下需要将RS的默认路由设置为LB服务器),把响应后的数据包再发送给LB。
(4)LB接收到响应包后,把包的源地址改为虚拟地址(VIP),然后再发送回客户端。
- 整体流程:Client > VS > RS > VS > Client
- 当数据流进入VS时,做了一次DNAT,从VS出去时做了一次DNAT
2、TUN模式
- 隧道模式
(1)将请求与响应数据分离,让调度器仅处理数据请求,而让真实服务器响应数据包直接返回给客户端。
(2)VS/TUN工作模式拓扑结构如图所示。其中,IP隧道(IP tunning)是一种数据包封装技术,它可以将原始数据包封装并添加新的包头(内容包括新的源地址及端口、目标地址及端口),从而实现将一个目标为调度器的VIP地址的数据包封装,通过隧道转发给后端的真实服务器(Real Server),通过将客户端发往调度器的原始数据包封装,并在其基础上添加新的数据包头(修改目标地址为调度器选择出来的真实服务器的IP地址及对应端口)。
- LVS(TUN)模式要求真实服务器可以直接与外部网络连接,真实服务器在收到请求数据包后直接给客户端主机响应数据
3、DR模式
(1)直接路由模式(DR模式)要求调度器与后端服务器必须在同一个局域网内,VIP地址需要在调度器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度器的VIP地址,回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在的。
(2)由于多台计算机都设置了同样一个VIP地址,所以在直接路由模式中要求调度器的VIP地址是对外可见的,客户端需要将请求数据包发送到调度器主机,而所有的真实服务器的VIP地址必须配置在Non-ARP的网络设备上,也就是该网络设备并不会向外广播自己的MAC及对应的IP地址,真实服务器的VIP对外界是不可见的,但真实服务器却可以接受目标地址VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址。
(3)调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器。整个过程中,真实服务器的VIP不需要对外界可见。
- 整体流程:Client----DR—RS–Client
三、ipvsadm实现Apache负载均衡横
- 利用DR工作模式和轮询调度算法实现
1、调度器:
vip:172.25.24.100
,rr
:轮询调度算法
yum install ipvsadm -y ##安装lvs管理器
ip addr add 172.25.24.100/24 dev eth0 ##添加vip
ipvsadm -A -t 172.25.24.100:80 -s rr ##添加虚拟服务
ipvsadm -a -t 172.25.24.100:80 -r 172.25.24.2:80 -g ##将虚拟服务关联到真实服务上
ipvsadm -a -t 172.25.24.100:80 -r 172.25.24.3:80 -g
ipvsadm -ln ##查看配置信息
2、真实服务端:RS端
yum install httpd -y
systemctl enable --now httpd
echo server2 > /var/www/html/index.html ##server2主机添加访问内容
echo server3 > /var/www/html/index.html ##server3主机添加访问内容
ip addr add 172.25.24.100/32 dev eth0 ##添加虚拟ip
3、访问
curl 172.25.24.100
for i in {1..10};do curl 172.25.24.100;done
4、查看收到arp报文对应的mac地址
arp -an | grep 100
发现与server1上的mac相同
ip addr show eth0
5、删除指定ip的arp缓存
arp -d 172.25.24.100
6、获取server3的mac
curl 172.25.24.100
arp -an | grep 100
7、再次访问时发现全部是server3的内容
- 原因:连接100时对应的mac应该是server1的MAC地址,但如果将访问的arp删除,再次连接100时,将得到server3的MAC地址,此时将绕过server1,直接获取server3信息
for i in {1..10};do curl 172.25.24.100;done
8、所以需要配置ip隐藏策略,即设置不可以通过vip直接访问server2/3,又能保证提供server2/3服务
- RS端:
- 安装arp防火墙,添加arptables访问规则
yum install arptables -y
arptables -A INPUT -d 172.25.24.100 -j DROP
arptables -A OUTPUT -s 172.25.24.100 -j mangle --mangle-ip-s 172.25.24.2 ##添加策略
arptables -A OUTPUT -s 172.25.24.100 -j mangle --mangle-ip-s 172.25.24.3
arptables-save ##查看策略
arptables-save > /etc/sysconfig/arptables ##保存策略
systemctl restart arptables.service
arptables -nL ##arp火墙显示
9、访问测试
- 先访问调度器,通过调度器的设定来访问RS服务器
四、keepalive实现DR模式故障检测
- DR模式的缺点是无法发现客户端故障
1、停止server2的http服务,访问VIP
[root@server2 ~]# systemctl stop httpd.service
[root@foundation24 mnt]# for i in {1..10};do curl 172.25.24.100;done
- 针对RS服务器出现故障或者调度器单点故障,keepalive的健康检查和失败切换(LVS冗余)可以解决。
- keepalive中的vrrp协议实现高可用解决单点故障,TCP_CHECK实现对后端RS的健康检测。
2、删除server1上的vip,清空ipvs配置
ip addr del 172.25.24.100/24 dev eth0
ipvsadm -C ##清空ipvs配置
ipvsadm -ln
3、安装邮件服务接收故障邮件
yum install -y mailx.x86_64
4、安装及配置keepalive
yum install keepalived.x86_64 -y
cd /etc/keepalived/
vim keepalived.conf
cat keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {root@localhost ##设定发送故障邮件到本机}notification_email_from keepalived@localhost ##邮件来源smtp_server 127.0.0.1 ##发送服务器smtp_connect_timeout 30 ###指定超时连接时间router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strict ##禁用此选项vrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 { ##高可用部分state MASTER ###将server1作为主节点interface eth0virtual_router_id 75 ##此处为51+ip(本机ip为24)priority 100 ###当前主机在此虚拟路径器中的优先级;范围1-254;设置backup优先级需比master优先级低advert_int 1 ##与backup之间每隔1s监测一次authentication { ##认证方式auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.24.100 ##设定vip}
}
virtual_server 172.25.24.100 80 { ##ipvs配置自动生成delay_loop 6 ##每隔6秒钟对后端做一次健康检查lb_algo rr ##设定负载均衡策略为轮询lb_kind DR ##设定LVS工作模式为DR#persistence_timeout 50 ##50秒内同一个客户端请求将会交给同一个后端处理,为观察实验效果,将其注释protocol TCPreal_server 172.25.24.2 80 { ##RS1weight 1 ##权重TCP_CHECK {connect_timeout 3 ##连接超时时间nb_get_retry 3 ##超时重试次数delay_before_retry 3 ##每次超时过后多久再进行连接}}real_server 172.25.24.3 80 { ##RS2weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
5、启动keepalive服务会自动添加VIP和编写ipvsadm规则
ipvsadm -C
ipvsadm -ln
systemctl start keepalived.service
ipvsadm -ln
ip add show eth0
6、停止server2的httpd服务,访问VIP会全部是为server3,因为有健康检测的缘故会跳过server2的故障,查看邮件可以发现故障
[root@server2 ~]# systemctl stop httpd.service
[root@foundation24 mnt]# for i in {1..10};do curl 172.25.24.100;done
- 查看故障邮件
mail
五、keepalive实现LVS高可用
- 由于server1为LVS策略服务提供者,当server1出现故障时,将导致访问及负载均衡都无法进行,因此采用高可用方式,双机热备确保LVS稳定性。
- 高可用描述:
- 配置一台BACKUP 端server4,具备与server1相同LVS策略配置,当server1出现故障时,将VIP转移至server4,并切换server4为MASTER,继续提供服务。
- 当server1恢复正常,再将VIP及MASTER转移至server1(须设定server1优先级大于server4)
1、server4端安装keepalived,ipvsadm,将server1的配置文件复制过来,配置keepalived,启动keepalived服务
yum install keepalived -y
yum install ipvsadm -y
cd /etc/keepalived/
scp 172.25.24.1:/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
vim keepalived.conf
systemctl start keepalived.service
cat keepalived.conf ##只显示修改的部分vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 75 ##此处为51+ip(本机ip为24)priority 50 ##设定优先级为50,小于masteradvert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.24.100 ##设定vip}
}
2、查看server4的日志,发现为BACKUP端
cat /var/log/messages | grep BACKUP
2、停止server1的keepalived服务,查看server4的日志,发现已经变为MASTER端
[root@server1 keepalived]# systemctl stop keepalived.service
cat /var/log/messages | grep MASTER
3、查看到VIP也已经转到server4上
ip addr show eth0
4、开启server2的httpd服务,测试负载均衡,发现得到的mac为server4的
[root@server2 ~]# systemctl start httpd.service
[root@foundation24 mnt]# for i in {1..10};do curl 172.25.24.100;done
[root@foundation24 mnt]# arp -an | grep 100
[root@server4 keepalived]# ip addr show eth0
5、启动server1的keepalived,查看server1和server4的日志,发现server4返回为BACKUP端
[root@server1 keepalived]# systemctl start keepalived.service
[root@server1 keepalived]# cat /var/log/messages | grep MASTER
[root@server4 keepalived]# cat /var/log/messages | grep BACKUP
LVS负载均衡与Keepalive高可用相关推荐
- 企业级Nginx负载均衡与keepalived高可用实战课-老男孩-专题视频课程
企业级Nginx负载均衡与keepalived高可用实战课-2678人已学习 课程介绍 企业级Nginx负载均衡与keepalived高可用实战分享 课程收益 互联网环境最常用 ...
- 【LVS+Keepalived】 LVS+Keepalived实现tcp、udp负载均衡及HA高可用
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程. LVS 安装 下载 http: ...
- keepalived+nginx负载均衡+ApacheWeb实现高可用
1.Keepalived高可用软件 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,kee ...
- 用NGINX做负载均衡,keepalived高可用
实验环境,四台虚拟机,两台做负载均衡,两台做RS IP地址:两台负载均衡分别为:10.0.0.7:10.0.0.8(高可用keepalived) 两台 RS主机地址为: 10.0.0.9:10.0.0 ...
- Nginx负载均衡配置+keepalived高可用
1.什么是负载均衡? 随着应用各个核心模块业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担.在此情况下,如果扔掉现有设备去做大量的硬件升级, ...
- LVSKeepalived—集群、负载均衡、企业高可用详解
LVS负载均衡集群及配置 负载均衡概述 1.集群 通过集群(cluster)技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对高的收益,其任务调度则是集群系统中的核心技术. 集群搭建 ...
- haproxy负载均衡_Haproxy+keepalived高可用集群实战
随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性.负载均衡以及基于TCP和HT ...
- 游戏服务器高性能负载均衡,游戏服务器高可用负载均衡
游戏服务器高可用负载均衡 内容精选 换一换 公有云提供弹性公网IP(EIP).NAT网关.弹性负载均衡(ELB)等方式连接公网.EIPEIP提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务. ...
- Nginx 方向代理/负载均衡/动静分离/高可用
一,反向代理 正向代理:正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端.这里客户端是要进行 ...
最新文章
- 腾讯博士:年薪60万辞职去教书,你想要哪种生活?
- Oracle10g 回收站及彻底删除table : drop table xx purge
- Java实现大数乘法_java实现大数加法、乘法(BigDecimal)
- Centos Mysql数据还原
- 注解_自定义注解_元注解
- MySQL调优(一):使用profiles、performance_schema性能监控
- JSP、ASP、PHP Web应用程序怎么这么多P!
- ligerDialog的使用
- .net core精彩实例分享 -- 基础篇
- 详解vue动画的封装
- 鼠标右键快速连接wifi
- 数据分析数据可视化(二)
- 200行代码实现推流到直播平台
- 和张哥的那些天,互联网人的潜规则
- 【BZOJ5316】【JSOI2018】绝地反击
- 计算与背景反差较大显示明显的前景色
- C语言实现汉诺塔问题(保姆式讲解)
- C# PDF添加骑缝章
- Scrapy爬取新浪微博用户粉丝数据
- USB Gadget iMX6U	LL开发板模拟U盘
热门文章
- adb shell ime(系统服务:input_method)
- python 简历解析_pyresparser 一个简单的简历解析器,用于从简历中提取信息
- Android Studio实现一个垃圾分类系统(Kotlin版本)
- 工程管理,用网页就够了!——Wish3D Earth在线三维地球强势上线
- pureftpd mysql配置_Linux PureFTPd配置(完整版)
- js 数据按时间排序
- jawbone 固件_在Windows 7上将蓝牙Jawbone耳机用于BT-音频(麦克风或扬声器)
- 【华人学者风采】兰艳艳 中国科学院
- 墨卡托坐标以及墨卡托坐标转经纬度
- php整站源码下载旅游,【极品PHP源码】ThinkPHP给客户二次开发的旅游门户整站源码...