LVS负载均衡策略的部署与应用「建议收藏」

LVS负载均衡策略的部署与应用

大家好,又见面了,我是全栈君。

通常来说负载均衡可分为四层负载均衡和七层负载均衡,而四层负载均衡策略中比较典型的实现方式为LVS负载均衡

LVS简介

LVS负载均衡中有三种调度方法,分别为:NAT(Network Address Translation网络地址转换)、TUN(tunnel 隧道)、DR(direct route 直接路由)
LVS-DR
DR模式下需要LVS服务器和后台服务器绑定同一个VIP, 一个请求过来时,LVS只需要将网络帧的MAC地址修改为其中一台后台服务器的MAC,该包就会被转发到相应的服务器处理,当服务器返回响应时,只要直接向用户的IP地址返回即可,不再经过LVS服务器
优缺点:
1)lvs接收请求输入,将请求转发给RS,由RS输出响应给用户,性能非常高。
2)不足之处是要求负载均衡器与RS在一个物理段上
LVS-TUN
LVS-TUN模式是通过ip隧道技术减轻lvs调度服务器的压力,很多时候服务器收到的请求包很短小,但应答包通常很大,负载均衡器只负责将请求包分发给后台服务器,后台服务器会直接将应答包返回给用户。因此,负载均衡器能处理很巨大的请求量。
优缺点:
1)性能比LVS-NAT模式要高的多,且不限制负载均衡器与后台服务器在一个物理段上
2)不足之处是需要所有的服务器都要支持”IP Tunneling”协议
LVS-NAT
LVS-NAT模式是一种外网和内网地址映射的技术。在NAT模式中,LVS需要作为后台服务器的网关,当客户端访问LVS服务器的外网网卡IP地址时,LVS会将数据包的目标IP地址改为后台服务器的IP地址;当后台服务器返回响应时,同样需要通过LVS服务器作为网关进行中转,LVS服务器会将数据包的源地址改为LVS服务器的外网网卡IP地址,因此客户端会认为响应是LVS服务器返回的
优缺点:
1)可以有效把后台服务器IP地址隐藏起来
2)NAT模式请求和响应都需要经过lvs,性能没有DR模式好
前期准备
准备三台centos7,配置IP地址和hostname,同步时间,关闭防火墙和selinux,配置IP地址和hostname映射

hostname ip
node1 192.168.29.143
node2 192.168.29.142
node3 192.168.29.144

在node2和node3中部署httpd服务并修改首页内容

[root@node2 ~]# yum install httpd -y
[root@node2 ~]# echo node2 > /var/www/html/index.html
[root@node3 ~]# yum install httpd -y
[root@node3 ~]# echo node3 > /var/www/html/index.html
[root@node2 ~]# systemctl start httpd
[root@node3 ~]# systemctl start httpd

node1部署ipvsadm

[root@node1 ~]# yum install ipvsadm -y
[root@node1 ~]# systemctl start ipvsadm.service

部署LVS-DR

node1端设置部署
添加VIP和设置路由表

[root@node1 ~]# ifconfig ens33:0 192.168.29.122 broadcast 192.168.29.122 netmask 255.255.255.255 up
[root@node1 ~]#  route add -host 192.168.29.122 dev ens33:0

开启包转发功能

[root@node1 ~]# echo "1" >/proc/sys/net/ipv4/ip_forward

设置ipvsadm转发规则

#先清除所有转发规则
[root@node1 ~]# ipvsadm --clear
[root@node1 ~]# ipvsadm -A -t 192.168.29.122:80 -s rr
[root@node1 ~]#  ipvsadm -a -t 192.168.29.122:80 -r 192.168.29.142:80 -g -w 1
[root@node1 ~]#  ipvsadm -a -t 192.168.29.122:80 -r 192.168.29.144:80 -g -w 1
#设置完成后查看状态
[root@node1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  node1:http rr
  -> node2:http                   Route   1      0          0
  -> node3:http                   Route   1      0          0

#选项说明:
-A:添加一个虚拟服务,使用ip地址、端口号、协议来唯一定义一个虚拟服务
-t:使用TCP服务,该参数后需加主机与端口信息
-s:指定lvs的调度算法
rr:轮询算法
-a:添加一台真实服务器
-r:设置真实服务器IP与端口
-g:设置lvs工作模式为DR直连路由
-w:指定真实服务器权重

node2和node3设置部署
添加VIP和设置路由表

[root@node2 ~]# ifconfig lo:0 192.168.29.122 broadcast 192.168.29.122 netmask 255.255.255.255 up
[root@node2 ~]# route add -host 192.168.29.122 dev lo:0
[root@node3 ~]# ifconfig lo:0 192.168.29.122 broadcast 192.168.29.122 netmask 255.255.255.255 up
[root@node3 ~]# route add -host 192.168.29.122 dev lo:0

关闭arp解析

[root@node2 ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@node2 ~]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@node2 ~]# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@node2 ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
[root@node2 ~]# sysctl -p
[root@node3 ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@node3 ~]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@node3 ~]# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@node3 ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
[root@node3 ~]# sysctl -p

测试验证
浏览器访问http://192.168.29.122,刷新则会按照轮询算法自动进行负载均衡
LVS负载均衡策略的部署与应用「建议收藏」
LVS负载均衡策略的部署与应用「建议收藏」

部署LVS-TUN

node1端设置部署
添加VIP

[root@node1 ~]# ip addr add 192.168.29.122 dev ens33:0

开启包转发功能

[root@node1 ~]# echo "1" >/proc/sys/net/ipv4/ip_forward

设置ipvsadm转发规则

#先清除所有转发规则
[root@node1 ~]# ipvsadm --clear
[root@node1 ~]# ipvsadm -A -t 192.168.29.122:80 -s rr
[root@node1 ~]#  ipvsadm -a -t 192.168.29.122:80 -r 192.168.29.142:80 -i
[root@node1 ~]#  ipvsadm -a -t 192.168.29.122:80 -r 192.168.29.144:80 -i
#设置完成后查看状态
[root@node1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  node1:http rr
  -> node2:http                   Tunnel  1      1          2
  -> node3:http                   Tunnel  1      0          1
#选项说明:
-i:设置lvs工作模式为TUN隧道

node2和node3设置部署
添加tunl0隧道

modeprobe ipip

添加VIP

[root@node2 ~]# ip addr add 192.168.29.122 dev tunl0
[root@node2 ~]#ip link set tunl0 up
[root@node3 ~]# ip addr add 192.168.29.122 dev tunl0
[root@node3 ~]#ip link set up tunl0

关闭arp解析

[root@node2 ~]# vi /etc/sysctl.conf
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
[root@node2 ~]# sysctl -p
[root@node3 ~]# vi /etc/sysctl.conf
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
[root@node3 ~]# sysctl -p

测试验证
浏览器访问http://192.168.29.122,刷新则会按照轮询算法自动进行负载均衡
LVS负载均衡策略的部署与应用「建议收藏」
LVS负载均衡策略的部署与应用「建议收藏」

部署LVS-NAT

在部署LVS-NAT架构前需要在调度机上安装两块网卡,一块为内网地址,另一块为外网地址

内网ip 外网ip
192.168.29.143 192.168.31. 128

node1端设置部署
开启包转发功能

[root@node1 ~]# echo "1" >/proc/sys/net/ipv4/ip_forward

设置ipvsadm转发规则

#先清除所有转发规则
[root@node1 ~]# ipvsadm --clear
[root@node1 ~]# ipvsadm -A -t 192.168.31.128:80 -s rr
[root@node1 ~]#  ipvsadm -a -t 192.168.31.128:80 -r 192.168.29.142:80 -m
[root@node1 ~]#  ipvsadm -a -t 192.168.31.128:80 -r 192.168.29.144:80 -m
#设置完成后查看状态
[root@node1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  node1:http rr
  -> node2:http                   Masq    1      0          0
  -> node3:http                   Masq    1      0          0
#选项说明:
-m:设置lvs工作模式为NAT地址转换模式

node2和node3设置部署
设置路由表

[root@node2 ~]# route add -net 192.168.31.0/24 gw 192.168.29.143
[root@node3 ~]# route add -net 192.168.31.0/24 gw 192.168.29.143

测试验证
LVS负载均衡策略的部署与应用「建议收藏」

LVS负载均衡策略的部署与应用「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111743.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ATECC508A芯片开发笔记(七):实现数字签名(Sign)并校验(Verify)证书签名

    ATECC508A芯片开发笔记(七):实现数字签名(Sign)并校验(Verify)证书签名ATECC508A芯片开发笔记(七):实现对数据数字签名(Sign)并验证(Verify)证书签名一、数据签名、验证基本流程二、利用508对数据签名并验证代码实现:三、X.509证书验证本节介绍利用508对证书数据进行签名、验证的步骤和原理。一、数据签名、验证基本流程由网络安全知识我们知道,对数据进行签名,其实就是用私钥加密而已,而验证签名就是用该私钥对应的公钥进行解密。而如果对整个数

    2022年6月12日
    33
  • 代码生成器修改备注名_王者荣耀名字代码生成器

    代码生成器修改备注名_王者荣耀名字代码生成器1.model层生成时主键的字段是int32?2.Pcip_Msg中的IsAllClinics本是tinyintnotnull,但转成后是Byte?应该去?才对的.3.应能适应网络及本地中的有错数据库

    2022年7月28日
    4
  • UVa409_Excuses, Excuses!(小白书字符串专题)[通俗易懂]

    UVa409_Excuses, Excuses!(小白书字符串专题)

    2022年2月6日
    46
  • 成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2「建议收藏」

    成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2「建议收藏」解决问题在导入tensorflow后,进行运算时,出现了红色错误!importtensorflowastfimportnumpyasnp资料参考AdvancedVectorExtensions(AVX,alsoknownasSandyBridgeNewExtensions)先进的矢量扩展(AVX,也称为桑迪桥新的扩展)是从英特尔和英特…

    2022年5月7日
    52
  • 群、环、域的概念,定义和理解.

    群、环、域的概念,定义和理解.群、环、域的概念,定义和理解.以下链接很好的解释了群环域的概念.http://sparkandshine.net/algebraic-structure-primer-group-ring-field-vector-space/群的定义:(Group)群是一个特殊的集合,这个集合需要满足4条性质.1,2,3,4blablabla,就叫1个群.也叫群公理定义.我这里要说的是,并不是每个集合都能够同时满足这4条性质的.例如第一条:totality,整体性或封闭性.集合中的两个

    2022年6月19日
    34
  • flowable流程详解

    flowable流程详解flowable图例解释请假流程bpmn20.xml文件请假流程示例图例解释开始事件:图中用细线圆圈来表示,是流程实例的开始点箭头:表示节点之间的流转指向。用户任务:在图中用左上角有人的圆角矩形表示,这些是需要用户来操作的节点。图中有两个,第一个表示需要经理进行审批来同意或拒绝,第二个表示用户来确认销假。排它网关:用叉形符号填充的菱形表示,从该图中出来的箭头往往有多个,但只有一个满足条件,流程会沿着满足条件的方向流转。自动化任务:左上角有齿轮形状的的圆角矩形,表示自动执行的节点。图中

    2022年5月11日
    317

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号