国内服务器
亚洲服务器
欧洲服务器
北美洲服务器
南美洲服务器
大洋洲服务器
非洲服务器

首页>>IDC资讯

linux负载均衡有哪些

发表时间:2022-10-13 09:02:30

linux负载均衡有:1、bond,它是linux内核自带的多网卡聚合功能;2、iproute2中的多路由,使用ip命令中的nexthop选项从而实现负载均衡;3、iptables+iproute2,iptables是通过修改mark标记来实现负载均衡,而iproute2则用来针对数据包的不同mark定义专门的策略路由表;4、流量控制器TC,主要用来实现linux内核的流量控制;5、LVS,它是一套集成在linux内核中的负载均衡服务。

下面是详细介绍:

Linux系统的数据包处理能力相当强大,通过Netfilter框架或者策略路由系统,用户可以非常灵活的定义数据包的处理规则。因此在Linux下实现负载均衡自然也是非常简单,Linux下常用的几种负载均衡技术:

1、bond

bond是Linux内核自带的多网卡聚合功能。这个功能可以把多个网卡整合成一个虚拟网卡从而同时利用多块网卡传输数据。bond有多种不同的模式用以适应不同的情况。bond主要是从L2链路层考虑的,因此可以bond的网卡通常要连到同一个交换机上。

2、iproute2(ip命令)中的多路由

可以使用ip命令中的nexthop选项非常简单的实现负载均衡。nexthop可以为同一个目的地址指定多条路由,并可以指定每条路由的权重。之后系统会根据权重为数据选择某条路由。

例如:ip route add default nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1

这条命令定义默认路由有ip1:if1和ip2:if2两条路径,且这两条路径的权重相同。

利用ip命令实现上边这样简单的负载均衡是非常方便的,但是ip命令毕竟是一个网络层命令,因此它是无法根据运输层(端口号)进行负载均衡的。

3、iptables+iproute2

提起iptables大多数人都只用过其中的filter表和nat表,而对于mangle表则很少有人使用。然后使用mangle表是可以非常方便地实现灵活负载均衡的。

iptables的mangle表用来修改数据包的一些标识,可以修改的标识有:dscp(区分服务类型)、ToS(服务类型)、mark(标记)。前两者是ip头的QoS相关标志位,主要用于ip层的qos实现,但是目前这两个标志位极少被用到,通常都会被忽略。而第三个(mark)则是由linux内核实现的对数据包的标记。因为是由linux内核实现的,因此这个标记只能在本机使用,并非数据包的一部分,出了本机这个标记就不存在了。

iptables实现负载均衡主要是通过修改mark标记来实现。iproute2可以针对数据包的不同mark定义专门的策略路由表,因此我们可以把去往不同接口的路由写入适用不同mark的策略路由表中,之后linux就可以根据数据包的mark来决定数据包要走的路由了。

例如: 

首先,为所有进入本机的目的端口号为25的tcp包打上“1”标记:

iptables -A PREROUTING  -t mangle -p tcp --dport 25 -j MARK --set-mark 1   

添加路由规则规定标记为1的数据包使用路由表200

ip rule add fwmark 1 table 200

在200路由表中添加路由

ip route add default via 192.168.1.1 dev ppp0 table 200

同理,为所有进入本机的目的端口号为80的tcp包打上“2”标记

iptables -A PREROUTING  -t mangle -p tcp --dport 80 -j MARK --set-mark 2

添加相关路由,方法同上:

ip rule add fwmark 2 table 200

ip route add default via 192.168.2.1 dev wlan0 table 200

这样子一来以后所有的端口号为25的包都会走192.168.1.1 dev ppp0路由,而所有端口号为80的数据包则会走192.168.2.1 dev wlan0路由,从而实现了针对端口号的负载均衡。同理,也可以利用iptables实现针对源(目的)地址、协议、接口的负载均衡,真的非常的方便。

4、tc

流量控制器TC(Traffic Control)用于Linux内核的流量控制,它利用队列规定建立处理数据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。TC命令通过建立筛选器(filter)、分类器(class)、队列(qdisc)这三个对象来实现对流量的控制。具体的讲就是,通过筛选器决定哪些数据包进入到哪些分类的队列中,之后再按照一定的规则将数据包从各个分类的队列中发送出去。尽管tc的主要功能在于流量控制,但是我们可以通过把一个队列建立在多个网卡上来实现流量的负载均衡。

例如:

在eth1上建立一个队列:

tc qdisc add dev eth1 root teql0

在eth2上建立同样的队列

tc qdisc add dev eth2 root teql0

启动设备teql0 

ip link set dev teql0 up

通过这三条命令,所有发往teql0的流量都会在eth1和eth2之间进行负载均衡发送。

应该说,tc是一个相当强大复杂的工具,但是tc的主要功能还是在于流量控制。

5、LVS

LVS(Linux virtual machine)是一套集成在Linux内核中的负载均衡服务。LVS通过部署负载均衡服务器在网络层截获并修改报文并依据一定规则分发给服务器集群中服务器来实现负载均衡。LVS主要用于web服务器的负载均衡,通过LVS,用户的请求可以被调度到服务器集群的多个服务器上去,并且用户认为自己始终在跟唯一一台服务器进行通信。LVS与前边几种负载均衡技术最大的差别在于,LVS有非常具体的应用场景,即web服务器集群。

上一篇 下一篇
最新文章

如何提高云服务器的安全系数

香港独立IP空间有什么优势

香港空间影响百度收录吗

为啥要租用美国VPS

VPS的缺点有哪些

香港vps作用在哪里

VPS的优点有哪些

外贸网站为啥选择美国vps

VPS能建多少个网站

VPS要如何选择位置

相关文章

使用香港服务器做站群对网站有什么优势

WAN广域网有什么优势?

美国Linux服务器内存不足的有哪些原因

路由器的配置途径

网站加速cdn的原理 摸索你未知的世界

ICMP协议是什么?起什么作用?

一文说清融合CDN的稳固性为何这么好?融合CDN租用

日本服务器为啥会受青睐

双线asp空间租用好处有哪些

服务器线路有哪些?服务器线路比较不错的是哪个?

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!