lvs
集群:
1.一组通过高速网络互联的计算组,并以单一系统的模式加以管理
2.将很多服务器集中在一起,提供同一种服务,在客户端看来就像是只有一个服务器
3.可以在付出较低成本的情况下获取在性能,可靠性,灵活性方面的相对较高的收益
4.任务调度是集群系统中的核心技术
类型:
1.HPC(高性能计算集群)
--通过以集群开发的并行应用程序,解决复杂的科学问题。
2.LB(负载均衡)
--客户端负载在计算机集群中尽可能平均分摊
3.HA(高可用)
--避免单点故障,当一个系统发生故障时,可以快速迁移。
lvs:
可以实现高可用的,可伸缩的web、mailcache、media等网络服务
最终目标是利用linux操作系统和lvs集群软件实现一个高可用、高性能、低成本的服务器应用集群
LVS集群组成(工作在传输层,基于端口)
前端:负载均衡层
--由一台或多台负载调度器构成
中间:服务器群组层
--由一组实际运行应用服务的服务器组成
底端:数据共享存储层
--提供共享存储空间的存储区域
LVS术语:
director server 调度服务器
--将负载分发到real server的服务器
real server 真实服务器
--真正提供应用服务的服务器
VIP 虚拟IP地址
--公布给用户访问的虚拟IP地址
RIP 真实IP地址
--集群节点上使用的IP地址
DIP
--调度器连接节点服务器的IP地址
LVS工作模式:
NAT 模式
-通过网络地址转换实现的虚拟服务器;大并发访问时,调度器的性能成为瓶颈
DR模式
-直接使用路由技术实现虚拟服务器;节点服务器需要配置VIP,注意MAC地址广播
TUN模式
-通过隧道方式实现虚拟服务器(不常用)
负载均衡调度算法:
LVS目前实现了10种调度算法,常用调度算法有4种
rr 轮询 round robin
--将客户端请求平均分发到real server
wrr加权轮询 weighted round robin
--根据real server 权重进行轮询调度
lc 最少连接 least connections
--选择连接数最少的服务器
wlc加权最少连接Weighted Least-Connection
--根据real server权重值,选择连接数最少的服务器
sh源地址散列 source hashing
--根据请求的目标,作为散列键(hash key)从静态分配的散列表找出对应的服务器。
dh目标地址散列 destination hashing
lblc基于局部性的最少链接Locality-Based Least-Connection
lblcr带复制的基于局部性最少链接 Locality-Based Least-Connection with Replication
sed最短的期望的延迟Shortest Expected Delay
nq最少队列调度Never Queue
lvs+net:
#44,55的网关是33
B机:
#sysctl -p(内核路由转发功能)
#cat /etc/sysctl.conf
net.ipv4.ip_forword = 1
#yum -y install ipvsadm
#ipvsadm -A -t 192.168.2.33:80 -s rr
#ipvsadm -a -t 192.168.2.33:80 -r 192.168.4.44:80 -m
#ipvsadm -a -t 192.168.2.33:80 -r 192.168.4.55:80 -m
#service ipvsadm save
#cat /etc/sysconfig/ipvsadm(配置文件)
#chkconfig ipvsadm on
#ipvsadm -Ln
lvs+dr:
配置realserver(44,55):
1.绑定vip
#ifconfig lo:1 vip/32
#ifconfig lo:1
2.修改网卡接口的运行参数,帮助兄弟接口收发ip包
方法1
# sysctl -a | grep arp_ig
# echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf
# echo 'net.ipv4.conf.lo.arp_ignore = 1' >> /etc/sysctl.conf
# sysctl -a | grep arp_an
# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
# sysctl -p
方法2
#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore (忽略arp广播包)
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce (帮助兄弟接口收发ip包)
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
配置分发器:
1.绑定vip
#ifconfig ens33:1 vip/32
#ifconfig ens33:1
2.添加linux虚拟服务,并添加realserver
#yum -y install ipvsadm
#ipvsadm -A -t vip:80 -s rr
#ipvsadm -a -t vip:80 -r 192.168.4.44:80 -m
#ipvsadm -a -t vip:80 -r 192.168.4.55:80 -m
#ipvsadm -Ln
3.检查
#ipvsadm -Ln --stats
ipvsadm手册
管理集群服务: 添加:-A -t|u|f service-address [-s scheduler] -t:TCP协议的集群 service-address: IP:PORT -u:UDP协议的集群 service-address: IP:PORT -f :FireWallMark(FWM),防火墙标记 service-address: Mark Number example: # ipvsadm -A -t 10.10.10.1:80 -s rr 修改:-E 使用格式跟-A选项相同 删除:-D -t|u|f service-address 管理集群服务中的Real Server: 添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight] -t|u|f service-address:事先定义好的某集群服务 -r server-address:real server的地址,在NAT模型中,可以使用IP:PORT实现端口映射 [-g|i|m]:LVS类型 -g:DR -i:TUN -m:NAT [-w weight]:定义服务器权重 example: # ipvsadm -a -t 10.10.10.1:80 -r 10.10.10.11 -m # ipvsadm -a -t 10.10.10.1:80 -r 10.10.10.12 -m 修改:-e 使用格式跟-a选项相同 删除:-d -t|u|f service-address -r server-address 查看: -L | -l :显示规则 -n:以数字格式显示主机地址和端口 -c:显示当前ipvs连接状况 --stats:显示统计信息 --rate:显示速率 --timeout:显示tcp、tcpfin、udp会话超时时长 # ipvsadm -L -n --timeout Timeout (tcp tcpfin udp): 900 120 300 --daemon:显示进程状态以及多播端口 --sort:排序显示 设置tcp、tcpfin、udp会话超时时长: # ipvsadm --set tcp tcpfin udp 删除所有集群服务: -C:清空ipvs规则 # ipvsadm -C 保存规则:-S # ipvsadm -S > /path/to/file 恢复规则:-R # ipvsadm -R < /path/to/file 清空服务计数器:-Z [-t|u|f service-address] # ipvsadm -Z [-t|u|f service-address] 查看RealServer持久连接: # ipvsadm -L -n --persistent-conn
|
在LVS上新增Service
[命令]:
ipvsadm -A -t <VIP>:<Port> -s <schedule: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq>
[实例]:
在LVS中为http协议添加一个VIP为1.1.1.1的service, 并设置调度方式为Round Robin
ipvsadm -A -t 1.1.1.1:80 -s rr
新增Real Server
[命令]:
ipvsadm -a -t <VIP>:<Port> -r <VIP>:<Port> <Forward Mode: -b | -m | -g | -i >
[实例]:
以DR方式为VIP1.1.1.1的LVS新增Real IP为192.168.1.2的Real Server
ipvsadm -a -t 1.1.1.1:80 -r 192.168.1.2:80 -g
查看所有的LVS以及对应的Real Server(常用)
[命令]:
ipvsadm -l
[实例]:
查看LVS以及对应的Real Server
ipvsadm -l
查看LVS以及对应的Real Server (不解析IP和PORT)
ipvsadm -ln
InActConn 指非活跃连接数,我们将处于 TCP ESTABLISH 状态以外的连接都称为不活跃连接。例如处于 SYN_RECV 状态的连接,处于 TIME_WAIT 状态的连接等。 |
ipvsadm -l --rate
--rate选项是显示速率信息 CPS (current connection rate) 每秒连接数 InPPS (current in packet rate) 每秒的入包个数 OutPPS (current out packet rate) 每秒的出包个数 InBPS (current in byte rate) 每秒入流量(字节) OutBPS (current out byte rate) 每秒入流量(字节) |
ipvsadm -l -status
--stats 选项是统计自该条转发规则生效以来的 Conns (connections scheduled) 已经转发过的连接数 InPkts (incoming packets) 入包个数 OutPkts (outgoing packets) 出包个数 InBytes (incoming bytes) 入流量(字节) OutBytes (outgoing bytes) 出流量(字节) |
在LVS上删除一个Service
[命令]:
ipvsadm -D -t <VIP>:<PORT>
[实例]:
删除VIP为1.1.1.1的Service
ipvsadm -D -t 1.1.1.1:80
在LVS上删除一个Real Server
[命令]:
ipvsadm -d -t <VIP>:<PORT> -r <RIP>:<PORT>
[实例]:
删除VIP为1.1.1.1对应的Real Server 192.168.1.1
ipvsadm -d -t 1.1.1.2:80 -r 192.168.1.1:80
在LVS上清空所有的Service以及所有的Real Server
[命令]:
ipvsadm -C