Linux

在 RHEL 上創建埠綁定的正確方法是什麼?

  • March 3, 2020

我的伺服器上有數據介面:eno5、eno6、ens3f0 和 ens3f1。我需要使用 VLAN ID 101 和綁定名稱 data0 的這四個介面創建埠綁定。

更多資訊:

  • RHEL 7.6
  • 檢查介面名稱。(我已經拔掉了電纜,一個介面壞了)
  • 我很可能會為此設置使用模式 4。(不是網路人..)
  • UUID 已經在配置文件中。我什麼都沒改變。

編輯:更多資訊:

  • 沒有虛擬化。我們在這裡談論的是物理機器。
  • 交換機配置已全部設置。
  • 這是一個全新的、最小化的安裝。是否有任何必要的軟體包、核心模組或系統配置?

**第一次嘗試:**在這個 RHEL 文件中做了所有的事情:https ://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sec-configuring_a_vlan_over_a_bond

除了這個文件有兩個介面,但我有四個。我用自己的值更改了介面和鍵名。而且當然; IP、網關和子網也是我自己的。

結果: systemctl restart network 沒問題。但是介面甚至不能ping它自己的網關……

關於這個嘗試:

  • 模式選擇在文件上完全相同

**第二次嘗試:**完全完成了本文件中的所有內容:http: //villasyslog.net/rhel-bonding-and-vlan-tagging/

再一次,我有四個介面,所以改變了值。

結果: systemctl restart network 失敗。我的債券沒有得到 IPv4 地址。相反,它顯示了我的一些愚蠢的 IPv6 東西。

關於這個嘗試:

  • 沒有 /etc/modprobe.d/bonding.conf 文件。

第一次嘗試時,我在 /etc/sysconfig/network-scripts/ifcfg-* 下有四個介面的文件和一個綁定配置文件(總共 5 個)。

第二份文件建議更多文件。四個介面,一個用於綁定,一個用於 VLAN 標記。不幸的是,我沒有第一個配置文件,但我有第二個。他們來了:

ifcfg-數據0

DEVICE=data0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
BONDING_MODULE_OPTS="mode=4 miimon=100"
BONDING_SLAVE0=ens3f1
BONDING_SLAVE1=ens3f0
BONDING_SLAVE2=eno6
BONDING_SLAVE3=eno5
VLAN=yes
IPV6INIT=no

ifcfg-data0.101

DEVICE=data0.101
BOOTPROTO=none
ONBOOT=yes
IPADDR=host IP
NETMASK=netmask
GATEWAY=gateway
NETWORK=first IP of network
BROADCAST=broadcast IP
USERCTL=no
BONDING_MODULE_OPTS="mode=4 miimon=100"
BONDING_SLAVE0="ens3f1"
BONDING_SLAVE1="ens3f0"
BONDING_SLAVE2="eno6"
BONDING_SLAVE3="eno5"
VLAN=yes
IPV6INIT=no

其他四個介面:

TYPE=Ethernet
BOOTPROTO=none
UUID=device uuid
DEVICE=eno5
ONBOOT=yes
MASTER=data0
SLAVE=yes
NM_CONTROLLED=no

TYPE=Ethernet
BOOTPROTO=none
UUID=device uuid
DEVICE=eno6
ONBOOT=yes
MASTER=data0
SLAVE=yes
NM_CONTROLLED=no

TYPE=Ethernet
BOOTPROTO=none
UUID=device uuid
DEVICE=ens3f0
ONBOOT=yes
MASTER=data0
SLAVE=yes
NM_CONTROLLED=no

TYPE=Ethernet
BOOTPROTO=none
UUID=device uuid
DEVICE=ens3f1
ONBOOT=yes
MASTER=data0
SLAVE=yes
NM_CONTROLLED=no

/proc/net/綁定請求:

我在 /proc/net/bonding 下看到兩個文件。其中之一是bond0,我不知道那是什麼:

債券0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: down
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

數據

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens3f1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: (MAC is here)
Slave queue ID: 0

Slave Interface: ens3f0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: (MAC is here)
Slave queue ID: 0

Slave Interface: eno6
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: (MAC is here)
Slave queue ID: 0

Slave Interface: eno5
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: (MAC is here)
Slave queue ID: 0

systemctl 重啟網路:

Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.

systemctl 狀態網路:

● network.service - LSB: Bring up/down networking
  Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
  Active: failed (Result: exit-code) since Fri 2020-02-28 13:48:49 +03; 32s ago
    Docs: man:systemd-sysv-generator(8)
 Process: 37887 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)

Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) network[37887]: RTNETLINK answers: File exists
Feb 28 13:48:49 (host name here) systemd[1]: network.service: control process exited, code=exited status=1
Feb 28 13:48:49 (host name here) systemd[1]: Failed to start LSB: Bring up/down networking.
Feb 28 13:48:49 (host name here) systemd[1]: Unit network.service entered failed state.
Feb 28 13:48:49 (host name here) systemd[1]: network.service failed.

起初,NetworkManager 正在執行。我已禁用它,但 systemctl restart network 仍然失敗。systemctl status NetworkManager 的輸出:

● NetworkManager.service - Network Manager
  Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
  Active: inactive (dead) since Fri 2020-02-28 13:46:58 +03; 2min 13s ago
    Docs: man:NetworkManager(8)
Main PID: 35612 (code=exited, status=0/SUCCESS)

Feb 27 16:26:51 (host name here) NetworkManager[35612]: <info>  [1582810011.3824] agent-manager: req[0x56187f15d3c0, :1.936/nmcli-connect/0]: agent registered
Feb 27 16:26:51 (host name here) NetworkManager[35612]: <info>  [1582810011.3830] audit: op="connection-activate" uuid="09bce14a-449a-3065-8d1b-d4bcde243bd8" name="Vlan data0.744" result="fail" reason="Failed to find a compatible device for this connection"
Feb 28 13:46:58 (host name here) systemd[1]: Stopping Network Manager...
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info>  [1582886818.8800] caught SIGTERM, shutting down normally.
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info>  [1582886818.8846] device (ens3f0): released from master device data.744
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info>  [1582886818.8851] device (ens3f1): released from master device data.744
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info>  [1582886818.8856] device (eno5): released from master device data.744
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info>  [1582886818.8860] device (eno6): released from master device data.744
Feb 28 13:46:58 (host name here) NetworkManager[35612]: <info>  [1582886818.8890] exiting (success)
Feb 28 13:46:58 (host name here) systemd[1]: Stopped Network Manager.

首先,感謝所有對我的問題的評論。

據我所知,埠綁定有點像正則表達式。每個人都會在指南中寫一些東西,並且不知何故它對他們有用。好吧,不適合我。

直到最近幾天我還不清楚我需要實現什麼。但現在,我得到了它的工作。只剩下故障轉移測試。

所有這些有什麼意義?

  1. 我有四個 10 Gbit 乙太網埠。
  2. 我希望這四個一起工作並處理 40 Gbit 流量(理論上)。
  3. 因此,我需要使用 lacp 模式進行埠綁定。
  4. 必須在交換機端配置給定埠,以便與具有給定埠通道的 lacp 進行埠綁定。這都是網路工作。不是我的。

那麼,如何實現呢?首先,我需要確保 NetworkManager 沒有執行和禁用:

systemctl stop NetworkManager
systemctl disable NetworkManager

然後,檢查介面是否啟動。為此,您需要確保網路服務正在執行:

systemctl status network #check if working
systemctl start network #start if not working

列出所有介面:

ip a

如果任何介面上有 IP,請確保與您的綁定沒有衝突。

要放置您自己的配置,請停止網路服務:

systemctl stop network

你的配置文件應該在**/etc/sysconfig/network-service/**目錄下。

從站範例:

ifcfg-eno5

DEVICE=eno5
NAME=bond0-slave3
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no

讓我們一行一行地走。

  1. 這是 RHEL 本身看到的介面名稱。
  2. 名稱是可選的。它適用於 TUI 或 GUI 軟體。這個是bond的3號奴隸,名為bond0。因此,名稱是bond0-slave3(記住,我有四個奴隸。這是最後一個。其他的像bond0-slave2(1, 0)。

其餘的是,這是經典的乙太網介面。MASTER 將是bond0,是的,這是一個奴隸。網路管理器不應控制此介面。

債券範例:

ifcfg-債券0

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 miimon=100 lacp_rate=slow"
NM_CONTROLLED=no
  1. DEVICE 是綁定的名稱。我給了bond0。
  2. NAME 與上述相同。
  3. TYPE 不是乙太網。這是一個大寫為 B 的債券。
  4. 此虛擬設備是綁定主機。
  5. 它在啟動時啟動。
  6. 不知道那是什麼。
  7. 不同類型的鍵合選項會有所不同。這是速度較慢的 lacp 鍵合,也稱為鍵合模式 4。
  8. 網路管理器不應控制此虛擬介面。

實際上,埠綁定是在這裡完成的(除了我們需要定義 IP、子網和網關)。正如我所聽到的,直到這次我已經設法配置為“訪問模式”。這意味著,只有一個 VLAN 可以在此交換機上工作。但這不是我們想要的,switch 也不期望這種配置。所以我需要定義一個 VLAN ID 並告訴那個交換機。這種類型的配置稱為“中繼模式”。

假設我的 VLAN ID 是 111。

VLAN 標記範例:

ifcfg-bond0.111

DEVICE=bond0.111
TYPE=Vlan
NAME=vlan-bond0.111
BOOTPROTO=none
ONPARENT=yes
IPADDR=IP adresi
NETMASK=subnet mask
GATEWAY=gateway
VLAN=yes
VLAN_ID=111
NM_CONTROLLED=no

我給我的虛擬設備起了一個名字。名稱必須是 BOND_NAME.VLAN_ID 因此我使用了 bond0.111

類型是必不可少的。這既不是乙太網也不是邦德。這是一個Vlan。該界面與伺服器啟動無關。如果父母已經起來(我的意思是bond0),這也應該出現。

IP、網路遮罩和網關線路自行定義。

VLAN=是的!!!!RHEL 文件說明了這一點,這是必不可少的。但我不知道。TYPE is Vlan 為什麼我也要在 VLAN 上設置一個 yes 標誌?任何。

到目前為止,我沒有在任何文件上看到 VLAN_ID。這是我的 VLAN 的 ID。

設置好所有配置文件後,

systemctl start network

這應該可以正常工作。為我工作。

引用自:https://serverfault.com/questions/1004837