关于LVS几个问题总结

1、真实服务器DOWN机了,调度器如何发现的,怎么发现的?

这个只能依靠第三方健康软解监控LVS后端服务的健康状态,常用的方案就是结合keepalived组件实现。

keepalived主要有三个模块,分别是core、check和vrrp。

check负责健康检查,包括常见的各种检查方式: TCP_CHECK, HTTP_GET, SSL_GET, MISC_CHECK。

keepalived只有一个配置文件keepalived.conf,在里面就可以配置真实服务器的健康检查:

(1)、TCP_CHECK

    # 配置真实服务器
    real_server 192.168.2.222 6500 {    #指定IP和端口
    
        weight 1       # 权重,数值越大,权重越高 
        
        # 健康检查方式 常见有 TCP_CHECK, HTTP_GET, SSL_GET, MISC_CHECK(自定义脚本)
        TCP_CHECK {               # 通过TcpCheck方式判断RealServer的健康状态
            connect_timeout 10    # 连接超时时间
            nb_get_retry 3        # 重连次数
            delay_before_retry 3  # 重连时间间隔
            connect_port 6500     # 检测端口
        }
        
    }
    
(2)、HTTP_GET

    HTTP_GET {
        url {
            path check/200.jsp  # 检查的uri地址
            digest 1362a91278f0806aa1d33e1e26d67763 # 用keepalived自带的genhash生成,/usr/bin/genhash -s rsIP -p port -u uri
        }
        connect_timeout 3   # 链接超时时间
        nb_get_retry 3   # 重连次数
        delay_before_retry 3  # 重连时间间隔
        connect_port 6500  # 检测端口
    }
    
(3)、MISC_CHECK
   3.1 keepalived.conf配置:
    MISC_CHECK {
        misc_path "/etc/keepalived/misc_check.sh http://192.168.2.222:6500/check/200.jsp"    # 外部程序或者脚本的路径和参数
        misc_timeout 10   # 脚本执行的超时时间
        misc_dynamic    #动态权重标志。脚本返回0则检测成功权重不变,返回1表示失败权重设置为0
    }
    
    3.2 misc_check.sh脚本:
    #!/bin/bash
    # ./misc_check.sh http://192.168.2.222:6500/check/200.jsp
 
    if [ $# -ne 1 ]; then
        echo "Warning: command param error."
        exit 1
    else
        CHECK_URL=$1
        CMD=`/usr/bin/curl -I ${CHECK_URL} 2>/dev/null | grep "200 OK" | wc -l`
    
        if [ ${CMD} -eq 1 ]; then
             echo "Succ: Check proxy ${CHECK_URL} is succeed."
             exit 0
    
        else
            echo "Fail: check proxy ${CHECK_URL} is failed."
            exit 1
        fi
    fi


2、非活动连接数是如何确定的?

活动连接表示用户已经连接到服务器,并且正在数据传输。
非活动连接表示已经和服务器建立连接,并且数据已经传输结束,但是还没有断开连接。

lvs计算活动连接和非活动连接的方式:
NAT模型: 请求和回应的报文都会经过directory, 因此director可以准确的判断出活动的连接和非活动的连接。
DR模型: 请求只经过director,响应不经由director,但在tcp断开的时候, fin报文和最后一次的ack都会被director收到, 由此报文判断连接是否活动或断开。

3、LVS与Nginx负载均衡横向对比
在下面的链接中,总结和对比了三大主流软件负载均衡器对比(LVS、Nginx、HAproxy):
https://www.cnblogs.com/hukey/p/5580343.html

LVS-使用用Keepalived实现健康检查的示例
https://blog.csdn.net/guoxilen/article/details/78460445

LVS-直接路由(DR)模式示例
https://blog.csdn.net/guoxilen/article/details/78459690

lvs+nginx负载均衡
https://www.cnblogs.com/arjenlee/p/9262737.html

LVS高并发负载均衡实现
https://my.oschina.net/shyloveliyi/blog/489754

LVS学习笔记1
https://www.jianshu.com/p/f2f4f1920f8a

LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)
http://www.it165.net/admin/html/201401/2248.html

LVS原理详解以及部署
https://www.cnblogs.com/dswy/p/8418515.html

发布了106 篇原创文章 · 获赞 253 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/jingzi123456789/article/details/84027538