LVS的持久连接、会话保持和高可用介绍
持续连接
1)持久连接(lvs persistence)模板:
实现无论使用任何调度算法,在一段时间内(默认360s),能够实现将来自同一个地址的请求始终发往同一个RS
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-p # :定义持久时长
2)持久连接实现方式:
每端口持久(PPC):每个端口对应定义为一个集群服务,每个集群服务单独调度,同一服务持久
每防火墙标记持久(PFWMC ):基于防火墙标记定义集群服务,可实现将多个端口上的应用统一调度,即所谓的port Affinity,同一防火墙标记持久
每客户端持久(PCC ):基于0端口(表示所有服务)定义集群服务,即将客户端对所有应用的请求都调度至后端主机,必须定义为持久模式,所有服务持久将vip的端口定义为0,则表示所有请求都将发送后台服务器。
3)具体实现
在VS上进行如下操作
[root@centos7 ~]#ipvsadm -E -f 12 -s rr -p 300
[root@centos7 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 12 rr persistent 300
-> 192.168.74.129:0 Route 1 0 0
-> 192.168.74.133:0 Route 1 0 0
session保存机制(会话机制)
session绑定(session sticky)
始终将同一个请求者的请求发送到同一台RS(第一次请求由算法调度)
缺陷:没有容错能力,若此RS宕机,则会话丢失,并且将同一请求发送到同一RS有损均衡效果。
session复制(session cluster)
在RS之间同步session,因此每个RS都保持集群中的所有session
缺陷:增加了RS的负担,对大规模的集群不适用
session服务器(session server),redis:
用单独一组服务器来管理session
LVS的高可用
1.Director 不可用,整个系统将不可用,SPoF Single Point of Failure
解决方案:高可用
keepalived heartbeat/corosync
2.某RS不可用时,Director 依然会调度请求至此RS
解决方案:由Director 对各RS健康状态进行检查,失败时禁用,成功时启用
keepalived heartbeat/corosync, ldirectord
检测方式:
(a) 网络层检测,icmp
(b) 传输层检测,端口探测
(c) 应用层检测,请求某关键资源
RS 全不用时:back server, sorry server
ldirectord
ldirectord :监控和控制LVS 守护进程,可管理LVS 规则
包名:ldirectord-3.9.6-0rc1.1.1.x86_64.rpm
文件:
/etc/ha.d/ldirectord.cf 主配置文件
/usr/share/doc/ldirectord-3.9.6/ldirectord.cf 配置模版
/usr/lib/systemd/system/ldirectord.service 服务
/usr/sbin/ldirectord 主程序
/var/log/ldirectord.log 日志
/var/run/ldirectord.ldirectord.pid pid 文件
ldirectord 配置文件示例
checktimeout=3 如果3秒没有反应就认为是有故障了
checkinterval=1 表示一秒检查一次后端的服务器
autoreload=yes 自动加载配置文件,不用重启就可以生效
logfile=“/var/log/ldirectord.log“ 日志文件
quiescent=no down 时yes权重为0 ,no为删除
virtual=5 指定VS的FWM或IP:port
real=172.16.0.7:80 gate 2 gate表示dr模式,2表示权重为2
real=172.16.0.8:80 gate 1 权重为1
fallback=127.0.0.1:80 gate #sorry server 定义后面的VS全部宕机了,由谁来提供服务
service=http 服务类型
scheduler=wrr 调度算法
checktype=negotiate 定义检查的类型为协商模式
checkport=80 检查的端口
request="index.html"
receive=“Test Ldirectord" 表示检查的时候看到什么字样就可以说是健康的,是index.html中的,注意大小写敏感
3.由VS对各RS进行健康状态检查的实现
1)编写脚本来实现
#!/bin/bash
while true;do
curl 192.168.74.133 &> /dev/null && ipvsadm -a -f 12 -r 192.168.74.133 &>/dev/null || ipvsadm -d -f 12 -r 192.168.74.133 &>/dev/null
sleep 1
done
2)通过ldirectord来实现
1、
yum install ldirectord-3.9.5-5.1.x86_64.rpm
rpm -ql ldirectord
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/ ###把模板拷贝到配置文件的目录当做配置文件
2、
ipvsadm -C ##清空之前的集群服务,在配置文件里可以定义集群服务,并对RS进行实时监控
ipvsadm -Ln
3、
vim /etc/ha.d/ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=yes
quiescent=no
# Sample for an http virtual service
virtual=192.168.74.88:80
real=192.168.74.133:80 gate
real=192.168.74.129:80 gate
fallback=127.0.0.1:80 ##表示两台VS都有故障了就由本机来代替,这样本机也得装一个httpd服务
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
receive="welcom" ##表示收到index.html里有welcom字样就认为机器是好的
在本机也安装一个httpd服务
vim /var/www/html/index.html ##这样两台RS都荡机了就有本机提供服务显示sorry server字样
sorry server
4、测试
分别宕机一台和两台RS
[root@centos7 resource.d]#ipvsadm -Ln ##这是两台都宕机的显示,有本机提供服务
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.74.88:80 rr
-> 127.0.0.1:80 Route 1 0 0
此时在客户端
[root@redhat7 ~]#curl 192.168.74.88
sorry server
LVS的持久连接、会话保持和高可用介绍的更多相关文章
- LVS(五)LVS的持久连接
什么是持久链接 把某个客户端的请求始终定向到同一应用服务器上.对于LVS来说持久连接和算法没有关系.也就是使用任何算法LVS都可以实现同一客户端的请求转发到之前选定的应用服务器,以保持会话.而且还能实 ...
- 利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境
应用背景: MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动 切换到另外一台主机.LVS和Keppalived可以设定一个VIP来实 ...
- lvs+keepalived部署k8s v1.16.4高可用集群
一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...
- LVS + Keepalived + Nginx基于DR模式构建高可用方案
在大型网站中一般服务端会做集群,同时利用负载均衡器做负载均衡.这样有利于将大量的请求分散到各个服务器上,提升网站的响应速度.当然为了解决单点故障的问题,还会做热备份方案.这里演示利用LVS做负载均衡器 ...
- MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验【转】
一.环境Master(主机A):192.168.1.1Slave(主机B) :192.168.1.2 W-VIP(写入) :192.168.1.3 R-VIP(读取) :192.168.1.4 ...
- 24、Keepalived高可用介绍
24.1.什么是keepalived: Keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务节点的状态,后来又加入了可以实现高可用的 VRRP ...
- Keepalived & LVS: 实现web的负载均衡和高可用
目录 1. 环境介绍2. LVS DR模型中Realserver上的准备3. ha上的准备4. 配置keepalived5. 测试Realserver的切换6. failback页面测试7. keep ...
- MHA 高可用介绍
目录 MHA 介绍 MHA 简介(Master High Availability) MHA 工作原理(转载) MHA 架构 MHA 工具 Manager 节点 Node 节点 MHA 优点 MHA ...
- 【转】LVS负载均衡之session解决方案 持久连接
原文地址:http://minux.blog.51cto.com/8994862/1744761 1. 持久连接是什么? 1.1 在LVS中,持久连接是为了用来保证当来自同一个用户的请求时能够定位到同 ...
随机推荐
- LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- jQuery学习之------选择器
a.id选择器 <div id=”test1”></div> var div1=$(“#test1”); //同css的写法一样id选择器用#号实 ...
- NYOJ-58最少步数,广搜思想!
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 -> Link <- 这个题深搜广搜都是可以的,迷宫已经给出了,就看怎么做了:一般起点终点确定用广搜 ...
- URAL 1297 求最长回文字符串
有种简单的方法,数组从左到右扫一遍,每次以当前的点为中心,只要左右相等就往左右走,这算出来的回文字符串是奇数长度的 还有偶数长度的回文字符串就是以当前扫到的点和它左边的点作为中心,然后往左右扫 这是O ...
- 【IntelliJ 】设置 IntelliJ IDEA 主题和字体的方法
2 主题修改 2.1 界面主题修改 如上图所示,依次点击Files -> Settings,进入如下界面: 标注1:主题选择区: 标注2:Darcula.IntelliJ 和 Windows,三 ...
- redis可视化界面的操作【二十一】
1.安装 2.linux服务器中开启linux服务 root@qiaozhi:~# cd /usr/local/redis root@qiaozhi:/usr/local/redis# ./bin/ ...
- Linux下汇编语言学习笔记13 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- MVC view页面需要多个model,复杂网页的处理
需求描述 一个比较复杂的页面,界面中包含的元素数据来自于许多个有关联或者无关联的表,然后我们要做的就是将数据呈现在界面上. 10年前大概都是这么干的 直接写一个复杂的SQL语句,返回一个包含所需数据的 ...
- POJ3295 Tautology 解题报告
直接上分析: 首先 弄清各种大写字母的操作的实质 K 明显 是 and & A 是 or | N 是 not ! C 由表格注意到 当 w<=x 时 值为1 E 当 ...
- springboot 关于第三方包 打包问题
第三方包: 添加library 依赖 在pom.xml中配置 <resources> <resource> <directory>lib</directory ...