部署LVS-DR群集
一、LVS-DR原理剖析
(一)LVS-DR数据包流向分析
1、Client向目标VIP发出请求,Director(负载均衡器)接收。此时IP包头及数据帧头信息为:
2、Director根据负载均衡算法选择RealServer_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送。IP包头及数据帧头信息如下:
3、RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealServer事先绑定了VIP),于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息为:
(二)LVS-DR中的ARP问题
1、问题阐述
在LVS-DR负载均衡群集中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱,当一个ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上的,他们都会接受到ARP广播,这个时候应该只有前端的负载均衡器进行相应,其他节点服务器不应该响应ARP广播。
2、处理方法
对节点服务器进行处理,使其不响应针对VIP的ARP请求
(1)使用虚接口lo:0承载VIP地址,意思就是我们给每个节点配置的VIP并不是针对网卡而设置的,虚接口里的VIP只是标识这个节点中有这么一个ip地址而已,但不是某一个具体网卡上的
(2)那么我们还需要设置系统只响应目的IP为本地IP的ARP请求,也就是说让这个VIP不响应ARP请求,这样我们可设置内核参数arp_ignore=1
3、应答过程分析
RealServer返回报文(源IP是VIP)经路由器转发,在重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口(例如eth0)的IP地址。路由器收到ARP请求后,将更新ARP表项,原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址
4、新ARP请求问题
由于路由器更新了ARP表项,此时新来的请求报文,会将该报文转发给RealServer,从而导致Director的VIP失效!
5、新问题处理方法
对节点服务器进行处理,让系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址,设置内核参数arp_announce=2
6、解决ARP的两个问题的设置方法:修改/etc/sysctl.conf 文件
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
二、LVS-DR配置
案例环境
一台LVS调度器、四台节点服务器,均配置双网卡:第一块网卡eth0连接至Internet,位于192.168.10.0/24网段,第二块网卡eth1连接至内网,位于192.168.7.0/24网段,共享存储由一台Linux服务器承担,将目录/var/www/html发布为NFS可写共享。只允许LVS调度器、节点服务器访问,以root用户挂载时允许写入,Web群集的地址为192.168.10.70,通过此地址访问公司的Web站点
部署步骤
(一)配置LVS调度器
1、配置IP和VIP
1)配置IP
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
2)配置VIP
[root@localhost ~]#cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/networkscripts/ifcfg-eth0:0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
添加:
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.10.70
NETMASK=255.255.255.0
[root@localhost ~]# service network restart
2、调整响应参数
[root@localhost ~]# vim /etc/sysctl.conf
添加:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
[root@localhost ~]# sysctl -p
3、安装并配置ipvsadm
[root@localhost ~]# rpm -ihv /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm
[root@localhost ~]# ipvsadm -A -t 192.168.10.70:80 -s rr #添加虚拟director的vip地址,轮询的调度算法
[root@localhost ~]# ipvsadm -a -t 192.168.10.70:80 -r 192.168.10.77 -g -w 1 #添加rip,-g代表DR模式
[root@localhost ~]# ipvsadm -a -t 192.168.10.70:80 -r 192.168.10.78 -g -w 1
[root@localhost ~]# ipvsadm -L -n #查询配置
[root@localhost ~]# service ipvsadm save
[root@localhost ~]# chkconfig --add ipvsadm
[root@localhost ~]# chkconfig ipvsadm on
[root@localhost ~]# service ipvsadm start
vim /etc/sysconfig/ipvsadm 进去可以删除
(二)配置WEB节点服务器
1、配置IP地址
1)设置IP
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
2)设置VIP
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/networkscripts/ifcfg-lo:0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
修改项如下:
DEVICE=lo:0
IPADDR=192.168.10.70
NETMASK=255.255.255.255
ONBOOT=yes
3)添加路由
[root@localhost ~]# route add -host 192.168.10.70 dev lo:0 #将vip限制在本机
[root@localhost ~]# echo "route add -host 192.168.10.70 dev lo:0" >> /etc/rc.local
2、调整响应参数
[root@localhost ~]# vim /etc/sysctl.conf
添加:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]# sysctl -p
arp——ignore定义了网卡在响应外部arp请求时候的相应级别,0默认值,不管哪块网卡接收到了arp请求,只要发现本机有这个mac都给响应,1总是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了arp请求,发现所请求的mac是本机的另一块网卡的,这个时候接收到arp请求的这块网卡就一定不响应,只有发现请求的mac是自己的才响应。
3、配置http服务
[root@localhost ~]# echo "welcome to 192.168.10.78 web server" > /var/www/html/index.html
[root@localhost ~]# service httpd restart
(三)验证
1、客户端访问:
[root@localhost ~]# http://192.168.10.70/ 或者 while :;do curl 192.168.10.70;sleep 0.1;done
2、在LVS上查看:
[root@localhost ~]# ipvsadm -Lnc
部署LVS-DR群集的更多相关文章
- 一个公网地址部署LVS/DR模式
http://blog.chinaunix.net/uid-7411781-id-3436142.html 一个公网地址部署LVS/DR模式 网上看了很多关于LVS的文章,在选取2种模式LVS/D ...
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写, ...
- Linux下部署LVS(DR)+keepalived+Nginx负载均衡
架构部署 LVS/keepalived(master):192.168.21.3 LVS/keepalived(Slave):192.168.21.6 Nginx1:192.168.21.4 N ...
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡(转)
一.简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. ...
- VM虚拟机上 实现CentOS 6.X下部署LVS(DR)+keepalived实现高性能高可用负载均衡
一.简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
- 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡【转】
CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2 ...
- CentOS 6.3下部署LVS(NAT模式)+keepalived实现高性能高可用负载均衡
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(转)
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
随机推荐
- 基于webpack的Vue.js开发环境快速搭建
1. 安装node node下载地址 2. 安装淘宝 NPM npm 是node.js 的包管理工具. 镜像命令地址 #命令行: npm install -g cnpm 3. 安装vue # 全局安装 ...
- 【BZOJ3489】A simple rmq problem【kd树】
题意 给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大.如果找不到这样的数,则直接输出0.我会采取一些措施强制在线. 分析 预处理 ...
- 通过http流发送post请求
一般都是用curl扩展来完成,看了手册的通过stream的方式更加简单. 请求脚本stream.php $url = 'http://localhost/stream_api.php'; $body ...
- [z] How can we render CSS3 in a WebBrowser Control ?
http://www.pedautreppe.com/post/How-can-we-render-CSS3-in-a-WebBrowser-Control-.aspx
- Oracle 错误集锦
1.plsql进行更新操作时卡死的解决办法 https://blog.csdn.net/laoyingat/article/details/79379270
- Java设计模式(9)——观察者模式
一.观察者模式定义 Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的手段,使某个 ...
- 一文读懂 超简单的spark structured stream 源码解读
为了让大家理解structured stream的运行流程,我将根据一个代码例子,讲述structured stream的基本运行流程和原理. 下面是一段简单的代码: val spark = Spar ...
- PYTHON 和R的对比
为了鼓励新工具的出现,机器学习和数据分析领域似乎已经成了“开源”的天下.Python 和 R 语言都具有健全的生态系统,其中包括了很多开源工具和资源库,从而能够帮助任何水平层级的数据科学家展示其分析工 ...
- Android-自定义圆环
效果图: 布局的代码,指定引用自定义View类: <!-- 绘制圆环 --> <LinearLayout xmlns:android="http://schemas.and ...
- linux的定制和发布(一)
如果总是仰视高山,就会挫伤我们攀登的勇气,使我们固步自封.我们需要做的就 是迈开自己的脚步,踏出第一步,let's go! Linux的裁剪一般有三种方法: 1.以一个已经安装好的系统为基 ...