LVS笔记
集群 一组计算机 利用网络组成一个系统,每个节点都是运行其自己进程的一个独立服务器。
解决高并发 高吞吐
透明性 高性能 高可用性 可伸缩性 可管理性 可编程性
-
负载均衡集群 lvs nginx haproxy
-
高可用集群 keepalived
Linux Virtual Server
-
实现调度IPVS
-
管理工具ipvsadm
-
keepalived实现管理及高可用
-
CIP Client computer's IP address:公网IP,客户端使用的IP。
-
VIP Virtual IP address:Director用来向客户端提供服务的IP地址
-
RIP Real IP address:集群节点(后台真正提供服务的服务器)所使用的IP地址
-
DIP Director's IP address:Director用来和D/RIP 进行联系的地址
CIP ←→DIP←→ RIP
模式: NAT TUN DR FULLNAT
DR 直接路由模式
通过改写请求报文的目标MAC地址,将请求发给真实服务器,真实服务器将响应后的处理结果直接返回客户端。
LVS调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。
当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。
要求Director Server与Real Server都有一块网卡连在同一物理网段上
LVS调度算法 8-10
-
rr 轮询调度
-
wrr 加权轮询调度 wlc 加权最小链接数调度
-
dh 目的地址哈希调度
-
sh 源地址哈希调度
LVS安装
1
2
3
4
5
|
yum -y install kernel-devel libnl* popt* gcc
ln -s /usr/src/kernels/2 .6.32-642.1.1.el6.x86_64/ /usr/src/linux
tar zxvf ipvsadm-1.26. tar .gz
cd ipvsadm-1.26
make && make install
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
modprobe ip_vs lsmod | grep ip_vs
ip_vs 126897 0 libcrc32c 0000000000000000000000000000000000 1246 1 ip_vs ipv6 336282 265 ip_vs /sbin/ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn
ifconfig eth0:0 192.168.10.40
route add -host 192.168.10.1 dev eth0 route -n Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 ipvsadm -C ipvsadm -- set 30 5 60
ipvsadm -A -t 192.168.10.40:80 -s rr -p 20 //-D 删除
ipvsadm -a -t 192.168.10.40:80 -r 192.168.10.11 -g -w 1 //-d 删除
ipvsadm -a -t 192.168.10.40:80 -r 192.168.10.10 -g -w 1 # ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.40:80 rr persistent 20 -> 192.168.10.10:80 Route 1 0 0
-> 192.168.10.11:80 Route 1 0 0
|
RS端--绑定VIP
1
2
|
ifconfig lo:0 192.168.10.40 /32 up
route add -host 192.168.10.40 dev lo |
抑制ARP
1
2
3
4
|
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
|