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