LVS负载均衡群集——DR模式

简介:

   群集(或集群)的称呼来自于英文单词“Cluster”,表示一群、一串的意思,用在服务器领域则表示大量服务器的集合体,以区分单个服务器。本篇博客将介绍企业中常用的一种群集技术——LVS(Linux Virtual Server,Linux虚拟服务器)


    上一篇博客已经对集群的结构、工作模式等进行了介绍,还配置了LVS——NAT模式,这里就直接配置LVS——DR了   


案例:构建直接路由模式负载均衡集群(LVS——DR)

   为了进一步提高公司的负载能力,公司决定扩展现有的网站平台,经过多方面考虑,管理员准备采用LVS群集的DR模式,如下图所示:

杨书凡04.png


需求描述:

1. 使用一台LVS调度器,四台节点服务器,均配置双网卡

(1)第一块网卡eth0连接至Internet,位于172.16.16.0/24网段

(2)第二块网卡eth1连接至存储内网,位于192.168.7.0/24网段

2. 共享存储器有一台Linux服务器承担,将目录/var/www/html发布为NFS可读写共享

3. 群集地址(VIP)为172.16.16.172,通过此地址访问公司的Web站点


实验步骤如下:

1. 配置LVS负载调度器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[root@localhost ~] # cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts] # cp ifcfg-eth0 ifcfg-eth0:0
[root@localhost network-scripts] # vim ifcfg-eth0:0       //配置虚拟IP地址(VIP)
DEVICE=eth0:0
ONBOOT= yes
IPADDR=172.16.16.172
NETMASK=255.255.255.0
 
[root@localhost network-scripts] # ifup eth0:0            //启动网卡
[root@localhost network-scripts] # ifconfig               //查看IP地址
eth0      Link encap:Ethernet  HWaddr 00:0C:29:1C:B4:FB  
           inet addr:172.16.16.173  Bcast:172.16.16.255  Mask:255.255.255.0
 
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:1C:B4:FB  
           inet addr:172.16.16.172  Bcast:172.16.16.255  Mask:255.255.255.0          
 
eth1      Link encap:Ethernet  HWaddr 00:0C:29:1C:B4:05  
           inet addr:192.168.7.173  Bcast:192.168.7.255  Mask:255.255.255.0
 
[root@localhost network-scripts] # cd ~
 
# 由于LVS负载调度器和各节点需要共用VIP地址,应该关闭Linux内核的重定向参数响应
[root@localhost ~] # vim /etc/sysctl.conf          //调整/proc响应参数
net.ipv4.conf.all.send_redirects = 0               // 关闭Linux内核的重定向参数响应 
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
 
[root@localhost ~] # sysctl -p             //立即生效
[root@localhost ~] # iptables -I FORWARD -p tcp  -j ACCEPT     //设置防火墙策略
 
[root@localhost ~] # modprobe ip_vs
[root@localhost ~] # yum -y install ipvsadm
[root@localhost ~] # service ipvsadm stop      //清除原有策略
[root@localhost ~] # ipvsadm -A -t 172.16.16.172:80 -s rr
[root@localhost ~] # ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.177 -g -w 1
[root@localhost ~] # ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.178 -g -w 1
[root@localhost ~] # ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.179 -g -w 1
[root@localhost ~] # ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.180 -g -w 1
[root@localhost ~] # service ipvsadm save
ipvsadm: Saving IPVS table to  /etc/sysconfig/ipvsadm :      [确定]
[root@localhost ~] # chkconfig ipvsadm on
[root@localhost ~] # cat /etc/sysconfig/ipvsadm
-A -t 172.16.16.172:80 -s rr
-a -t 172.16.16.172:80 -r 172.16.16.177:80 -g -w 1
-a -t 172.16.16.172:80 -r 172.16.16.178:80 -g -w 1
-a -t 172.16.16.172:80 -r 172.16.16.179:80 -g -w 1
-a -t 172.16.16.172:80 -r 172.16.16.180:80 -g -w 1


2. 配置NFS共享存储服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@localhost ~] # ifconfig                   //配置IP地址
eth0      Link encap:Ethernet  HWaddr 00:0C:29:0D:16:6A  
           inet addr:192.168.7.250  Bcast:192.168.7.255  Mask:255.255.255.0
  
[root@localhost ~] # iptables -I INPUT -p tcp -j ACCEPT        //设置防火墙策略
[root@localhost ~] # iptables -I INPUT -p udp -j ACCEPT                    
            
[root@localhost ~] # yum -y install nfs-utils rpcbind                    
[root@localhost ~] # chkconfig nfs on        
[root@localhost ~] # chkconfig rpcbind on          
[root@localhost ~] # mkdir /opt/wwwroot      //设置共享目录
[root@localhost ~] # echo welcome to beijing!!! > /opt/wwwroot/index.html
[root@localhost ~] # cat /opt/wwwroot/index.html     //创建测试网页
welcome to beijing!!!
[root@localhost ~] # vim /etc/exports        //将目录共享给192.168.7.0/24使用   
/opt/wwwroot  192.168.7.0 /24 (rw, sync ,no_root_squash)          
# rw表示允许读写(ro为只读)          
# sync表示同步写入          
# no_root_squash当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)
  
[root@localhost ~] # service rpcbind start
[root@localhost ~] # service nfs start
[root@localhost ~] # showmount -e 127.0.0.1       //查看本机发布的NFS共享目录
Export list  for  127.0.0.1:
/opt/wwwroot  192.168.7.0 /24


3. 配置Web节点服务器

   使用DR模式时,节点服务器也需要配置VIP地址,并调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突。其他的配置和NAT模式差不多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[root@localhost ~] # cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts] # cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts] # vim ifcfg-lo:0        //配置虚拟IP地址(VIP)
DEVICE=lo:0
IPADDR=172.16.16.172
NETMASK=255.255.255.255                // 子网掩码必须全为1
ONBOOT= yes
 
[root@localhost network-scripts] # ifconfig           //查看IP地址
eth0      Link encap:Ethernet  HWaddr 00:0C:29:8A:0D:26  
           inet addr:172.16.16.177  Bcast:172.16.16.255  Mask:255.255.255.0
 
eth1      Link encap:Ethernet  HWaddr 00:0C:29:8A:0D:30  
           inet addr:192.168.7.177  Bcast:192.168.7.255  Mask:255.255.255.0
 
lo:0      Link encap:Local Loopback  
           inet addr:172.16.16.172  Mask:255.255.255.255
 
[root@localhost network-scripts] # cd ~
[root@localhost ~] # vim /etc/rc.local          //添加VIP为本地访问路由
/sbin/route  add -host 172.16.16.172 dev lo:0
[root@localhost ~] # route add -host 172.16.16.172 dev lo:0    
 
[root@localhost ~] # vim /etc/sysctl.conf      //调整内核的ARP响应参数
net.ipv4.conf.all.arp_ignore = 1           // 阻止更新VIP的MAC地址,避免发生冲突
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       //立即生效
[root@localhost ~] # iptables -I INPUT -p tcp --dport 80 -j ACCEPT   //配置防火墙策略     
   
[root@localhost ~] # yum -y install httpd nfs-utils rpcbind
  
[root@localhost ~] # showmount -e 192.168.7.250     //查看NFS服务器共享了哪些目录
Export list  for  192.168.7.250:
/opt/wwwroot  192.168.7.0 /24
[root@localhost ~] # mount 192.168.7.250:/opt/wwwroot /var/www/html    //将共享目录挂载到本地目录
[root@localhost ~] # tail -1 /etc/mtab 
192.168.7.250: /opt/wwwroot  /var/www/html  nfs rw,vers=4,addr=192.168.7.250,clientaddr=192.168.7.177 0 0
  
[root@localhost ~] # cat /var/www/html/index.html     //验证测试网页是否共享
welcome to beijing!!!
[root@localhost ~] # vim /etc/fstab          //设置开机自动挂载
192.168.7.250: /opt/wwwroot    /var/www/html      nfs     defaults,_netdev   0 0
  
[root@localhost ~] # chkconfig nfs on        
[root@localhost ~] # chkconfig rpcbind on  
[root@localhost ~] # chkconfig httpd on
[root@localhost ~] # service rpcbind start
[root@localhost ~] # service nfs start
[root@localhost ~] # service httpd start


4. 测试LVS群集

   安排多台测试机,从Internet中直接访问VIP地址http://172.16.16.172/,将能看到有真实Web服务器提供的网页内容。

通过LVS负载均衡调度器,可查看当前的负载分配情况,由于使用轮询算法,各节点所获得的连接负载大致相当。

杨书凡03.png


在LVS负载均衡调度器中执行以下命令:

1
2
3
4
5
6
7
8
9
[root@localhost ~] # ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.16.172:80 rr
   -> 172.16.16.177:80             Route   1      2          9         
   -> 172.16.16.178:80             Route   1      3          8         
   -> 172.16.16.179:80             Route   1      2          9         
   -> 172.16.16.180:80             Route   1      4          7

   可看到各节点服务器的连接负载大致相当,从而实现了负载均衡











本文转自 杨书凡 51CTO博客,原文链接:http://blog.51cto.com/yangshufan/2065686,如需转载请自行联系原作者
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
26天前
|
域名解析 移动开发 负载均衡
阿里云DNS常见问题之DNS负载均衡调加权模式失败如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
4月前
|
负载均衡 网络协议 网络架构
VRRP负载均衡模式配置实用吗?
VRRP负载均衡模式配置实用吗?
67 0
|
6月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
|
5月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
178 0
|
3月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
205 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
4月前
|
负载均衡 监控 算法
负载均衡一般用什么模式
负载均衡可以采用多种模式,具体的选择取决于应用程序的需求、架构设计和性能目标。以下是一些常见的负载均衡模式: 1. **轮询(Round Robin):** 请求依次分发到每个后端服务器,循环进行。这是一种简单的负载均衡算法,适用于后端服务器性能相对均衡的情况。 2. **加权轮询(Weighted Round Robin):** 类似于轮询,但可以为每个后端服务器分配不同的权重,以便更灵活地分配负载。性能更高的服务器可以分配更高的权重。 3. **最小连接数(Least Connections):** 请求分发到当前连接数最少的后端服务器。这可以确保负载更平均地分布到服务器上,适用于处
143 0
|
4月前
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
98 2
|
5月前
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
180 1
|
6月前
|
负载均衡 应用服务中间件 nginx
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
41 0
|
14天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
31 0