lvs负载均衡实践之lvs-nat


lvs负载均衡实践之lvs-nat

一、前言

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

 原理请参考:

    http://www.linuxvirtualserver.org/zh/index

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

二、拓扑图

wKioL1lPW8aCW7PUAAEPlWRP_dI431.jpg

工具: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.客户端操作   

[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服务端操作

[root@rs1 ~]#  ip a l | grep "ens33"         #查看ip2: 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 80LISTEN     0      128         :::80                      :::*

 3.RS2服务端操作

  操作大抵和上面一致

[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 80LISTEN     0      128         :::80                      :::*

 4.负载均衡服务端操作

[root@localhost ~]# ip a l | egrep "ens33|ens37"   #查看ip2: 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 ens333: 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 ens37yum 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    1setenforce 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),由此证明成功地实现了轮询调度算法的负载均衡模式。

[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(加权轮询)

  负载均衡服务器端操作

[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 InActConnTCP  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,如此循环访问。由此证明成功地实现了加权轮询调度算法的负载均衡模式。

测试[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。

本文出自 “有点意思!” 博客,请务必保留此出处http://powermichael.blog.51cto.com/12450987/1941684

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告