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上进行如下操作
            [[email protected] ~]#ipvsadm -E -f 12 -s rr -p 300
            [[email protected] ~]#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
                [[email protected] 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
                此时在客户端
                    [[email protected] ~]#curl 192.168.74.88
                    sorry server

原文地址:https://www.cnblogs.com/shenxm/p/8461303.html

时间: 2024-10-14 06:26:44

LVS的持久连接、会话保持和高可用介绍的相关文章

LVS(五)LVS的持久连接

什么是持久链接 把某个客户端的请求始终定向到同一应用服务器上.对于LVS来说持久连接和算法没有关系.也就是使用任何算法LVS都可以实现同一客户端的请求转发到之前选定的应用服务器,以保持会话.而且还能实现同一客户端的不同请求都可以定向到同一应用服务器,比如集群中2台应用服务器,每个应用服务器都提供WEB服务和TELNET服务,那么只要客户端一样,即使它两次请求不同服务,也可以定向到同一应用服务器上. 所以LVS支持2中模式 PPC:持续端口连接,将来自同一客户端对同一服务定向到同一应用服务器上 P

实现LVS的持久连接以及健康状态监控功能

一.实现LVS的持久连接. 功能:无论ipvs使用何种scheduler,其都能够实现在指定时间范围内始终将来自同一个ip地址的请求发往同一个RS:此功能是通过lvs持久连接模板实现,其与调度方法无关. ①在LVS上设置一个虚拟网卡别名. ②在VIP上用iptables 打上标记,把80和443端口标记为99.  ③设置LVS的虚拟IP(VIP)和真实IP(DIP). ④测试.  [持久连接默认十分钟] 二.实现LVS健康状态监控功能. 实现监控状态监控基于持久连接的基础上进行试验. ①安装包

LVS的持久连接及应用的实例

LVS持久连接的意义: 在固定时间内将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS:在指定时长内不再根据调度算法进行调度,会根据内存的ipvs的连接模版里的记录信息将同一个客户端的请求定向至同一个后端RS: 持久连接的类型: 1.PCC:持久客户端连接,将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS (只是根据Vip,所有服务都是集群服务,不同的服务都会被定向至同一个RS): 2.PPC:持久端口连接,将来自于同一个客户端发往某VIP的某端口的所有请求统统定向至同一个

LVS的持久连接和awk/sed/grep的学习笔记

一.LVS持久连接的模式 1.PPC(persistent port connection) ipvsadm -A|E 192.168.10.1:80 -p 600 定义VIP为192.168.10.1director的80端口为持久连接,也就是只把web服务加入集群服务,可以通过改变端口实现不同服务的持久连接且把不同服务加入集群服务 2.PCC(persistent client connection) ipvsadm -A|E 192.168.10.1:0 -p 600 定义VIP为192.

linux之LVS的DR模式搭建以及配置高可用管理LVS(heartbeat,keepalive)

LVS/DR Realserver: 172.25.44.6 172.25.44.7 Virtualserver: VR3:172.25.44.3 VR5:172.25.44.5 Vip:172.25.44.100 Lvs和realserver必须在同一网段 ######################## Virtualserver: ip addr add 172.25.44.100/24 dev eth0   ##添加vip ip addr show yum install ipvsadm

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 Client(测试) :192.168.1.100 操作系统版本:CentOS release 6.4MySQL数据库版本:5.6.14keepalived版本:1.2.7LVS版本:1.26 所有环境均为虚拟机 二.设计思路 1. 服务器A和B,通过mysql的slave进程同步数据.2. 通过k

MySQL_MHA高可用介绍

 MySQL MHA架构介绍 MHA ( Master High Availability )目前在MySQL高可用方面是一个相对成熟的解决方案 ,它由日本DeNA公司youshimaton (现就职于Facebook公司)开发,是- 套优秀的作为MySQL高可用性环境 下故障切换和主从提升的高可用软件.在MySQL故障切换过程中, MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. github

Cluster了解+LB{ LVS(四种模式)+ipvs+lvs持久连接 }

Cluster: 系统扩展的两种思路: scale up:向上扩展 -- 性能更好的主机,替换旧的主机 scale out:横向扩展 -- 添加服务器(但是服务是可以分开的,独立的) cookie:服务器端生成一个cookie-id,发送给客户端,客户端每次访问,都会将cookie发送给服务器端 session:服务器端会比对cookie和seesion的对应情况(服务器内存中) 实现 LB(负载均衡)-- 问题所在 1.DNS: 不要使用dns 去实现 LB,因为DNS 解析会缓存,所以效果很

LVS负载均衡之session解决方案 持久连接

1. 持久连接是什么? 1.1 在LVS中,持久连接是为了用来保证当来自同一个用户的请求时能够定位到同一台服务器. 2. 为什么会用到持久连接? 2.1 cookie/session机制的简单说明: 在Web服务通信中,HTTP本身是无状态协议,不能标识用户来源,此时出现了一个问题,当用户在一个网站浏览了A网页并跳转到B网页,此时服务器就认为B网页是一个新的用户请求,你之前的登陆的信息就都丢失了,头疼.为了记录用户的会话信息,我们的开发者就在客户端/服务器端软件提供了cookie/session