lvs


keepalived

同类软件 heartbeat
硬件设备:F5 netscaler radware

lvs

同类软件 haproxy nginx
硬件设备:F5 netscaler radware

ARP 协议
考点:
1.什么是ARP协议,ARP协议的工作原理

  全称 "Address Resolution Protocol" 地址解析协议。
  使用ARP协议可以通过ip地址获取物理地址(MAC地址)
  局域网中第一次通讯,ARP广播寻找目标主机,并缓存ip对应的MAC到本机的ARP表中。通讯的双方必须在一个网段。

​ 2. ARP带来的实际问题

利用arp缓存表进行arp欺骗,当有一台主机使用arp欺骗伪造网关mac地址导致不能上网,该如何排查

 - 设备接入时进行mac地址登记

​ 3.迁移网关和高可用服务器后无法上网

arping广播自己的mac地址
	/sbin/arping -I eth0 -c 3 -s 10.0.0.162 10.0.0.253
	/sbin/arping -U -I eth0 10.0.0.162

​ 4.命令

arp -a 查看arp缓存表
arp -d 清空arp缓存表

​ 5.应用场景

lvs DR 模式

——————————————————————————————————————————————

  1. lvs(linux virtual server) 可以代理TCP和UDP,并发量几万到10万
    ——————————————————————————————————————————————

项目介绍
集群的体系结构
集群中的ip负载均衡技术
集群中的负载调度

——————————————————————————————————————————————
2.术语
——————————————————————————————————————————————

VIP virtual ip address 虚拟ip地址
RIP real server ip address 真实的ip节点,web的地址
DIP director ip address 负载均衡器的内网ip
CIP client ip address 客户端的ip

——————————————————————————————————————————————
3.工作模式
——————————————————————————————————————————————

NAT模式 network address translation
TUN模式 tunneling
DR模式 direct routing 直接路由
FULLNAT模式 full network address translation

——————————————————————————————————————————————
3.1.DR模式direct routing 直接路由
——————————————————————————————————————————————

请求过程
	1.请求数据携带CIP和VIP 到达LVS, LVS通过调度算法选择一台后端主机并修改ARP表中VIP对应的mac地址转发到该realserver上。
	2.realserver 核验VIP和MAC,realserver 发现MAC地址是自己的但是VIP不是自己的,这时间会丢弃请求的数据包(通过在 realserver 上配置VIP解决该问题)
	3.局域网中同时配置多个VIP 会导致IP冲突,争抢路由广播(通过在lo 上配置vip,并通过内核抑制realserver的接收路由广播)
	4.realserver处理完毕经路由直接将结果发送给CIP 
特点
	1.要求在同一局域网内
	2.负载均衡器只做了mac地址的转发,因此只能代理相同端口
	3.webserver需要外网ip
	4.优点:并发很高 
	
	客户端CIP--->lvs --->分发到RIP--->直接将结果返回到客户端
				|
				|
			修改ARP中的mac地址为web物理地址
				
			a.在真实的web机器上绑定ifconfig lo:0 vip/24 up
			b.抑制ARP

——————————————————————————————————————————————
3.2.NAT模式 network address translation
——————————————————————————————————————————————

请求时改目标ip,数据返回时修改源IP
请求过程
	1.请求数据到达LVS(CIP:VIP)
	2.LVS广播转发请求到一台RIP,并将数据包的目标ip修改成该RIP(CIP:RIP) prerouting
	3.RIP 处理后将数据包发送给网关(RIP网关必须为DIP)(RIP:CIP)
	4.LVS 转换源ip地址后转发给CIP(VIP:CIP) postroting
特点:	
	1.支持端口转化
	2.realserver 可以是内网
	3.对LVS 压力大
	2.负载均衡开启内核转发 net.ipv.ip_forward=1

fullnat Lvs同时修改源和目标地址,返回时同时修改源和目标地址。这样lvs可以是多台,在多台lvs之前的的路由器上使用OSPF技术聚合

——————————————————————————————————————————————
3.3.TUN模式 tunneling
——————————————————————————————————————————————

二次封装数据包
1.数据到达LVS ,LVS进行二次封装,在目标地址中添加新的IP指向RIP
2.到达RIP,webserver进行解包,获取到VIP(需要在webserver lo上添加辅助ip,同时抑制vip。类似DR模式)
3.直接返回数据到客户端
4.与DR模式相比可以跨网段,跨机房

——————————————————————————————————————————————
4.调度算法 有8种调度算法,常用4种
——————————————————————————————————————————————

rr	round-robin			轮询算法 静态
wrr	weight round-robin	加权轮询 静态
dh	destination hashing	目标地址hash算法
sh  source hashing  	原地址hash 算法
wlc	weight least-connect 加权最小连接数调度  动态
lc
lblc Locality-Based Least Connections  基于局部性的最少链接
LCLCR Locality-Based Least Connections with Replication  带复制的基于局部性最少链接
sed:最短预期延迟(Shortest Expected Delay)
nq	never queue schedure 永不排队

——————————————————————————————————————————————
5.DR模式安装配置
——————————————————————————————————————————————

环境

 +++++++++++++++++++++++++++++++++++++++++++++
 192.168.0.2		DIP
 192.168.0.3		RIP	
 192.168.0.4		RIP
 192.168.0.20            VIP
 +++++++++++++++++++++++++++++++++++++++++++++

内核环境检查

lsmod |grep ip_vs    查看内核模块是否安装ip_vs(内核调度模块)
#如果有多个/usr/src/kernels/2.6.32 要与uname -r 一致
#如果没有要yum install kernel-devel
ln -s /usr/src/kernels/2.6.32-300.10.1.el5uek/ /usr/src/linux

安装ipvsadmin

wget  http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar xf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
#不需要configure,报错需要安装: yum install libnl* popt* -y
#rpm -ivh popt-static-1.13-7.el6.x86_64.rpm 
make && make install 

把ip_vs 加载到内核 /sbin/ipvsadm 或者 modprobe ip_vs
检查内核如果出现ip_vs表示安装成功 lsmd|grep ip_vs

另一种方法通过yum 安装ipvsadm

vi /root/ipvs.sh

#!/bin/bash
ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
for i in $(ls $ipvs_mods_dir|grep -o "^[^.]*")
do
  /sbin/modinfo -F filename $i &>/dev/null
  if [ $? -eq 0 ];then
    /sbin/modprobe $i
  fi
done

#加载ipvs内核模块
sh /root/ipvs.sh
lsmod | grep ip_vs

#
yum install ipvsadm -y 
# 
ipvsadm -Ln
#

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_announce = 0
sysctl -p

6.配置
6.1负载均衡端配置

#配置vip  lvs 上执行
ifconfig eth0:0 192.168.0.20/24 up
route add -host 192.168.0.20 dev eth0

6.2webserver 端配置

#在各个webserverd端绑定vip
#在 lo上配置,掩码32
ifconfig lo:0 192.168.0.20/32 up    
route add -host 192.168.0.20 dev lo
6.3 抑制webserver 端APR响应
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	

#参数
arp_ignore 整数
外来ip请求的arp回应限制
0(默认):只要网卡上有配的ip,ARP广播全部应答
1	:只回答接有网线的网卡上配置的IP
arp_announce 整数
对本地ip发出的arp回应作出相应级别的限制
0(默认) 在任意网络接口上的任何地址回应

快速启动

ipvsadm -A -t 192.168.0.20:80 -s rr -p 20	 添加虚拟主机
ipvsadm -a -t 192.168.0.20:80 -r 192.168.0.3 -g -w 1	添加web节点
ipvsadm -a -t 192.168.0.20:80 -r 192.168.0.4 -g -w 1	添加web节点
ipvsadm -L -n --stats  

——————————————————————————————————————————————
9.ipvsadm 命令常用参数
——————————————————————————————————————————————

ipvsadm --help
ipvsadm -C 	清空原有配置
ipvsadm --set  20 5 60  # tcp tcpfin udp 超时时间
#删除虚拟主机
ipvsadm -D -t 192.168.0.20:80 
-A 添加虚拟主机
-t 指定VIP
-s 指定算法
-p 会话保持
#删除节点
#ipvsadm -d -t 192.168.0.20:80 -r 192.168.0.4 
-a 添加web节点
-r 添加节点
-g DR模式
-w 指定权重
ipvsadm -L -n  查看配置信息
ipvsadm -Ln --stats 
ipvsadm -Lnc	查看链接数及链接状态
ipvsadm -Ln --threshods
ipvsadm -Ln --timeout

centos5 安装lvs
lvs裂脑
路由配合lvs

ipvsadm

ipvsadm - Linux Virtual Server administration

有两种基本的格式:

  1. ipvsadm COMMAND [protocol] service-address [scheduling-method] [persistence options]
  2. ipvsadm command [protocol] service-address server-address [packet-forwarding-method] [weight options]

格式1,用于维护 Virtual Server

格式2,用于维护RealServer

command 大写用于维护 virtual server,小写用于维护real server

短命令 长命令 解释
-A --add-service 添加virtual server
-E --edit-service 编辑virtual server
-D --delete-service 删除virtual server 及相关的real server
-C --clear 清空virtual server
-R --restore 从标准输入加载
-S --save 保存到标注输出
-a --add-server 添加real server
-e --edit-server 编辑real server
-d --delete-server 删除real server
-L,-l --list -Lnc 192.168.0.1
-Z --zero 清空匹配的包
--set tcp tcpfin udp 指定超时时间
--start-daemon master
--start-daemon backup
短命令 长命令 解释
-t --tcp-service tcp协议service
-u --udp-service udp协议service
-f --fwmark-service
-p --persistent [timeout] 回话保持,timeout 默认300s
-r --real-server
-g --gatewaying direct routing
-i --ipip tunneling
-m --masquerading NAT
-w --weight

scheduling-method

短命令 长 命 令
-s --scheduler rr round-robin
wrr weighted-round-robin
lc least-connection
wlc weighted-least-connection
lblc 相同客户端访问相同的服务,如果服务没有超负荷
lblcr
dh - Destination Hashing
sh Source hashing
sed - Shortest Expected Delay 最小延迟
nq Never Queue 1.优先分配到一个闲置的real server 、或最快的real server 2.如果都繁忙使用sed 调度算法

查询指令

短命令 长命令 解释
-c --connection 当前ipvs的 连接情况
--stats 输出状态信息
--rate 速率信息
--thresholds 输出real server的阈值信息
--persistent-conn 输出会话保持的信息
--sort 排序输出
--nosort 不排序
-n --numeric 不解析域名
--exact 精确的字节信息

事例

   ipvsadm -A -t 207.175.44.110:80 -s rr
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m

   Alternatively, this could be achieved in a single ipvsadm command.

   echo "
   -A -t 207.175.44.110:80 -s rr
   -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
   -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
   -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
   -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m
   -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m
   " | ipvsadm -R


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM