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中,持久连接是为了用来保证当来自同一个用户的请求时能够定位到同 ...
随机推荐
- 关于SQL Server 的限制
经常被人问到关于SQL Server 的连接数限制, 或者最大的文件大小, 或者标准版和企业版的区别,以及Express上的 其实这些问题都可以在MSDN 上直接找到 SQL Server 2014 ...
- 学习使用windows下类似iptables的防火墙软件
项目地址:http://wipfw.sourceforge.net一.下载地址:http://sourceforge.net/projects/wipfw/files/安装:解压软件包后执行insta ...
- POJ 1679 判最小生成树的不唯一性 或 利用次小生成树求解
题目大意: 给定一个无向图,寻找它的最小生成树,如果仅有一种最小生成树,输出所有边的和,否则输出unique! 根据kruscal原理来说,每次不断取尽可能小的边不断添加入最小生成树中,那么可知如果所 ...
- 【BZOJ4559】成绩比较(组合计数,容斥原理)
题意: G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M- 1的整数.一位同学在必修课上可以获得的分数是1到Ui中的一个整数.如果在每门 ...
- 【Tomcat】tomcat启动后查看运行时JVM参数
Tomcat优化配置参考http://www.cnblogs.com/qlqwjy/p/8007490.html 1.启动服务后访问localhost,点击Server Status
- Linux下汇编语言学习笔记23 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- codevs——6221 数的统计
6221 数的统计 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 有一个人名字叫A,B总喜欢打他. 这 ...
- nginx: [emerg] unknown directive "聽" in D:\software03\GitSpace\cms\nginx-1.14.0/conf/nginx.conf:36
nginx: [emerg] unknown directive "聽" in D:\software03\GitSpace\cms\nginx-1.14.0/conf/nginx ...
- python异步回调函数的实现
#coding:utf-8 from socket import * import time #简单的服务器程序 监听用户连接,接收用户发来的信息,并返回反馈 def main(): HOST = & ...
- {head first} --- networking 1
Head first系列的书确实非常好,深入浅出解说网络的组成.让曾经那些生涩的概念生动起来. Chapter 1 维修物理网络 CAT5电缆: 两端为RJ-45接头(水晶头).内部为UTP(非屏蔽双 ...