[置顶] lvs实现四层负载DR模式
2017-11-09 13:22
447 查看
1.什么是lvs
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一2.lvs实现负载的三种方式
运行 IPVS软件的服务器,在整个负载均衡集群中承担一调度角色 软件的服务器,(即 向真实服务器分配从客户端过来的请求。LVS中的调度方法有三种 :NAT(Network Address Translation网络地址转换)、TUN(tunnel 隧道)、DR(direct route 直接路由)3.lvs-DR环境
vip:192.168.31.100lvs-director:192.168.31.165
nginx1:192.168.31.122
nginx2:192.168.31.41
tomcat01:192.168.31.221
tomcat02:192.168.31.48
4.lvs调度服务器Director安装
在192.168.31.165上安装lvs centos6.5自带lvs,检查linux内核是否集成lvs模块:
[root@MiWiFi-R3-srv ~]# modprobe -l | grep ipvs
5.安装lvs的管理工具ipvsadm
5.1 安装依赖[root@MiWiFi-R3-srv ~]# yum install -y gcc gcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt*
5.2 安装ipvsadm
链接: https://pan.baidu.com/s/1hsqzRZe 密码: 7gaj
[root@MiWiFi-R3-srv ~]# tar -zxvf ipvsadm-1.26.tar.gz -C /usr/local/ [root@MiWiFi-R3-srv ~]# cd /usr/local/ipvsadm-1.26/ [root@MiWiFi-R3-srv ipvsadm-1.26]# make && make install
校验是否安装成功:
[root@MiWiFi-R3-srv ipvsadm-1.26]# ipvsadm -h
5.3 nginx的安装
在192.168.31.122和192.168.31.41上安装nginx。
nginx的相关安装启动请参考我的另一篇博客:
http://blog.csdn.net/yougoule/article/details/78477386
5.4 配置nginx
创建nginx-lvs.conf,http内容如下:
http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } }
5.5 Director Server配置
5.5.1 在eth0上绑定虚拟ip
[root@MiWiFi-R3-srv ~]# ifconfig ens33:0 192.168.31.100 broadcast 192.168.31.100 netmask 255.255.255.255 up [root@MiWiFi-R3-srv ~]# ifconfig
此处在ens33设备上绑定了一个虚拟设备ens33:0,同时设置了一个虚拟IP是192.168.31.100,然后指定广播地址也为192.168.31.100,需要特别注意的是,虚拟ip地址的广播地址是它本身,子网掩码是255.255.255.255。
5.5.2 添加路由规则
[root@MiWiFi-R3-srv ~]# route add -host 192.168.31.100 dev ens33:0
5.5.3 启用系统的包转发功能
[root@MiWiFi-R3-srv ~]# echo "1" >/proc/sys/net/ipv4/ip_forward
参数值为1时启用ip转发,为0时禁止ip转发。
5.5.4 清除原有转发规则
[root@MiWiFi-R3-srv ~]# ipvsadm --clear
5.5.5 添加虚拟IP规则
[root@MiWiFi-R3-srv ~]# ipvsadm -A -t 192.168.31.100:80 -s rr
-s rr表示采用轮询策略。
:80表示负载转发的端口是80
5.5.6 在虚拟IP中添加服务规则
ipvsadm -a -t 192.168.31.100:80 -r 192.168.31.122:80 -g ipvsadm -a -t 192.168.31.100:80 -r 192.168.31.41:80 -g
在新加虚拟IP记录中添加两条新的Real Server记录,-g表示指定LVS 的工作模式为直接路由模式。
lvs进行负载转发需要保证lvs负载的端口要和nginx服务的端口的一致,这里都为80。
5.5.7 重启lvs
[root@MiWiFi-R3-srv ~]# ipvsadm
5.6 Real Server配置
在lvs的DR和TUn模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而不再经过前端的Director Server,因此,就需要在每个Real server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户。
5.6.1 在回环设备上绑定了一个虚拟IP地址
[root@MiWiFi-R3-srv ~]# ifconfig lo:0 192.168.31.100 broadcast 192.168.31.100 netmask 255.255.255.255 up [root@MiWiFi-R3-srv ~]# /sbin/route add -host 192.168.31.100 dev lo:0
5.6.2 关闭arp解析
arp_announce :定义不同级别:当ARP请求通过某个端口进来是否利用这个接口来回应。
0 -利用本地的任何地址,不管配置在哪个接口上去响应ARP请求;
1 - 避免使用另外一个接口上的mac地址去响应ARP请求;
2 - 尽可能使用能够匹配到ARP请求的最佳地址。
arp_ignore:当ARP请求发过来后发现自己正是请求的地址是否响应;
0 - 利用本地的任何地址,不管配置在哪个接口上去响应ARP请求;
1 - 哪个接口上接受ARP请求,就从哪个端口上回应。
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 sysctl -p #使用修改生效
5.7 测试
5.7.1 预期目标
由于lvs设置为rr轮询策略,当访问虚IP http://192.168.31.100,每次刷新请求通过lvs负载到不同的服务器。
5.7.2 注意事项
1、测试时需要在nginx的http中设置keepalive_timeout 0; 取消使用http持久连接模式,保证每次客户端发起请求都需要向服务端建立连接,这样做是为了每次刷新页面都要经过lvs负载转发。
2、lvs进行负载转发需要保证lvs负载的端口要和nginx服务的端口的一致,这里都为80。
keepalive_timeout说明:
在nginx中keepalive_timeout的默认值是75秒,默认使用http持久连接模式,可使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,可避免建立或重新建立连接。生产环境建议keepalive_timeout不要设置为0。
5.7.3 测试过程
修改192.168.31.122和192.168.31.41下nginx目录下的html目录中index.html的内容使之个性化。
第一次请求:http://192.168.31.100
刷新,相当于第二次请求:
依次交替测试,发现每次请求被负载到不同的nginx上。
任意停止掉一个nginx,请求http://192.168.31.100继续可以浏览,同于lvs采用轮询策略如果其中一个nginx请求不可到达则去请求另外的nginx。
5.8 脚本封装
为了方便配置启动lvs将上边Director Server和Real Server的配置过程封装在shell脚本中。
5.8.1 Director Server配置
在/etc/init.d下创建lvsdr,内容如下:
#!/bin/sh # 定义虚拟ip VIP=192.168.31.100 #虚拟 ip根据需求修改 # 定义realserver,并已空格分开,根据需求修改 RIPS="192.168.31.122 192.168.31.41" # 定义提供服务的端口 SERVICE=80 # 调用init.d脚本的标准库 . /etc/rc.d/init.d/functions case $1 in start) echo "Start LVS of DR Mode" # 开启ip转发 echo "1" > /proc/sys/net/ipv4/ip_forward # 绑定虚拟ip ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up route add -host $VIP dev eth0:0 # 清除lvs规则 ipvsadm -C # 添加一条虚拟服务器记录 # -p指定一定的时间内将相同的客户端分配到同一台后端服务器 # 用于解决session的问题,测试时或有别的解决方案时建议去掉 ipvsadm -A -t $VIP:$SERVICE -s rr # 添加真实服务器记录 for RIP in $RIPS do echo $RIP:$SERVICE; ipvsadm -a -t $VIP:$SERVICE -r $RIP:$SERVICE -g done # 设置tcp tcpfin udp的超时连接值 ipvsadm --set 30 120 300 ipvsadm ;; stop) echo "Stop LVS DR" ifconfig eth0:0 down ipvsadm -C ;; *) echo "Usage:$0 {start ¦ stop}" exit 1 esac
修改脚本权限:chmod +x /etc/init.d/lvsdr
启动Director server:service lvsdr start
停止Director server:service lvsdr stop
5.8.2 Real Server配置
在/etc/init.d下创建lvsdr,内容如下:
#!/bin/sh VIP=192.168.31.100 #虚拟ip,根据需求修改 . /etc/rc.d/init.d/functions case $1 in start) echo "lo:0 port starting" # 为了相应lvs调度器转发过来的包,需在本地lo接口上绑定vip ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up # 限制arp请求 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 ;; stop) echo "lo:0 port closing" ifconfig lo:0 down 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
修改脚本权限:chmod +x /etc/init.d/lvsdr
启动real server:service lvsdr start
停止real server:service lvsdr stop
至此! lvs实现四层负载DR模式已完成啦!
如果您喜欢这篇文章就请关注我的博客和朋友一起分享吧!
关注我: ☛ http://blog.csdn.net/yougoule
相关文章推荐
- lvs实现四层负载DR模式
- lvs实现四层负载DR模式
- Lvs+keepalived实现负载均衡、故障剔除(DR模式)
- LVS+Keepalived DR模式实现web负载均衡高可用
- LVS+Keepalived DR模式实现web负载均衡高可用
- lvs DR模式 +keepalived 实现directory 高可用、httpd服务负载均衡集群
- Lvs+keepalived 实现负载均衡、故障剔除(DR模式)
- lvs DR模式 +keepalived 实现directory 高可用、httpd服务负载均衡集群
- Lvs+keepalived实现负载均衡、故障剔除(DR模式)
- 借助LVS+Keepalived通过DR模式实现负载均衡
- linux集群系列(一):LVS+Keepalived以DR模式实现负载均衡
- 负载均衡集群LVS模式之DR模型
- LVS+Keepalived实现四层负载及高可用
- LVS-NAT和LVS-DR模式的实现详解
- LVS-NAT和LVS-DR模式的实现详解
- 实现keepalived企业级高可用基于LVS-DR模式
- 三台centos 5 linux lvs 的DR 模式http负载均衡安装步骤
- lvs+keepalive实现主从效果,以及RS健康监测和tcp,udp实现非web的负载均衡(DR模式)
- 使用LVS+DR搭建集群实现负载均衡
- LVS-DR实现基于LAMP的负载均衡