配置Linux环境下多网卡高可用网络端口

网络是信息系统的核心关键。目前主流的信息系统结构体系中,数据库存储往往都是在系统的后端,不直接与前端用户相对。同时,在诸如SAN和NAS等基于网络体系的存储环境中,可靠的网络环境是我们必须考虑的因素。

从常见系统运维事故中,意外断电、断网和空调漏水是三个主要故障因素。意外的网络中断,对Oracle而言可能就意味着丢失数据写入、数据归档失败、DG同步失败。面对这些因素,我们能做的其实也就是用软硬件冗余策略,提高系统关键网络点可用性。

在网络层面,目前服务器大都可以配置多余一个网卡设备(一般四个)。通常,我们的配置是一个网卡对应一个IP地址,访问不同的网卡对应不同的IP地址。那么,可否设置一种方法,建立一个虚拟的网卡,对应一个虚拟的IP地址。后台是由多个物理网卡与之对应。这种策略下:一旦一个网卡或者线路出现问题,其他的网络旁路也可以以相同的IP地址对外提供支持。

本篇主要介绍在Linux环境下,如何配置这种高可用公共网络配置。

1、环境说明

笔者使用红帽6.5进行实验。

[root@SimpleLinux ~]# cat /etc/RedHat-release

Red Hat Enterprise Linux Server release 6.5 (Santiago)

[root@SimpleLinux ~]# uname -a

Linux SimpleLinux.localdomain 2.6.32-431.el6.i686 #1 SMP Sun Nov 10 22:20:22 EST 2013 i686 i686 i386 GNU/Linux

当前在服务器上,安装了两个物理网卡,对应名称分别是eth0和eth1。

[root@SimpleLinux network-scripts]# ifconfig

eth0      Link encap:Ethernet  HWaddr 08:00:27:91:3F:F7 

          inet addr:192.168.137.88  Bcast:192.168.137.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe91:3ff7/64 Scope:Link

eth1      Link encap:Ethernet  HWaddr 08:00:27:36:30:45 

          inet addr:192.168.137.89  Bcast:192.168.137.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe36:3045/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:93 errors:0 dropped:0 overruns:0 frame:0

当前,两个网卡均可有效,可以从外部使用网络ping通。

C:\Users\admin>ping 192.168.137.88

正在 Ping 192.168.137.88 具有 32 字节的数据:

来自 192.168.137.88 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.137.88 的回复: 字节=32 时间<1ms TTL=64

192.168.137.88 的 Ping 统计信息:

    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

    最短 = 0ms,最长 = 0ms,平均 = 0ms

Control-C

^C

C:\Users\admin>ping 192.168.137.89

正在 Ping 192.168.137.89 具有 32 字节的数据:

来自 192.168.137.89 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.137.89 的回复: 字节=32 时间<1ms TTL=64

192.168.137.89 的 Ping 统计信息:

    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

    最短 = 0ms,最长 = 0ms,平均 = 0ms

Control-C

^C

2、配置虚拟bond0

配置高可用虚拟网卡,首先需要在操作系统层面关闭Network Manager服务。

[root@SimpleLinux ~]# chkconfig NetworkManager off

[root@SimpleLinux ~]# chkconfig --list | grep Network

NetworkManager  0:off  1:off  2:off  3:off  4:off  5:off  6:off

[root@SimpleLinux ~]# service NetworkManager stop

进入网络配置目录文件夹,将原有的两个网卡配置文件备份好。

[root@SimpleLinux ~]# cd /etc/sysconfig/network-scripts/

[root@SimpleLinux network-scripts]# ls -l | grep ifcfg-eth

-rw-r--r--. 1 root root  281 Sep  5  2014 ifcfg-eth0

-rw-r--r--. 1 root root  108 Oct 20 09:45 ifcfg-eth1

[root@SimpleLinux network-scripts]# mv ifcfg-eth0 /tmp

[root@SimpleLinux network-scripts]# mv ifcfg-eth1 /tmp

生成bond0文件。

[root@SimpleLinux network-scripts]# echo "alias bond0 bonding" > /etc/modprobe.d/bonding.conf

[root@SimpleLinux network-scripts]# cd /etc/modprobe.d/

[root@SimpleLinux modprobe.d]# cat bonding.conf

alias bond0 bonding

在/etc/sysconfig/network-scripts目录下,创建单独的ifcfg-bond0文件。

[root@SimpleLinux modprobe.d]# cd /etc/sysconfig/network-scripts/

[root@SimpleLinux network-scripts]# cat ifcfg-bond0

DEVICE="bond0"

BONDING_OPTS="mode=1 miimon=100 primary=em1"

NM_CONTROLLED="no"

IPADDR="192.168.137.90"  --新的IP地址,虚拟IP

NETMASK="255.255.255.0"

GATEWAY="192.168.137.1"

ONBOOT="yes"

修改原有的eth0和eth1文件。

[root@SimpleLinux network-scripts]# cat ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

name="System eth0"

SLAVE=yes

MASTER=bond0

[root@SimpleLinux network-scripts]# cat ifcfg-eth1

DEVICE=eth1

ONBOOT=yes

name="System eth1"

SLAVE=yes

MASTER=bond0

重新启动网络服务service network,让应用生效。

此时ifconfig状态如下:

[root@SimpleLinux network-scripts]# ifconfig

bond0    Link encap:Ethernet  HWaddr 08:00:27:91:3F:F7 

          inet addr:192.168.137.90  Bcast:192.168.137.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe91:3ff7/64 Scope:Link

          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

          RX packets:3000 errors:0 dropped:0 overruns:0 frame:0

          TX packets:2164 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:274055 (267.6 KiB)  TX bytes:275545 (269.0 KiB)

eth0      Link encap:Ethernet  HWaddr 08:00:27:91:3F:F7 

          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

          RX packets:2433 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1727 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:220864 (215.6 KiB)  TX bytes:225329 (220.0 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:91:3F:F7 

          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

          RX packets:568 errors:0 dropped:0 overruns:0 frame:0

          TX packets:438 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:53251 (52.0 KiB)  TX bytes:50450 (49.2 KiB)

此时,新的IP地址90已经可以使用了。

C:\Users\admin>ping 192.168.137.90

正在 Ping 192.168.137.90 具有 32 字节的数据:

来自 192.168.137.90 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.137.90 的回复: 字节=32 时间<1ms TTL=64

192.168.137.90 的 Ping 统计信息:

    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

    最短 = 0ms,最长 = 0ms,平均 = 0ms

Control-C

^C

3、高可用测试

下面进行高可用性测试,两个网卡如果被关闭一个,看是否虚拟IP还可以连接。

[root@SimpleLinux ~]# ifconfig eth0 down –关闭了eth0,查看状态。

C:\Users\admin>ping 192.168.137.90

正在 Ping 192.168.137.90 具有 32 字节的数据:

来自 192.168.137.90 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.137.90 的回复: 字节=32 时间<1ms TTL=64

192.168.137.90 的 Ping 统计信息:

    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

    最短 = 0ms,最长 = 0ms,平均 = 0ms

Control-C

启动eth0,关闭eth1。

[root@SimpleLinux network-scripts]# ifconfig eth1 down

C:\Users\admin>ping 192.168.137.90

正在 Ping 192.168.137.90 具有 32 字节的数据:

来自 192.168.137.90 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.137.90 的回复: 字节=32 时间<1ms TTL=64

192.168.137.90 的 Ping 统计信息:

    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

    最短 = 0ms,最长 = 0ms,平均 = 0ms

Control-C

^C

测试成功。

4、结论

高可用网络bond,在Oracle标准配置RAC的过程中,是一个必要过程。主要是针对公共网络和私有网络的高可用配置。RAC架构中,各个节点node之间,节点node和存储之间有非常复杂的数据交换和信息传递。所以,网络保障至关重要。

相关推荐