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配置>
欢迎分享,转载请注明来源:内存溢出
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)