阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

群集之LVS-DR模型

123次阅读
没有评论

共计 4555 个字符,预计需要花费 12 分钟才能阅读完成。

原理:

如图所示:(此过程不存在地址转换)

群集之 LVS-DR 模型

客户端首先向 director 发送请求,此时 director 会对该数据包处理,把帧头部的目标 mac 换成后方 realserver 的 mac。因为 realserver 是直接把信息传送到客户端,所以为了客户端能够接收,我们还需要在每个 realserver 上配置一个 VIP。然而这样就产生一个问题,当客户端的 arp 请求过来的时候,因为在 director 和后方的 realserver 上都有 VIP,所以都会相应用户的 arp 请求,那么客户端选择与谁的 mac 通信呢,这就是个问题。这就需要我们的

realserver 在接收 arp 的请求时,不能进响应

针对这个问题有两种方式解决方式

1、用一种叫 arptable 的 arp 防火墙

2、使用内核参数 arp-announce 和 arp-ignore,这样一来也解决了后方 realserver 地址冲突的问题,这也是一种较好的方案

特点

1. 必须处于同一个物理网络中(连在同一个交换机上)

2.RIP 不能使用私有地址,因为这个地址是直接与用户通信的

3.Director 只转发请求,而 realserver 直接响应请求而不转发

4. 集群节点的网关,不能指向 DIP

5. 不能做端口转换(不支持)

6. 绝大多数的操作系统都可以实现 realserver, 而 realserver 需要同一个网卡配置多个 Ip 地址

7.DR 模式的 Director 比 NAT 模式能够带动更多的节点

实训:

群集之 LVS-DR 模型

拓扑

(注意:图中俩个 NODE 的 loopback 接口首先不要配置地址,不然会冲突,应该用两个内核参数做一下控制)

一、Director 的配置

1、首先配置 ip 地址

群集之 LVS-DR 模型

群集之 LVS-DR 模型

重启服务

service network restart

2、安装工具

mkdir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom(挂载光盘)

cd /mnt/cdrom/Cluster

rpm -ivh ipvsadm-1.24-10.i386.rpm

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2013-11/92263p2.htm

相关阅读

LVS-DR 模式配置详解  http://www.linuxidc.com/Linux/2013-01/78679.htm

LVS-DR 直接路由实现负载均衡示例 http://www.linuxidc.com/Linux/2012-12/77033.htm

LVS-DR+Heartbeat 实现高可用负载均衡服务 http://www.linuxidc.com/Linux/2012-10/73008.htm

LVS-DR 模式原理详解和可能存在的“假负载均衡”http://www.linuxidc.com/Linux/2012-10/72892.htm

heartbeat+ldirectory 实现 LVS-DR 负载均衡器的高可用 http://www.linuxidc.com/Linux/2012-07/64736.htm

Keepalived+LVS-DR 模式配置高可用负载均衡集群 http://www.linuxidc.com/Linux/2012-06/63139.htm

二、节点 node 的配置

1、Node1

为了地址冲突,首先应该修改两个内核参数

echo “net.ipv4.conf.all.arp_announce = 2” >>/etc/sysctl.conf

echo “net.ipv4.conf.all.arp_ignore = 1” >>/etc/sysctl.conf

为了这两个参数立即生效执行下面命令

sysctl -p

配置 ip 地址

群集之 LVS-DR 模型

群集之 LVS-DR 模型

重启网络服务

因为 2.100 的网络地址被看做一个点的地址,所以应该为 node1 增加一台路由

route add -host 192.168.2.100/32 dev lo:0

安装 web 服务

mount /dev/cdrom /mnt/cdrom

rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm

启动服务并加入开机启动项

service httpd start

chkconfig httpd on

建设网页

echo “node1” >/var/www/html/index.html

2、Node2

为了防止地址冲突,这里方便起见,直接拷贝 node1 上边的配置文件

scp 192.168.2.10:/etc/sysctl.conf /etc/

sysctl -p

配置 ip 地址

群集之 LVS-DR 模型

群集之 LVS-DR 模型

重启网络服务

同样的做静态路由

route add -host 192.168.2.100/32 dev lo:0

安装 web 服务

mount /dev/cdrom /mnt/cdrom

rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm

启动服务并加入开机启动项

service httpd start

chkconfig httpd on

建设网页

echo “node2” >/var/www/html/index.html

原理:

如图所示:(此过程不存在地址转换)

群集之 LVS-DR 模型

客户端首先向 director 发送请求,此时 director 会对该数据包处理,把帧头部的目标 mac 换成后方 realserver 的 mac。因为 realserver 是直接把信息传送到客户端,所以为了客户端能够接收,我们还需要在每个 realserver 上配置一个 VIP。然而这样就产生一个问题,当客户端的 arp 请求过来的时候,因为在 director 和后方的 realserver 上都有 VIP,所以都会相应用户的 arp 请求,那么客户端选择与谁的 mac 通信呢,这就是个问题。这就需要我们的

realserver 在接收 arp 的请求时,不能进响应

针对这个问题有两种方式解决方式

1、用一种叫 arptable 的 arp 防火墙

2、使用内核参数 arp-announce 和 arp-ignore,这样一来也解决了后方 realserver 地址冲突的问题,这也是一种较好的方案

特点

1. 必须处于同一个物理网络中(连在同一个交换机上)

2.RIP 不能使用私有地址,因为这个地址是直接与用户通信的

3.Director 只转发请求,而 realserver 直接响应请求而不转发

4. 集群节点的网关,不能指向 DIP

5. 不能做端口转换(不支持)

6. 绝大多数的操作系统都可以实现 realserver, 而 realserver 需要同一个网卡配置多个 Ip 地址

7.DR 模式的 Director 比 NAT 模式能够带动更多的节点

实训:

群集之 LVS-DR 模型

拓扑

(注意:图中俩个 NODE 的 loopback 接口首先不要配置地址,不然会冲突,应该用两个内核参数做一下控制)

一、Director 的配置

1、首先配置 ip 地址

群集之 LVS-DR 模型

群集之 LVS-DR 模型

重启服务

service network restart

2、安装工具

mkdir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom(挂载光盘)

cd /mnt/cdrom/Cluster

rpm -ivh ipvsadm-1.24-10.i386.rpm

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2013-11/92263p2.htm

相关阅读

LVS-DR 模式配置详解  http://www.linuxidc.com/Linux/2013-01/78679.htm

LVS-DR 直接路由实现负载均衡示例 http://www.linuxidc.com/Linux/2012-12/77033.htm

LVS-DR+Heartbeat 实现高可用负载均衡服务 http://www.linuxidc.com/Linux/2012-10/73008.htm

LVS-DR 模式原理详解和可能存在的“假负载均衡”http://www.linuxidc.com/Linux/2012-10/72892.htm

heartbeat+ldirectory 实现 LVS-DR 负载均衡器的高可用 http://www.linuxidc.com/Linux/2012-07/64736.htm

Keepalived+LVS-DR 模式配置高可用负载均衡集群 http://www.linuxidc.com/Linux/2012-06/63139.htm

三、访问并测试

1、在 Director 上定义虚拟服务器

ipvsadm -A -t 192.168.2.100:80 -s rr

指向后方的 realserver

ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.10 -g

ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.20 -g

为了下次启动规则任然存在,保存一下

service ipvsadm save

重启服务

service ipvsadm restart

安装文本浏览器进行测试

rpm -ivh /mnt/cdrom/Server/lynx-2.8.5-28.1.el5_2.1.i386.rpm

lynx http://192.168.2.10

群集之 LVS-DR 模型

lynx http://192.168.2.20

群集之 LVS-DR 模型

在宿主机上访问 director

群集之 LVS-DR 模型

刷新

群集之 LVS-DR 模型

接着刷新的话会发现访问了后方轮训的 realserver

2、访问一致性

实现这种群集是为了实现访问后方的 realserver 得到一致的结果,那么怎样实现呢? 对于静态页面还好说,只要两个 web 页面做成相同的就行了,如果是动态页面的。这时候后方必须要有共享存储,而能够基于网络实现共享存储的方法有两种,一种是 NAS(network attached storage 网络附加存储),实现文件级别的共享;另一种是 SAN(storage area network 块级别共享)。

这里我们用 NAS 来实现这种效果,实现 NAS 的方式有好几种。如果再生产环境中应用的话,有专门的硬件产品来实现,或者利用一种叫 freenas 的软件来实现,不过在实验环境下我们可以用 samba 或者 NFS 来实现。具体实现的过程就是 NFS 设备把用户要访问页面放到共享文件夹里,前面的 realserver 只需在本地把后方的共享文件夹挂载到本地就行了。

实现 NAS

首先为 NAS 配置相应的 IP 地址

经查看已经安装了 nfs

群集之 LVS-DR 模型

建立共享文件夹

群集之 LVS-DR 模型

编辑共享清单

vim /etc/exportsr

如果是动态页面的话用户则具有写的权限(像是论坛等等)

群集之 LVS-DR 模型

启动服务

service nfs start

把服务加入开机启动项

群集之 LVS-DR 模型

分别为两个节点添加网卡

因为实验环境是在虚拟机里实现的,把两块网卡放在 vmnet2 区域里,当然后方的 NAS 也应该在 vmnet2 区域

分别为两块网卡添加地址

重启服务

挂载共享文件夹

查看后方的共享

群集之 LVS-DR 模型

分别在两个节点上挂载后方的共享文件

mount 192.168.3.100:/webroot /var/www/html

再次访问的话就会得到相同的页面了

这种方式有一定缺陷,就是效率太低,不过它也有它的优点,那就是锁机制(两个人不能同时做写操作)和推送机制(在一个节点上边提交的信息可以在另一个节点上看到)。另外一个缺陷就是在 director 上定义的轮训规则是静态的,不根据实际情况进行调整,即使后方的线路 down 掉,规则依旧存在,这就需要在每个节点上增加健康探测机制,来时刻监听线路的健康状况。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计4555字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中