持续连接

	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

最新文章

  1. Debian/Ubuntu server上安装安全更新
  2. 解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
  3. Android之输入框光标和Hint的位置
  4. 用Qemu模拟vexpress-a9 (四) --- u-boot引导kernel,用nfs挂载根文件系统
  5. zw版【转发·台湾nvp系列Delphi例程】HALCON OverpaintRegion1
  6. Python15-day1课后作业
  7. C#简单的tcpserver
  8. MySQL数据库事务剖析
  9. 并行编译加快VS C++项目的编译速度
  10. Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍
  11. 对 sql server 数据库的备份进行加密
  12. 【Zookeeper】源码分析之服务器(二)
  13. Servlet程序
  14. Shell命令-文件及目录操作之mkdir、mv
  15. 【openssl】利用openssl完成X509证书和PFX证书之间的互转
  16. 【转】Python模块学习 - fnmatch & glob
  17. python中处理.db文件借助navicat
  18. Eclipse安装插件的“最好方法”:dropins文件夹的妙用
  19. [整理]Assembly中的DLL提取
  20. 【C#/WPF】修改图像的DPI、Resolution

热门文章

  1. Python接口测试之对MySQL的操作(六)
  2. PyUV: Python高性能网络库
  3. bzoj1007 [HNOI2008]水平可见直线 - 几何 - hzwer.com
  4. 关于android系统启动不同activity默认过渡动画不同的一些认识
  5. [USACO12FEB]附近的牛Nearby Cows
  6. 【NOIP2017练习】论战大原题(并查集)
  7. js Date()日期函数浏览器兼容问题解决方法
  8. 修改phpMyAdmin导入SQL文件的大小限制
  9. POJ 3041_Asteroids
  10. VMware配置从U盘启动