首頁 > 軟體

設定Linux環境下多網絡卡高可用網路埠

2020-06-16 17:29:58

網路是資訊系統的核心關鍵。目前主流的資訊系統結構體系中,資料庫儲存往往都是在系統的後端,不直接與前端使用者相對。同時,在諸如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:Usersadmin>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:Usersadmin>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:Usersadmin>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:Usersadmin>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:Usersadmin>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和儲存之間有非常複雜的資料交換和資訊傳遞。所以,網路保障至關重要。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-10/136566.htm


IT145.com E-mail:sddin#qq.com