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

2018-02-23 12:06:44来源:cnblogs.com作者:shenxm人点击

分享

持续连接

    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

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台