本文主要是介绍LVS负载均衡架构原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Linux Virtual Server
Ipvs : 嵌入到linux的内核
IPVsadm:管理应用程序
负载均衡器
1、硬件:
F5BIG-IP
CitrixNetScaler
A10
2、软件
四层:tcp 之上的第四层协议
LVS:只能操作IP,端口 ,在操作系统内核中。
七层:http,ajp,https,(应用层)
nginx
haproxy
httpd
调度方法(静态方法和动态方法)
四种静态:
rr:轮循
wrr:
dh:
sh:
动态调度方法:
lc:最少连接
active*256+inactive
谁的小,挑谁
wlc:加权最少连接
(active*256+inactive)/weight
sed:最短期望延迟
(active+1)*256/weight
nq:never queue
LBLC:基于本地的最少连接
DH:
LBLCR:基于本地的带复制功能的最少连接
默认方法:wlc
类型:
NAT:地址转换
DR:直接路由
TUN:隧道
NAT:
集群节点跟director必须在同一个IP网络中;
RIP通常是私有地址,仅用于各集群节点间的通信;
director位于client和real server之间,并负责处理进出的所有通信;
realserver必须将网关指向DIP;
支持端口映射;
realserver可以使用任意OS;
较大规模应该场景中,director易成为系统瓶颈;
VIP:虚拟服务器地址
DIP: 转发的网络地址
RIP: 后端真实主机(后端服务器)
CIP:客户端IP地址
DR:
集群节点跟director必须在同一个物理网络中;
后端服务器(真实服务器)可以使用公网地址,实现便捷的远程管理和监控;
director仅负责处理入站请求,响应报文则由realserver直接发往客户端;
不支持端口映射;
VIP(隐藏)的意思:
不对外广播
被叫不响应
Node1 | VIP:192.168.1.251 | DIP:192.168.239.3 | 集群服务器 |
Node2 | RIP:192.168.1.248 | VIP:192.168.239.10 | RS,apache |
Node3 | RIP:192.168.1.249 | VIP:192.168.239.10 | RS,apache |
TUN:
集群节点可以跨越Internet;
RIP必须是公网地址;
director仅负责处理入站请求,响应报文则由realserver直接发往客户端;
realserver网关不能指向director;
只有支持隧道功能的OS才能用于realserver;
不支持端口映射;
Ipvsadm命令:
管理集群服务
添加:-A -t|u|fservice-address [-s scheduler]
-t:TCP协议的集群
-u:UDP协议的集群
service-address: IP:PORT
-f:FWM: 防火墙标记
service-address:Mark Number
修改:-E
删除:-D -t|u|fservice-address
#ipvsadm -A -t 172.16.100.1:80 -s rr
管理集群服务中的RS
添加:-a -t|u|fservice-address -r server-address [-g|i|m] [-w weight]
-t|u|f service-address:事先定义好的某集群服务
-r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
[-g|i|m]: LVS类型
-g:DR
-i:TUN
-m:NAT
[-wweight]: 定义服务器权重
修改:-e
删除:-d -t|u|fservice-address -r server-address
#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 –g
#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -g
查看
-L|l
-n:数字格式显示主机地址和端口
--stats:统计数据
--rate:速率
--timeout:显示tcp、tcpfin和udp的会话超时时长
-c:显示当前的ipvs连接状况
删除所有集群服务
-C:清空ipvs规则
保存规则
-S
#ipvsadm -S > /path/to/somefile
载入此前的规则:
-R
# ipvsadm -R </path/form/somefile----------------------------------------------------------------------------------------------------------------------------------
DR模式
VIP: 虚拟主机IP
DIP:
kernelparameter:
arp_ignore:定义接收到ARP请求时的响应级别;
0:只要本地配置的有相应地址,就给予响应;
1:仅在请求的目标(MAC)地址配置请求到达的接口上的时候,才给予响应;
arp_announce:定义将自己地址向外通告时的通告级别;
0:将本地任何接口上的任何地址向外通告;
1:试图仅向目标网络通告与其网络匹配的地址;
2:仅向与本地接口上(MAC)地址匹配的网络进行通告;
-----------------------------------------------------------------DR模式示例------------------------------------------------------------
Lvs DR模式集群步骤
1、 找一台主机作为DR(虚拟服务器),安装ipvsadm
a) Yum install ipvsadm
2、 在DR设置两个IP地址:
a) DIP: 192.168.1.134 ,设置静态ID
b) VIP:192.168.1.200 , ifconfig eth0:1 192.168.1.200/24 (取消绑定ifconfig eth1 down)
3、 找多台机器作为RS(apeche或者tomcat )
a) 两台:静态设置192.168.1.137
192.168.1.138
b) 修改报文源IP的设置,需要设置内核参数
i. echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
ii. echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
iii.echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
iv.echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
c) 在两台机器(RS)上,设置网卡的别名IP:192.168.1.200
i. ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200
d) 在两台机器(RS)上,添加一个路由
i. route add -host 192.168.1.200 dev lo:0
4、 DR上需要加一个路由设置:route add -host 192.168.1.200 dev eth0:1
5、 在RS 检查web服务是否正常
6、 在DR上使用ipvsadm添加集群服务
a) Ipvsadm –C
b) ipvsadm -A -t 192.168.1.200:80-s wlc
c) ipvsadm -a -t 192.168.1.200:80-r 192.168.1.137 -g -w 1
d) ipvsadm -a -t 192.168.1.200:80-r 192.168.1.138 -g -w 1
脚本
#!/bin/bash
#description : start realserver
VIP=125.38.38.64
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
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
/sbin/ifconfig lo:0 $VIP broadcast $VIPnetmask 255.255.255.255 up
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
这篇关于LVS负载均衡架构原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!