博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lvs负载均衡实践之lvs-nat
阅读量:7240 次
发布时间:2019-06-29

本文共 4404 字,大约阅读时间需要 14 分钟。

一、前言

 本次所有的实验均在虚拟机的环境中进行,实验的目的是搭建lvs-nat模式的负载均衡集群。本文不涉及lvs原理,只模拟了lvs-nat模式的负载均衡集群。

 原理请参考:

    

    《LVS手册_可伸缩网络服务的设计与实现_1.0》

二、拓扑图

工具:ipvsadm

    环境准备:

    客户端:192.168.91.128

    负载均衡服务器:VIP:192.168.91.3 DIP:10.0.0.254

    真实服务器RS1:IP:10.0.0.111 gw:10.0.0.254

    真实服务器RS2:IP:10.0.0.5 gw:10.0.0.254

三、实验操作

 1.客户端操作   

1
2
3
[root@localhost ~]
# ip a l | grep "ens33"       #查看ip
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    
inet 192.168.91.128
/24 
brd 192.168.91.255 scope global dynamic ens33

 2.RS1服务端操作

1
2
3
4
5
6
7
8
9
10
11
[root@rs1 ~]
#  ip a l | grep "ens33"         #查看ip
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    
inet 10.0.0.111
/24 
brd 10.0.0.255 scope global ens33
[root@rs1 ~]
# setenforce 0                #关闭selinux
[root@rs1 ~]
# iptables -F                 #为了实验方便,清空防火墙规则
yum 
install 
httpd                     
#安装httpd
[root@rs1 ~]
# cat /var/www/html/index.html        #查看测试web内容
<h1>web server RS1<
/h1
>
[root@rs1 ~]
# systemctl start httpd           #启动httpd
[root@rs1 ~]
# ss -tln | grep 80
LISTEN     0      128         :::80                      :::*

 3.RS2服务端操作

  操作大抵和上面一致

1
2
3
4
5
6
7
8
9
10
11
[root@rs2 ~]
# ip a l | grep "ens33"
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    
inet 10.0.0.5
/24 
brd 10.0.0.255 scope global ens33
[root@rs2 ~]
# setenforce 0
[root@rs2 ~]
# iptables -F    
yum 
install 
httpd
[root@rs2 ~]
# cat /var/www/html/index.html 
<h1>web server RS2<
/h1
>
[root@rs2 ~]
# systemctl start httpd
[root@rs2 ~]
# ss -tln | grep 80
LISTEN     0      128         :::80                      :::*

 4.负载均衡服务端操作

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
[root@localhost ~]
# ip a l | egrep "ens33|ens37"   #查看ip
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    
inet 192.168.91.3
/24 
brd 192.168.91.255 scope global dynamic ens33
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    
inet 10.0.0.254
/8 
brd 10.255.255.255 scope global ens37
yum 
install 
ipvsadm                    
#安装lvs管理工具ipvsadm
[root@localhost ~]
# rpm -ql ipvsadm           #查看ipvsadm程序环境
/etc/sysconfig/ipvsadm-config                
#配置文件
/usr/lib/systemd/system/ipvsadm
.service    
/usr/sbin/ipvsadm                      
#核心工具
/usr/sbin/ipvsadm-restore                  
#读入配置文件
/usr/sbin/ipvsadm-save                    
#保存ipvsadm规则
/usr/share/doc/ipvsadm-1
.27
/usr/share/doc/ipvsadm-1
.27
/README
/usr/share/man/man8/ipvsadm-restore
.8.gz
/usr/share/man/man8/ipvsadm-save
.8.gz
/usr/share/man/man8/ipvsadm
.8.gz
[root@localhost ~]
# systemctl enable ipvsadm       #设置开机自启动
[root@localhost ~]
# systemctl start ipvsadm       #启动服务
echo 
1 > 
/proc/sys/net/ipv4/ip_forward          
#开启核心转发
[root@localhost ~]
# cat /proc/sys/net/ipv4/ip_forward    
1
setenforce 0                         
#关闭selinux                           
iptabels -F                         
#为了实验方便,清空防火墙规则
ipvsadm -A -t 192.168.91.3:80 -s rr           
#设置lvs调度器的算法为轮询 
ipvsadm -a -t 192.168.91.3:80 -r 10.0.0.111:80 -m    
#添加RS1服务器,-m选项即指定nat模式
ipvsadm -a -t 192.168.91.3:80 -r 10.0.0.0.5:80 -m    
#添加RS2服务器
ipvsadm-save

 5.客户端测试

 根据脚本的结果分析可知,客户端轮询访问两个真实服务器(RS1、RS2),由此证明成功地实现了轮询调度算法的负载均衡模式。

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]
# for i in {1..10};do curl http://192.168.91.3;done
<h1>web server RS2<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS2<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS2<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS2<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS2<
/h1
>
<h1>web server RS1<
/h1
>

 6.修改调度算法为wrr(加权轮询)

  负载均衡服务器端操作

1
2
3
4
5
6
7
8
9
[root@localhost ~]
# ipvsadm -E -t 192.168.91.3:80 -s wrr               #修改调度算法为wrr
[root@localhost ~]
# ipvsadm -e -t 192.168.91.3:80 -r 10.0.0.111:80 -m -w 2    #修改RS1的权重为2
[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  192.168.91.3:80 wrr
  
-> 10.0.0.5:80                  Masq    1      0          11        
  
-> 10.0.0.111:80                Masq    2      0          14

  客户端操作

   根据脚本的结果分析可知,客户端先访问一次RS2,接着再访问两次RS1,如此循环访问。由此证明成功地实现了加权轮询调度算法的负载均衡模式。

1
2
3
4
5
6
7
8
9
10
11
12
测试
[root@localhost ~]
# for i in {1..10};do curl 192.168.91.3;done
<h1>web server RS2<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS2<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS2<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS1<
/h1
>
<h1>web server RS2<
/h1
>

四、实验需要注意的问题

  1.根据真实环境,VIP为公网地址,RIP应该为私有地址,这样的目的是将服务器隐藏起来。所以在虚拟机实验时最好将VIP设置为桥接的模式,RID设置为仅主机模式。

  2.RID的网关必须指向负载均衡器的DIP,并且RID与DIP在同一网段内。

  3.负载均衡器一定要开启核心转发功能

  4.设置好相应的防火墙规则(或者直接关闭),并且关闭selinux。

本文转自 PowerMichael 51CTO博客,原文链接:http://blog.51cto.com/huwho/1941684,如需转载请自行联系原作者

你可能感兴趣的文章
java代码随机数100个,10个一输出显示======
查看>>
初始化代码块
查看>>
[NOI2008]志愿者招募
查看>>
Linux——网络端口的状态netstat、ifconfig
查看>>
canvas元素简易教程(5)(大部分转自火狐,自己只写了简单的代码分析)
查看>>
ArcCore重构-生成%_offset.h文件
查看>>
关于kafka的新的group无法订阅到topic中历史消息的问题
查看>>
zp_bj_03
查看>>
Idea 实时编译 和 热部署
查看>>
如何javascript获取css中的样式
查看>>
mysql INFORMATION_SCHEMA (转)
查看>>
多线程之异步编程: 经典和最新的异步编程模型,async与await
查看>>
length
查看>>
JDK源码阅读--HashMap
查看>>
Adroid 展开收起效果实现
查看>>
PHP:第五章——字符串转换与比较
查看>>
0阶 无符号指数哥伦布编码
查看>>
18、配置嵌入式servlet容器(2)
查看>>
URL重写
查看>>
移植spdylay到libcurl
查看>>