LVS负载集群:
IPVS:工作在内核
ipvsadm:管理IPVS
keepalived和ipvsadm并行的,都可以直接管理内核ipvs。
keepalived和LVS亲密无间,keepalived就是为LVS诞生。
LVS技术小结:
1.真正实现调度的工具是IPVS,工作在linux内核层面。
2.LVS自带的IPVS管理工具是ipvsadm。
3.keepalived实现管理IPVS及负载均衡器的高可用。
4.Red hat工具Piranha WEB管理实现调度的工具IPVS。
LVS术语:
VIP:虚拟IP;
RIP:真是IP;
DIP:Director IP;
CIP:客户端主机IP;
LVS集群的四种模式:
NAT
DR ***
TUN
FULLNAT
ARP协议:
全称"Address Resolution Protocol":地址解析协议;IP地址转换成相应的物理地址(MAC地址);
ARP小结:
1.ARP全称
2.实现局域网把IP地址转换为MAC地址
3.MAC 48位主机的物理地址,局域网内唯一
4.ARP协议和DNS有点相似之处。不同点是:DNS是在域名和IP之间的解析,另外,ARP协议不需要配置服务
,而DNS要配置服务才行。
5.ARP协议是三层协议
LVS DR模式:
1.通过更改数据包的目标MAC地址实现数据包转发的。注意源IP地址仍是CIP,目的IP地址仍是VIP。
2.请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式比)
3.因DR模式是通过MAC地址的改写机制实现的转发,所有节点和LVS要处于一个局域网
4.需要注意RS节点的VIP的绑定(lo:vip/32,lo1:vip/32)和ARP抑制问题
5.RS节点的默认网关不需要是调度器LB的DIP,而直接是IDC机房分配的上级路由器的IP(这是RS带有外网IP
地址的情况),理论讲:只要RS可以出网即可,不是必须要配置外网IP。
6.目的MAC地址的改写,调度器LB无法该变请求的报文的目的端口(和NAT的区别)
7.调度器LB支持几乎所有的UNIX,LINUX系统,不支持WINDOWS系统。真实服务器RS节点可以是WINDOWS系统。
8.DR模式效率高,配置麻烦,访问量不大的情况,可以用haproxy、nginx,日1000-2000w PV或1万以下
9.直接对外的访问业务,例如:web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQL,
存储系统RS节点,最好用内部IP地址。
NAT模式:入站DNAT,出站SNAT,入站出站都经过LVS,可以修改端口
DR模式:修改数据包的目的MAC地址,入站经过LVS,出站不经过LVS,直接返回客户,不能改端口,适合局域网LAN。
TUN模式:不改变数据包内容,数据包外部封装一个IP头,入站经过LVS,出站不经过LVS,直接返回客户,不能改端口,适合局域网LAN/WAN。
LVS和节点之间通过隧道通信。
LVS调度算法:
固定算法:rr(轮询),wrr(权重轮询),dh(目标地址哈希),sh(源地址哈希)
动态算法:*wlc(加权最小连接),lc(最小连接),lblc,lblcr,SED,NQ
WEB
LB01(nginx+keepalived) 10.0.1.3
VIP:10.0.1.31
LB02(nginx+keepalived) 10.0.1.5
VIP:10.0.1.32
WEB1 10.0.1.6 LAMP RS1(真实服务器)
WEB2 10.0.1.9 LNMP RS2(真实服务器)
安装LVS
安装准备命令:lsmod|grep ip_vs(验证keepalived是否安装)
安装LVS:①yum install ipvsadm -y3、②命令:ipvsadm(有则安装成功)
配置IP
1.ping IP,起初选的IP是ping不通。以10.0.1.31为例(IP随意分配),添加这个IP
2.lb01:添加一个IP-->ip addr add 10.0.1.31/24 dev eth0 label eth0:1
LB01(LVS的配置过程)
第一步:
新安装,清除列表,重头再来
ipvsadm -C
第二步:
添加IP(虚拟服务)/V server
指定IP:
ipvsadm -A -t 10.0.1.31:80 -s rr
查看IP:
ipvsadm -LN
// TCP 10.0.1.31:80 rr(V server,但没有节点)
添加RS1节点:
ipvsadm -a -t 10.0.1.31:80 -r 10.0.1.6:80 -g
查看:
ipvsadm -Ln
// TCP 10.0.1.31:80 rr
// --> 10.0.1.6:80 Route 1 0 0 *(新增加了一个节点)
添加RS2节点:
ipvsadm -a -t 10.0.1.31:80 -r 10.0.1.9:80 -g
查看:
ipvsadm -Ln
// TCP 10.0.1.31:80 rr
// --> 10.0.1.6:80 Route 1 0 0
// --> 10.0.1.9:80 Route 1 0 0 *(新增加了一个节点)
##如果节点导错了,可以删除,重新导
ipvsadm -d -t 10.0.1.31:80 -r 10.0.1.9:80
ipvsadm -Ln
// TCP 10.0.1.31:80 rr
// --> 10.0.1.6:80 Route 1 0 0
&&可以增加会话保持
-p (会话保持时间)
ipvsadm -A -t 10.0.1.31:80 -s rr -p 300
&&设置超时参数
ipvsadm --set 30 5 60
第三步:
在负载均衡上做一个host解析:
vi /etc/hosts
10.0.1.6 www.etiantian.org bbs.etiantian.org(以此为例,对其他的IP也要验证)
测试VIP,RIP1,RIP2能不能访问:
①ping www.etiantian.org
②curl www.etiantian.org
注意:对VIP测试,要特别注意,一般不要再负载均衡器上测试,要选择别的客户端(真正的客户端)来验证。
第四步
RS绑定VIP
ip addr add 10.0.1.31/32 dev lo label lo:1 *临时生效
route add -host 10.0.1.31 dev lo
第五步
对RS抑制ARP响应方法如下:
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
可以查询访问结果,通过ipvsadm -Ln
LVS缺点:只能手工配置,没有健康检查
健康检查功能:
如果其中一台服务器停止了,LVS没有健康检查功能,所以ipvsadm -Ln列表中还有这台服务器。
LVS裂脑问题???
LVS故障排查:
熟悉LVS的工作原理
1.调度器上LVS调度规则及IP的正确性
2.RS节点上VIP绑定和arp抑制的检查
生产处理思路:
1)对RS绑定的VIP做实时监控;
2)RS绑定的VIP做成配置文件
ARP抑制的配置思路
1)如果是单个VIP,那么可以用stop传参设置0
2)如果rs端有多个VIP绑定,此时,即使是停止VIP绑定也一定不要置0
3.RS节点上自身提供服务的检查(DR不能端口转换)
4.辅助排除工具有tcpdump,ping
5.负载均衡和反向代理集群的三角形排查理论
keepalived解决了几个问题:a.管理的问题;b.健康检查的问题;c.LVS的高可用
Keepalived配置
1.vi keepalived.conf
2.ip addr del 10.0.1.32/24 dev eth0
3.ipvsadm -C