Ubuntu下实现双网卡负载均衡

什么是bonding

Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。

bonding的工作模式

bonding一共有7种工作模式

0:(balance-rr)Round-robin policy: (平衡轮询策略):传输数据包顺序是依次传输,直到最后一个传输完毕,此模式提供负载平衡和容错能力。

1:(active-backup)Active-backup policy:(活动备份策略):只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。

2:(balance-xor) XORpolicy:(平衡策略):传输根据[(源MAC地址xor目标MAC地址)mod 设备数量]的布尔值选择传输设备。 此模式提供负载平衡和容错能力。

3:(broadcast)Broadcast policy:(广播策略):将所有数据包传输给所有设备。 此模式提供了容错能力。

4:(802.3ad) IEEE802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。

5:(balance-tlb)Adaptive transmit load balancing(适配器传输负载均衡):通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设备传不通就用另一个设备接管当前设备正在处理的mac地址。

6:(balance-alb)Adaptive load balancing: (适配器负载均衡):包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP 在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。

安装软件

ifenslave一种粘合和分离式的软件,可以将数据包有效的分配到bonding驱动。

sudo apt-get install ifenslave

修改配置文件

sudo vi /etc/network/interfaces

 

# This file describes the network interfaces available onyour system

# and how to activate them. For more information, seeinterfaces(5).

 

# The loopback network interface

auto lo

iface lo inet loopback

 

#注释掉原来的eth0,eth1配置

# The primary network interface

#auto eth0

#iface eth0 inet dhcp

#auto eth1

#iface eth1 inet dhcp

 

#这里配置模式为轮询策略,模式代号是0,轮询间隔100ms(毫秒)

up ifenslave bond0 eth0 eth1

down ifenslave bond0 -d eth0 eth1

bond-mode 0

bond-miimon 100

#配置bond的IP

auto bond0

iface bond0 inet static

address 192.168.0.201

netmask 255.255.255.0

gateway 192.168.0.1

 

#配置bond的虚拟IP(非必须)

auto bond0:1

iface bond0:1 inet static

address 192.168.1.201

netmask 255.255.255.0

gateway 192.168.1.1

================================

加载bonding模块

sudo vi /etc/modules

bonding

重启计算机

sudo shutdown -r now

如果成功,bond0、eth0、eth1的MAC地址均会变成原来eth0的MAC。
Ubuntu下实现动态路由

 

什么是动态路由

一个真正路由应具备的功能,使用各种路由协议,动态设置路由信息。

zebra支持RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+

安装zebra

sudo apt-get install quagga

复制配置文件

复制总体配置文件、ospf路由协议配置文件

cd /usr/share/doc/quagga/examples/

sudo cp zebra.conf.sample/etc/quagga/zebra.conf

sudo cp ospfd.conf.sample /etc/quagga/ospfd.conf

修改配置文件属主

cd /etc/quagga

sudo chown quagga:quagga zebra.conf

sudo chown quagga:quagga ospfd.conf

修改配置

修改zebra.conf设置路由登陆密码,特权密码等,修改ospfd.conf等。

修改/etc/quagga/daemons,选择启动的服务,改成yes,即可

重启服务后联机,telnet 127.0.0.1 端口

sudo /etc/rc2.d/S20quagga stop

sudo /etc/rc2.d/S20quagga start

zebrasrv   2600/tcp            #zebra service
zebra       2601/tcp            #zebra vty
ripd        2602/tcp           # ripd vty (zebra)
ripngd       2603/tcp            #ripngd vty (zebra)
ospfd       2604/tcp            #ospfd vty (zebra)
bgpd       2605/tcp            #bgpd vty (zebra)
ospf6d       2606/tcp            #ospf6d vty (zebra)
ospfapi       2607/tcp            #OSPF-API
isisd       2608/tcp            #ISISd vty (zebra)

登陆界面和使用cisco路由时差不多,下面的操作同cisco。

sudo more zebra.conf

!

! Zebra configuration saved from vty

!   2013/11/0819:26:42

!

hostname Router

password zebra

enable password zebra

!

interface bond0

 ipv6 ndsuppress-ra

!

interface eth0

 ipv6 ndsuppress-ra

!

interface eth1

 ipv6 ndsuppress-ra

!

interface lo

 ip address 218.85.118.2/32             //负载分担IP地址

!

interface usb0

 ipv6 ndsuppress-ra

!

!

!

line vty

!

sudo more ospfd.conf

!

! Zebra configuration saved from vty

!   2013/11/0800:19:35

!

hostname ospfd

password zebra

log stdout

!

!

!

interface bond0

!

interface eth0

!

interface eth1

!

interface lo

!

interface usb0

!

router ospf

 ospf router-id 218.85.118.85           //服务器bond0的IP地址

 network 218.85.118.2/32 area 0.0.0.0         //负载分担IP地址

 network 218.85.118.64/27 area 0.0.0.0                     //服务器网段地址

!

line vty

!

你可能感兴趣的:(ubuntu)