lvs命令介绍及DR工作模式搭建

一.LVS安装

1.yum  install   lvsdam  -y

lvs命令介绍及DR工作模式搭建_第1张图片
安装效果

LVS安装提示:

1)CENTOS 5上安装LVS,使用1.24版本。不要用1.26。

2)CENTOS 6.4安装LVS,使用1.26版本 yum install libnl* popt* -y。

3)安装LVS后,要执行ipvsadm(modprobe ip_vs)把ip_vs模块加载到内核。

2.ipvsadm命令选项解释:

-A         在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。 

-E         编辑内核虚拟服务器表中的一条虚拟服务器记录。 

-D         删除内核虚拟服务器表中的一条虚拟服务器记录。 

-C         清除内核虚拟服务器表中的所有记录。 

-R         恢复虚拟服务器规则 

-S          保存虚拟服务器规则,输出为-R 选项可读的格式 

-a          在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器 

-e          编辑一条虚拟服务器记录中的某条真实服务器记录 

-d          删除一条虚拟服务器记录中的某条真实服务器记录 

-L|-l       显示内核虚拟服务器表 

-Z          虚拟服务表计数器清零(清空当前的连接数量等) 

--set       tcp tcpfin udp  设置连接超时值 

--start-daemon        启动同步守护进程。

--stop-daemon        停止同步守护进程 

-h --help                  显示帮助信息 

其他的选项: 

-t      说明虚拟服务器提供的是tcp 的服务[vip:port] 

-u     说明虚拟服务器提供的是udp 的服务[vip:port] 

-r      真实的服务器[Real-Server:port] 

-f      说明是经过iptables 标记过的服务类型。 

-s      使用的调度算法,rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc. 

-p       持久稳固的服务。该参数秒内来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。 

-g        指定LVS 的工作模式为直接路由模式DR模式(也是LVS 默认的模式) 

-i         指定LVS 的工作模式为隧道模式 

-m       指定LVS 的工作模式为NAT 模式 

-w       真实服务器的权值  

-c        显示LVS 目前的连接 如:ipvsadm -L -c 

--timeout    显示tcp tcpfin udp 的timeout 值 

如:ipvsadm -L --timeout  ->Timeout (tcp tcpfin udp): 900 120 300 

--stats    显示统计信息 

--rate      显示速率信息 

--sort      对虚拟服务器和真实服务器排序输出 

 -n          输出IP 地址和端口的数字形式


3.DR模式的架构的搭建

1)搭建环境介绍:

DS:

eth1:192.168.9.10/24

eth1:0:192.168.9.100/24 作为VIP地址,可以进行浮动

RS:

RS1:eth1:192.168.9.11

RS2:eth1:192.168.9.12

2)配置网络:

DS:

[root@localhost ~]# ifconfig eth1:0 192.168.9.100  up      #配置VIP

[root@localhost ~]# route add -host 192.168.9.100 dev eth1:0 

RS:

配置RS1,修改内核参数,关闭lo的arp通告和lo的arp响应,并配置隐藏地址,并且保证其发出报文经过eth1之前,还要先经过lo:1 VIP,使得源地址成为VIP

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@localhost ~]# echo 1  > /proc/sys/net/ipv4/ip_forward

[root@localhost ~]# sysctl -p

arp_ignore = 1使RS服务器忽略收到ARP广播,是网络中虽然LVS和RS都配置VIP,但是客户端在使用ARP查找目的服务器的时候,只能LVS做出回应ARP广播,RS保持沉默

arp_announce = 2来决定RS处理完LVS转给它来自客户端的请求后数据包的封装。2是忽略源IP只选择一个合理的源IP来封装,所以数据包会忽略RS的地址,而是将VIP的地址封装称源地址,保证数据合理和有效

RS1:

 #只广播自己

[root@localhost ~]# ifconfig lo:0 192.168.9.100 netmask 255.255.255.255 broadcast 192.168.9.100 up  

 #目标是192.168.9.100时经过设备lo:0

[root@localhost ~]# route add -host 192.168.9.100 dev lo:0

RS2:

[root@localhost ~]# ifconfig lo:0 192.168.9.100 netmask 255.255.255.255 broadcast 192.168.9.100up  #只广播自己

[root@localhost ~]# route add -host 192.168.9.100 dev lo:0     #目标是192.168.9.100时经过设备lo:0

3)DS上添加规则:

[root@localhost ~]# ipvsadm -A -t 192.168.9.100:80 -s rr

[root@localhost ~]# ipvsadm -a -t 192.168.9.100:80 -r 192.168.9.11 -g -w 1   #使用权重1,工作模式DR

[root@localhost ~]# ipvsadm -a -t 192.168.9.100:80 -r 192.168.9.12 -g -w 3   #使用权重3,工作模式DR

由于DR是修改MAC地址,所有他的端口是不可以修改的


那么导致负载不均衡的原因有

1、LVS滋生的会话保持参数设置(-p 300 ,persistent 300)。优化:大公司尽量用cookies替代session。

2、LVS调度算法设置,例如:rr,wrr,wlc,lc算法。

3、后端RS节点的会话保持参数。

4、访问量较少的时候,不均衡比较明显。

5、用户发送的请求时间长短,和请求资源多少大小。

实现会话保持的方案:

1)用memcached来存储session

2)可以用其他的持久化系统存储sessons,例如:redis,替代memcached。

3)高性能高并发场景,cookies效率比session要好很多,因此,大网站都会用cookies解决会话共享问题。

4)有初级运维网友通过牺牲LB的负载均衡的策略实现,例如:lvs -p,nginx ip_hash等,这些不是好的方法。

你可能感兴趣的:(lvs命令介绍及DR工作模式搭建)