웹사이트 검색

Linux 시스템의 이더넷 채널 본딩(NIC 팀 구성)


이더넷 채널 결합은 두 개 이상의 네트워크 인터페이스 카드(NIC)를 단일 가상 NIC 카드로 활성화합니다. 대역폭을 확보하고 NIC 카드의 중복성을 제공합니다. 이는 프로덕션 시스템에서 중복 링크, 내결함성 또는 로드 밸런싱 네트워크를 달성하는 좋은 방법입니다. 하나의 물리적 NIC다운되거나 연결이 분리되면 자동으로 리소스를 다른 NIC 카드로 이동합니다. 채널/NIC 결합은 커널의 드라이버 결합을 통해 작동합니다. 동일한 내용을 시연하기 위해 두 개의 NIC를 사용할 것입니다.

채널 결합 유형에는 거의 6가지 유형이 있습니다. 여기서는 대중적이고 널리 사용되는 두 가지 유형의 채널 본드만 검토하겠습니다.

  1. 0: 로드 밸런싱(라운드 로빈): 트래픽은 두 NIC 모두에서 순차적 또는 라운드 로빈 방식으로 전송됩니다. 이 모드는 로드 밸런싱 및 내결함성을 제공합니다.
  2. 1: 활성-백업: 특정 시점에 하나의 슬레이브 NIC만 활성화됩니다. 다른 인터페이스 카드는 활성 슬레이브 NIC에 오류가 발생한 경우에만 활성화됩니다.

이더넷 채널 결합 생성

두 개의 네트워크 이더넷 카드(예: eth1eth2)가 있으며 여기서 bond0은 결합 목적으로 생성됩니다. 아래 명령을 실행하려면 슈퍼유저 권한이 필요합니다.

로드 밸런싱(라운드 로빈)

eth1 구성

아래와 같이 구성 파일에서 매개변수 MASTER bond0eth1 인터페이스를 SLAVE로 언급하세요.

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yes
eth2 구성

여기에서도 매개변수 MASTER bond0eth2 인터페이스를 SLAVE로 지정합니다.

vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE="eth2"
TYPE="Ethernet"
ONBOOT="yes"
USERCTL=no
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
bond0 구성 생성

bond0을 생성하고 ifcfg-bond0이라는 "/etc/sysconfig/network-scripts/" 디렉터리에 채널 결합 인터페이스를 구성합니다.

다음은 샘플 채널 결합 구성 파일입니다.

vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=0 miimon=100"

참고: 위 구성에서는 결합 옵션 mode=0, 즉 Round-Robinmiimon=100을 선택했습니다. (폴링 간격 100ms).

"eth1" 및 "eth2MASTER로 실행되는 "bond0"을 보여주는 ifconfig 명령을 사용하여 생성된 인터페이스를 살펴보겠습니다. Strong>'은 SLAVES로 실행됩니다.

ifconfig
bond0     Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          inet addr:192.168.246.130  Bcast:192.168.246.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe57:618e/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:17374 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16060 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1231555 (1.1 MiB)  TX bytes:1622391 (1.5 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:16989 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8072 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1196931 (1.1 MiB)  TX bytes:819042 (799.8 KiB)
          Interrupt:19 Base address:0x2000

eth2      Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:385 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7989 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:34624 (33.8 KiB)  TX bytes:803583 (784.7 KiB)
          Interrupt:19 Base address:0x2080

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:480 (480.0 b)  TX bytes:480 (480.0 b)

네트워크 서비스를 다시 시작하고 인터페이스가 정상이어야 합니다.

service network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:                               [  OK  ]

채권의 상태를 확인하고 있습니다.

watch -n .1 cat /proc/net/bonding/bond0
샘플 출력

아래 출력에서는 본딩 모드부하 분산(RR)이고 eth1eth2 입니다. 등장하고 있습니다.

Every 0.1s: cat /proc/net/bonding/bond0                         Thu Sep 12 14:08:47 2013 

Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

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

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0

활성 백업 생성

이 시나리오에서 슬레이브 인터페이스는 동일하게 유지됩니다. 본드 인터페이스 ifcfg-bond0에는 '0' 대신 단 하나의 변경 사항만 있으며 아래와 같이 표시되는 '1'이 됩니다. .

vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=1 miimon=100"

네트워크 서비스를 다시 시작하고 본딩 상태를 확인하세요.

service network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:                               [  OK  ]

명령으로 결합 상태를 확인합니다.

watch -n .1 cat /proc/net/bonding/bond0
샘플 출력

본딩 모드가 내결함성(활성 백업)을 표시하고 슬레이브 인터페이스가 작동 중입니다.

Every 0.1s: cat /proc/n...  Thu Sep 12 14:40:37 2013

Ethernet Channel Bonding Driver: v3.6.0 (September 2
6, 2009)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0

참고: 슬레이브 인터페이스를 수동으로 다운하여 채널 본딩 작동을 확인하세요. 아래 명령을 참조하시기 바랍니다.

ifconfig eth1 down
ifconfig eth1 up

그게 다야!