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中,持久连接是为了用来保证当来自同一个用户的请求时能够定位到同 ...
随机推荐
- SQLAlchmy模块详解
之前写过一篇博客介绍过sqlalchemy的基本用法,本篇博客主要介绍除增删改查以外SQLAlchemy对数据库表的操作,主要内容有单表操作.一对多操作.多对多操作. 一.单表操作 单表操作的增删改查 ...
- STM32F407 开发环境搭建 程序下载 个人笔记
详细资料: http://www.openedv.com/thread-13912-1-1.html 需要安装的软件: 1.keil(MDK,必选),用keygen破解 2.CH340驱动,(usb串 ...
- HDU 2897 经典巴什博弈
从n个石子中每次取p~q个,求先手能否获胜 可以先列举一部分数据,然后观察可得总是在p+q中循环,所以只要用n对p+q取模就好了 #include <cstdio> #include &l ...
- android开发里跳过的坑-AS导入NDK工程提示错误 No such property: sdkHandler for class: com.android.build.gradle.LibraryPlugin
接到一个NDK工程需要调试,导入后发现总是提示错误 Error:(37, 1) A problem occurred evaluating project ':libuvccamera'.> N ...
- I - Balancing Act POJ - 1655
Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. Deleting any node from the t ...
- Android GIS开发系列-- 入门季(12) 显示载天地图
在项目中可以经常需要动态加载一些图层,像投影地图服务.投影地图服务器.其实网上有大量这样的服务,比如天地图官网, . 随便点开一个服务,里面有相关的信息.那如何加载这样图层服务呢. 一.首先感谢这篇博 ...
- [AngularJS] Store the entry url and redirect to entry url after Logged in
For example when a outside application need to visit your app address: https://www.example.com/#/lob ...
- iOS 基于 MVC 的项目重构总结
关于MVC的争论 关于MVC的争论已经有非常多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你觉得的MVC的问题,一定是你自己理解的问题(资深架构师请自己主动忽略本文) ...
- HDU 4869 Turn the pokers (2014多校联合训练第一场1009) 解题报告(维护区间 + 组合数)
Turn the pokers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Django打造大型企业官网(一)
一.nvm的安装 (1)下载:nvm1.16 (2)安装完成后添加环境变量 C:\Users\Administrator\AppData\Roaming\nvm (3)修改settings.txt,将 ...