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之间进行负载均衡发送。

linux常见得几种负载均衡,Linux下的几种负载均衡技术小结相关推荐

  1. mysql几种备份恢复_windows下mysql几种常用的备份恢复数据的方法

    在Windows系统下备份和还原mysql数据库在导入备份数据库前,database_name如果没有,是需要创建的;而且与backup20120513.sql中数据库名是一样的才能导入.假设mysq ...

  2. linux常见问题解答

    linux常见问题解答 1.什么是LINUX? LINUX是一个可独立运作的POSIX兼容操作系统,它也包含了SYS V和BSD的功能.它 完全是独之发展的,所以其中没有任何有版权问题的代码.LINU ...

  3. Linux常见命令:与系统管理有关的命令(转)

    Linux常见命令:与系统管理有关的命令(转) wall命令 这个命令的功能是对全部已登录的用户发送信息,用户可以先把要发送的信息写好存入一个文件中,然后输入: # wall < 文件名 这样就 ...

  4. linux的网页口令相关,RedHat Linux常见有关问题集锦(一)

    RedHat Linux常见有关问题集锦(一) RedHat Linux常见有关问题集锦(一) 日期:2014-05-16 浏览次数:20361 次 RedHat Linux常见问题集锦(一) 000 ...

  5. Linux下的几种负载均衡技术小结

    前言 Linux系统的数据包处理能力相当强大,通过Netfilter框架或者策略路由系统,用户可以非常灵活的定义数据包的处理规则.因此在Linux下实现负载均衡自然也是非常简单.笔者在此总结了Linu ...

  6. linux进程网络均衡,linux多CPU进程负载均衡解析

    在linux中,支持对称smp的处理器模型,在多处理器的情况下,每个处理器都有自己的一个运行队列,这样就存在着分配不均的情况,有的cpu运行队列很多进程,导致一直很忙,有的cpu运行队列可能很少的进程 ...

  7. Linux服务器集群系统(三)——LVS集群中的IP负载均衡技术

     原文地址:http://www.linuxvirtualserver.org/zh/lvs3.html 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载 ...

  8. Pacemaker,Corosync和PCS搭建高可用性负载均衡linux 集群(httpd)

    Pacemaker,Corosync和PCS搭建高可用性负载均衡linux 集群(httpd) 一.高可用性的概念: 1.一种机制来定义哪些系统可以被用作集群节点 2.哪些服务或者应用可以在节点间作失 ...

  9. nginx学习文档之二 配置负载均衡-linux配置负载均衡

    #linux配置负载均衡 linux下配置tomcat负载均衡和windows下是一样的 安装完nginx后直接修改conf下的nginx.conf文件即可 配置文件如下: #user nobody; ...

  10. Linux常见命令作用(持续更新中,欢迎提议支持)

    Linux常见命令作用(持续更新中,欢迎提议支持) 1.ifconfig 查看ip地址 2.cd 切换工作目录(跳转路径) cd 路径 切换至工作目录"路径" 下同,指令后面都可附 ...

最新文章

  1. python定义一个变量_Python新手上车3:Python第一个程序和变量
  2. maven 笔记,概念
  3. printf函数输出详解
  4. 转账为demo,spring事务
  5. 云计算的概念 - 初识云计算知识专栏(1)
  6. VB.Command()的参数
  7. wpf判断一个窗体是否运行_算法8 判断一个数是否是回文数
  8. 谈中国企业管理、中国企业管理软件为啥走错了道
  9. AcWing 1884. COW(前缀和)
  10. 控制台应用程序《石头剪刀布》——新手,
  11. Windows用户最佳远程控制器——Xmanager
  12. L2-011 玩转二叉树 (25分)
  13. CentOS好玩的代码
  14. openmodelica安装
  15. c语言数组升序排列,数组输入各数之间用空格隔开,输出用空格隔开
  16. C语言程序设计(二)基础内容
  17. 互联网开户_概要设计
  18. php通过api获取天气信息,调用API获取城市天气信息
  19. Vue使用echarts图表实现k线图(分K,日K,周K,月K)
  20. ERROR2002 can not connect to lcoal Mysql Server throuth socket '/tmp/mysql.sock'

热门文章

  1. IM即时通讯-消息id(五)
  2. html接收后端list数据库,前端接受后端传过来的list的处理
  3. python基础---布尔表达式
  4. 支付宝支付和微信支付容易被风控可以看一下这个操作
  5. Java、JSP环境保护与宣传网站的设计与实现
  6. c#数组转换成字符串
  7. POJ 3295: Tautology 递归的永真式
  8. win10+linux双系统给linux系统分区内存扩容
  9. 白帽SEO四大提升技巧
  10. Citrix小贴纸--PVS差异vDisk.