본문 바로가기
Linux/Linux

Linux) Bonding 구성으로 네트워크 이중화 - RHEL, CentOS

by LILO 2021. 5. 5.
반응형

Bonding 구성 - LAB

 

우선 본딩 작업을 하기 위해 최소 2개 이상의 NIC가 필요하기 때문에 VirtualBox에서 추가합니다.

추후에 다른 VM과의 통신까지 생각해서 Host-Only(호스트 전용 어댑터)를 선택해서 2개를 잡아줍니다.

 

 

추가된 네트워크 인터페이스 2개를 확인합니다.

 

# ip a

 

 

 

본딩 작업을 하기 전에 미리 계획을 그려 놓는 것이 좋습니다.. Bonding 잡을 인터페이스 이름과 Slave로 잡을 NIC들을 정확하게 숙지 후 작업을 해야됩니다.

해당 LAB에서는 Slave 인터페이스로 enp0s8, enp0s9로 잡고 Bonding 인터페이스 이름은 bond0으로 잡았습니다.

 

 

먼저, Slave로 지정할 네트워크 인터페이스들을 설정해주는 작업을 합니다.

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

TYPE=Ethernet
BOOTPROTO=none
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes
MASTER=bond0
SLAVE=yes


# vi /etc/sysconfig/network-scripts/ifcfg-enp0s9

TYPE=Ethernet
BOOTPROTO=none
NAME=enp0s9
DEVICE=enp0s9
ONBOOT=yes
MASTER=bond0
SLAVE=yes

 

 

위와 같이 설정 후 저장합니다. 이 설정은 "enp0s8"과 "enp0s9" 네트워크 인터페이스를 "bond0"라는 본딩의 SLAVE로 사용한다는 설정입니다.

 

 

 

다음은 본딩 인터페이스의 설정 파일을 작성합니다.

 

# vi /etc/sysconfig/network-scripts/ifcfg-bond0

TYPE=Ethernet
BOOTPROTO=none
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.56.100
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
BONDING_OPTS="mode=1 miimon=100"

#systemctl restart network

 

 

위와 같이 설정합니다. 거의 전반적인 내용은 앞 글에서 IP 설정할 때 봤던 부분이랑 비슷합니다. 하지만 이 인터페이스는 본딩이기 때문에 본딩의 옵션을 기입해야 합니다.

해당 설정 값은 Active-Backup 구성이고 모니터링 주기는 100ms이라는 설정입니다.

 

 

다 끝나면 본딩 정상 확인을 위해 IP 세팅이 제대로 되었는지 확인합니다.

 

 

본딩은 추가로 아까 설정한 옵션인 Mode와 모니터링 주기 및 SLAVE들의 연결 상태를 확인해야 합니다.

 

# cat /proc/net/bonding/bond0

 

 

SLAVE들이 정상적으로 잡혀있고 UP 상태인 것을 확인할 수 있습니다. 본딩 역시 UP 상태와 Mode 1인 것을 볼 수 있습니다. 속도는 1G를 지원합니다. 

 

 

여기서 끝이 아닙니다. 본딩을 구성했으면 정상적으로 잘 동작하는지 Failover 테스트도 해야됩니다. 원래는 물리적으로 끊어야되지만 VirtualBox의 어댑터를 잠시 제거해주는 작업을 하고 결과를 확인합니다.

 

# watch -d -n 1 "cat /proc/net/bonding/bond0"
# ping -t 192.168.56.100

 

깔끔하게 Failover가 되었습니다. 한 쪽 화면에서는 계속 핑을 때려줬었고 가용성 역시 보장이 되는 상태였습니다.

primary 옵션을 넣지 않으면 Failover된 네트워크 인터페이스를 가지고 계속 운영합니다. 이로 인해 얻는 장점은 다시 돌아가는 Failback 작업이 없기 때문에 가용성 면에서 봤을 때 우수하다는 점입니다.

 

 

 

Bonding - Auto Failback 참고

 

 

본딩 옵션에 많은 설정들이 있지만 그 중 꽤나 흥미있는 옵션 중 하나인  Auto failback 유무입니다. 

Auto Failback: 장애 복구시 원래 Active였던 인터페이스로 돌아옴

 

가끔  Failover시 넘어간 인터페이스로 쭉 Active를 사용하여 운영할 수 있는지 확인 요청이 오는 경우가 있습니다.

원래 Primary 옵션을 적용할 경우 "primary_reselect" 옵션이 0으로 지정이 되어 원래 Active 였던 인터페이스로 돌아가는 Auto Failback 작업을 장애 복구되는 시점에 수행합니다.

이 설정을 하고 싶을 시에는 "primary-enp0s8   primary_reselect=2" 이 2개의 옵션이 필요합니다.  이 설정은 나는 처음 "Active를 enp0s8로 잡고 Failover 시에는 enp0s9를 계속 사용할 것이다."를 설정한 것입니다.

 

만약 Auto Failback을 가져가려면 primary_reselect 변수의 값을 0 or 1을 기입해야 됩니다. 0은 기존의 Active 인터페이스로 돌아가는 설정이고 1은 Failover에서 넘어온 것과 장애 복구된 기존의 Acitve 인터페이스를 비교해서 더 성능이 좋은 쪽으로 붙여주는 설정입니다.

 

 

반응형