多網(wǎng)卡同IP和同網(wǎng)卡多IP技術(shù)

多網(wǎng)卡同IP技術(shù)

將多個網(wǎng)卡端口綁定為一個,可以提升網(wǎng)絡(luò)的性能。在linux系統(tǒng)上有兩種技術(shù)可以實(shí)現(xiàn),Linux 網(wǎng)絡(luò)組和bond,通過綁定多個網(wǎng)卡作為一個邏輯網(wǎng)口并配置單個的IP地址,大幅提升服務(wù)器的網(wǎng)絡(luò)吞吐。

Bonding

目前發(fā)布各個Linux版本內(nèi)核均已包含了此模塊,大多數(shù)情況下不需要重新編譯內(nèi)核。 Linux 的 bonding 驅(qū)動提供了綁定/集成(bond)多個網(wǎng)卡為一個虛擬邏輯網(wǎng)口的功能。 一般來說綁定的網(wǎng)口(bonded)有多種工作模式,主要有熱后備(hot standby) 和 負(fù)載均衡(load balancing).
1.創(chuàng)建bond0配置文件

1.創(chuàng)建bond0配置文件

vi /etc/sysconfig/network-scripts/ifcfg-bond0 添加配置參數(shù)

配置屬性 含義
DEVICE 物理設(shè)備名字
ONBOOT 在系統(tǒng)引導(dǎo)時是否激活此設(shè)備
TYPE 接口類型;常見有的Ethernet,Bridge
IPADDR 指明IP地址
NETMASK 子網(wǎng)掩碼
GATEWAY 默認(rèn)網(wǎng)關(guān)
NAME bond名稱
DNS1 第一個DNS服務(wù)器指向
DNS2 第二個DNS服務(wù)器指向
USERCTL 普通用戶是否可控制此設(shè)備
PEERDNS 如果BOOTPROTO的值為“dhcp”,是否允許
2.修改被綁定的eth0和eth1的配置文件

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes(設(shè)置從屬關(guān)系)
BOOTPROTO=none
HWADDR=00:15:17:CC:FC:35
eth1的配置文件與之相同,只是device的值改為eth1即可。

3.裝載bond模塊驅(qū)動

編輯/etc/modprobe.conf或者/etc/modules.conf文件,加入如下內(nèi)容,使系統(tǒng)啟動時加載bonding模塊驅(qū)動
alias bond0 bonding
option bond0 miimon=100 mode=1
說明:
1).miimon=100 用來進(jìn)行鏈路監(jiān)測的。即每100ms監(jiān)測一次鏈路狀態(tài)。bonding只監(jiān)測主機(jī)與交換機(jī)之間鏈路。如果交換機(jī)出去的鏈路出問題而本身沒有問題,那么bonding認(rèn)為鏈路沒有問題而繼續(xù)使用。
2).mode=1 表示提供冗余功能。除此之外還可以為0、2、3,共四種模式。0表示負(fù)載均衡

4.在/etc/rc.d/rc.local文件中加入如下語句,使得系統(tǒng)啟動自動運(yùn)行

ifenslave bond0 eth0 eth1
route add -net 192.168.1.254 netmask 255.255.255.0 bond0 #如有需要才加該路由

5.檢測、驗(yàn)證配置

首先執(zhí)行命令裝載bonding模塊:modprobe bonding
重啟網(wǎng)絡(luò)服務(wù),并確認(rèn)bond0正確啟動:service network restart
確認(rèn)設(shè)備已經(jīng)正確加載:less /proc/net/bonding/bond0
至此,bond 的設(shè)置就基本結(jié)束了
刪除bond
ifconfig bond0 down
rmmod bonding

網(wǎng)絡(luò)組配置

網(wǎng)絡(luò)組:是將多個網(wǎng)卡聚合在一起方法,從而實(shí)現(xiàn)冗錯和提高吞吐量,網(wǎng)絡(luò)組不同于舊版中bonding 技術(shù),能提供更好的性能和擴(kuò)展性,網(wǎng)絡(luò)組由內(nèi)核驅(qū)動和teamd 守護(hù)進(jìn)程實(shí)現(xiàn).

1.創(chuàng)建網(wǎng)絡(luò)組接口

nmcli connection add type team con-name TEAMname ifname INTname [config JSON]
TEAMname 指定連接名,INname指定接口名,JSON指定runner方式,格式為:'{"runner":{"name":"METHOD"}}'
METHOD 可以是broadcast、roundrobin、activebackup、loadbalance、lacp
(1)創(chuàng)建網(wǎng)絡(luò)接口組team0
[root@centos7 ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"loadbalance"}}'
Connection 'team0' (e70483a1-2688-4eb2-9466-8e732360291d) successfully added.
(2)給網(wǎng)路組team0配置IP地址
[root@centos7 ~]# nmcli connection modify team0 ipv4.method manual ipv4.addresses 200.200.200.200/24 gw4 200.200.200.1

2 創(chuàng)建port接口(SLAVE)

既就是生成組TEAM組成員的配置文件,這個配置文件和網(wǎng)卡配置文件是相互獨(dú)立的。
nmcli connection add type team-slave con-name SLAVEname ifname INname master TEAMname
SLAVEname 指定連接名,INTname指定網(wǎng)絡(luò)接口名(相當(dāng)于指定要加入網(wǎng)絡(luò)組的網(wǎng)卡名),TEAMnmae指定所屬網(wǎng)絡(luò)組。
若連接名不指定,默認(rèn)為team-slave-IFACE
創(chuàng)建接口組
這里使用ens34、ens38兩塊網(wǎng)卡
[root@centos7 ~]# nmcli connection add con-name team0-ens34 type team-slave ifname ens34 master team0

Connection 'team0-ens34' (a481fb6d-bf61-413d-a2c7-289966bee1a7) successfully added.

[root@centos7 ~]# nmcli connection add con-name team0-ens38 type team-slave ifname ens38 master team0

Connection 'team0-ens38' (758d0eba-1625-46b2-b539-1d853a45be6b) successfully added.

3 啟用網(wǎng)絡(luò)組

啟用網(wǎng)絡(luò)組:nmcli connection up team0
啟用組成員:nmcli connection up SLAVEname
[root@centos7 ~]# nmcli connection up team0

Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/20)

[root@centos7 ~]# nmcli connection up team0-ens34

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/23)

[root@centos7 ~]# nmcli connection up team0-ens38

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/24)

4 查看網(wǎng)絡(luò)組狀態(tài)

teamdctl TEAMname state
[root@centos7 ~]# teamdctl team0 state

setup:
runner: loadbalance
ports:
ens34

link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens38
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0

5 網(wǎng)絡(luò)組配置文件

(1)MASTER配置文件
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0

DEVICE=team0
TEAM_CONFIG="{"runner":{"name":"loadbalance"}}"
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=team0
UUID=e70483a1-2688-4eb2-9466-8e732360291d
ONBOOT=yes
DEVICETYPE=Team
IPADDR=200.200.200.200
PREFIX=24
GATEWAY=200.200.200.1

(2)組成員(SLAVE)配置文件
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0-ens34

NAME=team0-ens34
UUID=a481fb6d-bf61-413d-a2c7-289966bee1a7
DEVICE=ens34
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort

6 刪除網(wǎng)絡(luò)組

(1)斷開連接
[root@centos7 ~]# nmcli connection down team0

Connection 'team0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

再次查看狀態(tài)
[root@centos7 ~]# teamdctl team0 state

Device "team0" does not exist

[root@centos7 ~]# nmcli connection show

NAME UUID TYPE DEVICE
ens33 be9d1f2f-20e0-4282-9cb5-0da4c8b0fc7c 802-3-ethernet ens33
virbr0 8b1532d4-d99b-4201-8163-44d733302230 bridge virbr0
team0 e70483a1-2688-4eb2-9466-8e732360291d team --
team0-ens34 a481fb6d-bf61-413d-a2c7-289966bee1a7 802-3-ethernet --
team0-ens38 758d0eba-1625-46b2-b539-1d853a45be6b 802-3-ethernet --

可以看到已經(jīng)關(guān)閉成功
(2)刪除TEAM組成員
[root@centos7 ~]# nmcli connection delete team0-ens34

Connection 'team0-ens34' (a481fb6d-bf61-413d-a2c7-289966bee1a7) successfully deleted.

[root@centos7 ~]# nmcli connection delete team0-ens38

Connection 'team0-ens38' (758d0eba-1625-46b2-b539-1d853a45be6b) successfully deleted.

(3)刪除TEAM組
[root@centos7 ~]# nmcli connection delete team0

Connection 'team0' (e70483a1-2688-4eb2-9466-8e732360291d) successfully deleted.
再次查看狀態(tài)
[root@centos7 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 be9d1f2f-20e0-4282-9cb5-0da4c8b0fc7c 802-3-ethernet ens33
virbr0 8b1532d4-d99b-4201-8163-44d733302230 bridge virbr0
已經(jīng)看不到team0 相關(guān)的內(nèi)容,說明刪除成功

同網(wǎng)卡多IP技術(shù)

不同的工作環(huán)境通常IP地址以及相關(guān)網(wǎng)絡(luò)屬性通常是不一樣的.如果我們每次都是手動去修改,那將是非常繁瑣的.所以我們?nèi)バ薷囊恍┚W(wǎng)絡(luò)配置讓網(wǎng)卡去自適應(yīng)工作環(huán)境.在linux系統(tǒng)上配置同一個網(wǎng)卡擁有多個IP的技術(shù)也就是為網(wǎng)卡添加多個子網(wǎng)卡,如eth0:0、eth1:1這種網(wǎng)絡(luò)接口,LINUX最多可以支持255個IP子網(wǎng)卡。
在linux系統(tǒng)上有兩種方式添加子網(wǎng)卡。一種是使用網(wǎng)絡(luò)配置命令,這種方式會立即生效,但不會永久生效,如果重啟則會立即丟失。如果想要永久生效則是另一種方式去修改網(wǎng)絡(luò)配置文件。配置子網(wǎng)卡命令前要卸載或者禁用NetworkManager服務(wù),因?yàn)楹蚇etworkManager有沖突。

使用命令添加子網(wǎng)卡:

使用ifconfig命令管理子網(wǎng)卡:
ifconfig device[label] [address] [up|down]
ifconfig eth0:0 192.168.1.100/24 up(添加并啟用eth0:0子網(wǎng)卡)
ifconfig eth0:0 down(禁用eth0:0子網(wǎng)卡)
使用ip命令管理子網(wǎng)卡:
ip addr add [address] device [label]
ip addr add 172.16.1.2/16 dev eth0(為eth0網(wǎng)卡添加一個IP)
ip addr add 172.16.1.1/16 dev eth0 label eth0:0(為eth0網(wǎng)卡添加一個IP并且指定label)
ip addr del 172.16.1.1/16 dev eth0 label eth0:0(刪除eth0上172.16.1.1/16這條IP)
ip addr flush dev eth0 label eth0:0(刷新)
把相關(guān)配置寫入文件
將上邊的命令ifconfig加入到rc.local中去(永久生效)

手動編寫ip的網(wǎng)卡配置文件

配置屬性 含義
ONBOOT 在系統(tǒng)引導(dǎo)時是否激活此設(shè)備
DEVICE 物理設(shè)備名字
TYPE 接口類型;常見有的Ethernet,Bridge
UUID 設(shè)備的惟一標(biāo)識
IPADDR 指明IP地址
NETMASK 子網(wǎng)掩碼
GATEWAY 默認(rèn)網(wǎng)關(guān)
DNS1 第一個DNS服務(wù)器指向
DNS2 第二個DNS服務(wù)器指向
USERCTL 普通用戶是否可控制此設(shè)備
PEERDNS 如果BOOTPROTO的值為“dhcp”,是否允許

所有網(wǎng)卡的配置文件都保存在/etc/sysconfig/network-scripts目錄中,一個網(wǎng)卡對應(yīng)一個配置文件
手工添加IP地址的
以下是網(wǎng)卡配置文件的部分信息說明,其他類似信息默認(rèn)即可:

配置屬性 含義
ONBOOT 在系統(tǒng)引導(dǎo)時是否激活此設(shè)備
DEVICE 物理設(shè)備名字
TYPE 接口類型;常見有的Ethernet,Bridge
UUID 設(shè)備的惟一標(biāo)識
IPADDR 指明IP地址
NETMASK 子網(wǎng)掩碼
GATEWAY 默認(rèn)網(wǎng)關(guān)
DNS1 第一個DNS服務(wù)器指向
DNS2 第二個DNS服務(wù)器指向
USERCTL 普通用戶是否可控制此設(shè)備
PEERDNS 如果BOOTPROTO的值為“dhcp”,是否允許

配置完成重啟網(wǎng)卡即可:service network restart

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容