리눅스 기초 다지기 - 24. bonding

 

본딩

: 여러 개의 NIC(Network Interface Card)를 논리적으로 하나로 묶는 기술

본딩 모드

로드 밸런싱 모드

  • Round-Robin (Mode 0)
  • : 첫 번째 사용 가능한 인터페이스에서 마지막 인터페이스로 패킷을 순차적으로 전송

내결함성 모드 (Mode 1)

  • Active-Backup
  • : 기본 인터페이스가 Down 시 백업 인터페이스 중 하나가 대체된다.

nmcli 본딩 구성

 

본딩 인터페이스 생성

[root@control ~]# nmcli con add con-name bond0 type bond ifname bond0 bond.options "mode=active-backup"

모니터링 간격을 0.001초로 설정

[root@control ~]# nmcli con add con-name bond0 type bond ifname bond0 bond.options "mode=active-backup, miimon=1000"

 

본드에 인터페이스 할당

[root@control ~]# nmcli con modify enp0s3 master bond0
[root@control ~]# nmcli con modify enp0s8 master bond0 

 

본드에 할당한 인터페이스 활성화

[root@control ~]# nmcli con up enp0s3
[root@control ~]# nmcli con up enp0s8

 

본드 IP 설정

[root@control ~]# nmcli con mod bond0 ipv4.address 172.17.0.100/24 ipv4.gateway 172.17.0.1 ipv4.dns 168.126.63.1 ipv4.method manual

 

본드 설정 확인

[root@control ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v5.14.0-284.11.1.el9_2.x86_64

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

Slave Interface: enp0s3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:5b:5f:e6
Slave queue ID: 0

Slave Interface: enp0s8
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:ef:77:b8
Slave queue ID: 0

본딩 삭제

# 본딩 삭제
[root@control ~]# nmcli con del bond0

# NIC 삭제
[root@control ~]# nmcli con del enp0s3
[root@control ~]# nmcli con del enp0s8

NIC 인터페이스가 구성되지 않은 상황에서 본딩 구성

# bond0 생성
[root@control ~]# nmcli connection add con-name bond0 type bond ifname bond0 bond.options "mode=active-backup, miimon=1000"
[root@control ~]# nmcli con mod bond0 ipv4.method manual ipv4.address 172.17.0.100/24 ipv4.gateway 172.17.0.1 ipv4.dns 168.126.63.1

# "bond0"에 nic 생성 및 할당
[root@control ~]# nmcli con add con-name enp0s3 type ethernet slave-type bond ifname enp0s3 master bond0
[root@control ~]# nmcli con add con-name enp0s8 type ethernet slave-type bond ifname enp0s8 master bond0

 

fail_over_mac

: bond의 MAC 주소를 어떻게 가져갈 지를 정하는 옵션이다.

 

  • 0 or none : (Default) bond 된 인터페이스와 모든 slave 인터페이스들의 MAC이 같은 값으로 설정되는 옵션이다. 일반적으로 가장 첫 번째 MAC 주소를 가진다.
  • 1 or active : active 상태인 slave 인터페이스의 MAC 주소를 가져간다.
  • 2 or follow : bond 된 인터페이스의 MAC 주소는 고정 값을 가지고(일반적으로 가장 첫 번째 MAC 주소) active 상태가 되는 인터페이스에 해당 MAC 주소를 부여하는 방식이다. failover가 발생할 때 새로 active 상태가 되는 인터페이스의 MAC 주소를 이전의 active 상태였던 인터페이스에 부여하고 bond된 인터페이스의 MAC을 받는다.

가상화(VirtualBox, VMware WorkStation) 서버에서는 fail_over_mac=1 옵션을 사용해야 본딩이 정상 동작한다.

[root@control ~]# nmcli con mod bond0 +bond.options fail_over_mac=1

 

 

primary

: 본딩의 기본 장치로 설정한다. primary 된 인터페이스는 failover 되어 다른 백업 인터페이스가 active 되더라도 다시 살아날 경우 primary로 설정된 인터페이스가 active 된다.

 

[root@control ~]# nmcli con mod bond0 +bond.options primary=enp0s3