前言

工作中主要以 SuSE 为主,网络作为整个高可用架构中最重要的环节之一,在物理上一般是双网卡绑定模式,通常使用默认的 mode=1(active-backup) 作为主备关系。在最近测试大数据的生产服务器中,考虑到性能优先,所以将绑定模式设置为 mode=6(balance-alb),使用负载均衡提高 1 倍流量。与此同时针对 SuSE HA 架构由 Skybility HACorosync/Openais+Pacemaker 的测试过程中,配合网络交换机 Port Channel 链路聚合采用 mode=0(balance-rr ),凭借平衡轮询实现网络中断 0 丢包。

下文以 CentOS 为例 (Red Hat 类似),其它平台双网卡设置都较为简单,SuSE(YaST),AIX(SMIT),Windows(Intel),如果大家有需求可以回复留言,我会在后续更新和补充。

遵循高可用原则,实现失效保护和负载均衡


更新记录

2015 年 02 月 09 日 - 初稿

阅读原文 - https://wsgzao.github.io/post/bonding/

扩展阅读


基础配置信息

常用的三种 Bond 模式

配置过程以 mode=6 为例,其它 7 种模式请参考扩展阅读

mode=0:平衡负载模式,有自动备援,但需要”Switch” 支援及设定。
mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
mode=6:平衡负载模式,有自动备援,不必”Switch” 支援及设定。

物理接口

interface IP type
eth0,eth2 两块生产网卡
eth3 10.129.46.19 私有地址
bond0 10.3.3.214 双网卡绑定地址

CentOS 版本

1
2
datanode01:~>cat /etc/redhat-release
CentOS release 6.4 (Final)

禁用 NetworkManager

1
2
3
4
# 立即关闭禁用 NetworkManager 并禁用开机自启动 
/etc/init.d/NetworkManager stop
chkconfig NetworkManager off
/etc/init.d/network restart

关闭 iptables 和 selinux(可选)

1
2
3
4
5
6
7
# 立即关闭 iptables 并禁用开机自启动 
/etc/init.d/iptables stop
chkconfig iptables off

# 立即关闭 selinux 并永久禁用
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config

修改主机名

1
2
3
4
5
6
7
8
vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=namenode01

# 刷新生效
hostname namnode01
source /etc/sysconfig/network

配置 IP

私有地址

1
2
3
4
5
6
7
8
9
10
cd /etc/sysconfig/network-scripts

[root@datanode09 network-scripts]# cat ifcfg-eth3
DEVICE=eth3
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.129.46.19
NETMASK=255.255.255.0
IPV6INIT=no
USERCTL=no

双网卡绑定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
cd /etc/sysconfig/network-scripts

# 编辑 eth0
cat > ifcfg-eth0 << EOF
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
EOF

# 编辑 eth2
cat > ifcfg-eth2 << EOF
DEVICE=eth2
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
EOF

# 编辑 bond0
cat > ifcfg-bond0 << EOF
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.3.3.214
NETMASK=255.255.255.0
GATEWAY=10.3.3.1
IPV6INIT=no
USERCTL=no
EOF

# 设置 bond 参数,注意 mode 选择
cat > /etc/modprobe.conf << EOF
alias bond0 bonding
options bond0 miimon=100 mode=6
EOF

# 加入开机自启动参数
cat >> /etc/rc.local << EOF
ifenslave bond0 eth0 eth2
EOF

# 重启网卡
service network restart

# 使绑定网卡立即生效
ifenslave bond0 eth0 eth2

# 测试绑定网络
ping 10.3.3.1

常用 3 种网卡绑定模式对比

mode=0

中断任意一条链路或恢复链路,网络 0 丢包

优点:流量提高 1 倍

缺点:需要接入同一交换机做聚合配置,无法保证物理交换机高可用 (Cisco 似乎有解决方案?)

mode=1

中断任意一条链路丢失 1-3 个包 (秒),恢复链路时 0 丢包

优点:交换机无需配置

缺点:如上

mode=6

中断任意一条链路 0 丢包,恢复链路时丢失 10-15 个包 (秒)

优点:交换机无需配置,流量提高 1 倍

缺点:恢复链路时丢包时间过长

文章目录
  1. 1. 前言
  2. 2. 更新记录
  3. 3. 基础配置信息
    1. 3.1. 常用的三种 Bond 模式
    2. 3.2. 物理接口
    3. 3.3. CentOS 版本
    4. 3.4. 禁用 NetworkManager
    5. 3.5. 关闭 iptables 和 selinux(可选)
    6. 3.6. 修改主机名
  4. 4. 配置 IP
    1. 4.1. 私有地址
    2. 4.2. 双网卡绑定
  5. 5. 常用 3 种网卡绑定模式对比
    1. 5.1. mode=0
    2. 5.2. mode=1
    3. 5.3. mode=6