负载均衡——LVS DR模式

负载均衡——LVS DR模式,第1张

相比于nginx只能用于7层负载均衡,LVS就比较强大了,能在4层做负载均衡。而且性能和稳定性上LVS也比较占优,毕竟是合入内核模块,不稳定肯定不行。

LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter的INPUT链上。除此之外,还需要一个用户态工具,ipvdadm,用于用户负载集群定义和集群服务管理。

LVS DR模式的流程大概如下:
1、客户端发送请求至VIP,也就是访问服务,请求报文源地址是CIP,目标地址为VIP;

2、LVS调度器接收到请求,报文在PREROUTING链检查,确定目的IP是本机,于是将报文发送至INPUT链,ipvs内核模块确定请求的服务是我们配置的LVS集群服务,然后根据用户设定的均衡策略选择某台后端RS,并将目标MAC地址修改RIP的MAC地址。因为调度器和后端服务器RS在同个网段,因此直接二层互通,将请求发给选择的RS处理;

3、因为报文目的mac是本机,且RS上有配置VIP,因此RS能接收该报文。后端服务处理完请求后,将响应直接发往客户端,此时源IP地址为VIP,目标IP为CIP。

如下,准备三台服务器,

机器 作用

1921680100 VIP,LVS调度器对外服务IP

1921680200 RIP,后端web服务器之一

1921680300 RIP,后端web服务器之二

上面我们说过lvs依赖于ipvs内核模块,和ipvsadm用户态工具。因为centos 7已经默认加载ipvs模块,因此这一步我们不需要配置。我们只需要安装ipvsadm工具即可,

yum install -y ipvsadm

然后在LVS调度器上配置VIP,这里我们采用虚拟网卡,当然也可以使用独立网卡配置,

ifconfig eth0:0 1921680100/24 up

接着配置LVS集群服务,

[root@CentOS-7-2 ~]# ipvsadm -C

[root@CentOS-7-2 ~]# ipvsadm -A -t 1921680100:80 -s rr

[root@CentOS-7-2 ~]# ipvsadm -a -t 1921680100:80 -r 1921680200:80 -g

[root@CentOS-7-2 ~]# ipvsadm -a -t 1921680100:80 -r 1921680300:80 -g

其中,

第一条命令是清空所有规则;

第二条命令是定义LVS服务,并指定负责均衡策略为rr,即轮询;

第三、四条命令各添加一台后端web服务器,作为负载均衡节点,并指定为DR模式。

ipvsadm基本命令参数如下:

-A  指定添加的LVS负载均衡虚拟服务

-t  指定虚拟服务器的IP地址和端口

-s  指定调度算法,ss为轮询,wrr为加权轮询,dh为目标地址散列,sh为源地址散列,lc为最少链接等

-a  在对应的VIP下添加RS节点

-g  指定LVS的工作模式为DR模式

-l  指定LVS的工作模式为tunnel模式

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

添加完后端RS,我们可以查看此LVS对应的均衡规则,

[root@CentOS-7-2 ~]# ipvsadm -Ln

IP Virtual Server version 121 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn

TCP  1921680100:80 rr

  -> 1921680200:80            Route  1      0          0       

  -> 1921680300:80            Route  1      0          0

这里web服务器使用nginx搭建,因此在两台RS上安装nginx,

yum install -y nginx

同时为了后面测试,我们修改web服务器的indexhtml内容,

[root@192_168_0_200 ~]# cat /usr/share/nginx/html/indexhtml

This is 1921680200

[root@192_168_0_300 ~]# cat /usr/share/nginx/html/indexhtml

This is 1921680300

接着开始进行LVS相关配置,

首先将VIP配置在lo接口上,(注意掩码要配置成32位,不然RS通信会出问题)

ifconfig lo:0 1921680100/32 up

接着配置对应路由,

route add -host 1921680100 dev lo

然后设置相关系统参数,

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

其实严格意义上只要配置出口网卡的对应参数就可以了,配置all也只是为了保险而已,文章最后面会有说明。

使用curl命令对vip进行访问,

[root@CentOS-7-3 /home]# curl  >

实现负载均衡可有以下算法:

Nginx实现负载均衡的原理是利用>负载均衡
先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上即可。
测试环境
由于没有服务器,所以本次测试直接host指定域名,然后在VMware里安装了三台CentOS。
测试域名 :acom
A服务器IP :1921685149 (主)
B服务器IP :192168527
C服务器IP :1921685126
部署思路
A服务器做为主服务器,域名直接解析到A服务器(1921685149)上,由A服务器负载均衡到B服务器(192168527)与C服务器(1921685126)上。
域名解析
由于不是真实环境,域名就随便使用一个acom用作测试,所以acom的解析只能在hosts文件设置。
打开:C:WindowsSystem32driversetchosts
在末尾添加
1921685149 acom
保存退出,然后启动命令模式ping下看看是否已设置成功

从截图上看已成功将acom解析到1921685149IP
A服务器nginxconf设置
打开nginxconf,文件位置在nginx安装目录的conf目录下。
在>

如何在Linux上使用HAProxy配置>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13019487.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存