-
LINUX 본딩(Bonding) 네트워크 이중화 설정하는 방법System of Infra/Linux System 2022. 8. 11. 01:51728x90반응형
LINUX 본딩(Bonding) 네트워크 이중화 설정하는 방법
[root@localhost ~]# ip addr | grep -i en 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
▶ 리눅스 서버에서 네트워크 인터페이스 ens33과 ens34번을 통해서 Active/Stanby 형태로 네트워크 이중화 구성을 하도록 하겠습니다.
[root@localhost ~]# systemctl status NetworkManager | grep -i active Active: active (running) since 목 2022-08-11 04:49:59 KST; 3min 55s ago
▶ 네트워크 이중화 Bonding 구성을 하기 전에 NetworkManger가 활성화되어 있다면 잠시 기능을 비활성화합니다.
[root@localhost ~]# systemctl stop NetworkManager [root@localhost ~]# systemctl disable NetworkManager Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service. Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service. Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
▶ systemctl stop NetworkManager를 통해서 NetworkManager를 중지하고 disable 합니다.
[root@localhost ~]# systemctl status NetworkManager | grep -i active Active: inactive (dead) since 목 2022-08-11 04:54:32 KST; 51s ago
▶ Network Manager가 비활성화된 것을 확인할 수 있습니다.
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ls -al | grep -i en -rw-r--r--. 1 root root 279 8월 11 04:48 ifcfg-ens33 -rw-r--r--. 1 root root 279 8월 11 04:48 ifcfg-ens34
▶ /etc/sysconfig/network-scripts 디렉터리에서 인터페이스 ens33과 ens34를 통해서 이중화 구성을 하도록 하겠습니다.
만약 네트워크 인터페이스 NIC 카드를 추가했다면 재부팅 후에 인터페이스 이름이 자동으로 생성되지 않기 때문에 이름을 만들어 주도록 합니다.[root@localhost network-scripts]# vi ifcfg-bond0 DEVICE=bond0 NAME=bond0 TYPE=Bond IPADDR=192.168.111.10 NETMASK=255.255.255.0 GATEWAY=192.168.111.2 ONBOOT=yes BOOTPROTO=none BONDING_OPTS="mode=1 miimon=100"
▶ 네트워크 이중화 구성을 위해서 vi 편집기를 통해 ifcfg-bond0에 해당 내용을 추가하도록 합니다.
★ Bonding Mode 설명
0(Round Robin)
- bonding 인터페이스에 묶인 포트(SLAVE)에 순차적으로 한 번씩 사용하여 데이터 전송
1(Active-Backup)
- bonding 인터페이스에 묶인 포트(SLAVE) 중 한 포트씩 우선 사용하는데 장애가 발생하면 다른 포트 사용
2(Balance-XOR)
- XOR 연산하여 MAC기반으로 포트를 정해서 데이터 전송
3(Broadcast)
- bonding 인터페이스에 묶인 포트(SLAVE)에 모두 데이터 전송
4(802.3ad(LACP))
- EEE 802.3ad 프로토콜에 따라 포트를 선정하여 데이터 전송
5(Balance-TLB)
- 송신 패킷 로드밸런싱, 송신 시 부하가 낮은 포트(SLAVE)를 이용하여 데이터 전송
6(Balance-ALB)
- 송수신 패킷 로드밸런싱, 송수신시 부하가 낮은 포트(SLAVE)를 이용하여 데이터 전송
★ Bonding 파라미터 설정 설명
ONBOOT=yes
- 부팅 시 디바이스 활성화
NM_CONTROLLED=no
- network manager 활성화 안 함
BOOTRPTO=none
- 디바이스 정보를 "Static", "dhcp"로 적용 여부
USERCTL=no
- 일반 유저가 해당 디바이스를 컨트롤하지 못함
★ LAN Card staus 설정 설명
million
- 랜카드가 정상적으로 작동을 하는지에 대한 여부를 체크하는 옵션(default:0)
- 링크 감시 여부로 100ms로 설정[root@localhost network-scripts]# vi ifcfg-ens33 UUID=a4705391-3a29-4205-b630-ec80673cea55 TYPE=Ethernet BOOTPROTO=none NAME=ens33 DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes
▶ /etc/sysconfig/network-scripts의 ifcfg-ens33에 해당 내용을 추가합니다. MASTER=bond0 이면서 SLAVE=yes 적용합니다.
[root@localhost network-scripts]# vi ifcfg-ens34 UUID=73e00217-fa62-420d-8800-652b0b53e72c TYPE=Ethernet BOOTPROTO=none NAME=ens34 DEVICE=ens34 ONBOOT=yes MASTER=bond0 SLAVE=yes
▶ /etc/sysconfig/network-scripts의 ifcfg-ens34에 해당 내용을 추가합니다. MASTER=bond0 이면서 SLAVE=yes 적용합니다.
[root@localhost network-scripts]# vi /etc/modprobe.d/bonding.conf alias bond0 bonding options bond0 mode=1 miimon=100
▶ /modprobe.d에 bonding.conf 파일을 생성하여 alias 별칭으로 bond0 bonding이라고 가칭과 함께 options 항목을 설정합니다.
[root@localhost network-scripts]# modprobe bond0 [root@localhost network-scripts]# lsmod | grep -i bonding bonding 152979 0
▶ modprobe bond0 명령어를 수행하여. conf 파일을 적용 후 lsmod 명령어를 통해서 확인합니다.
[root@localhost network-scripts]# systemctl start NetworkManager [root@localhost network-scripts]# systemctl start network [root@localhost network-scripts]# systemctl status network ● network.service - LSB: Bring up/down networking Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) Active: active (exited) since 목 2022-08-11 04:50:01 KST; 16min ago Docs: man:systemd-sysv-generator(8) Tasks: 0 8월 11 04:50:00 localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking... 8월 11 04:50:01 localhost.localdomain NET[1167]: /etc/sysconfig/network-scripts/ifup-post : updated /etc/resolv.conf 8월 11 04:50:01 localhost.localdomain network[962]: loopback 인터페이스 활성화중 입니다: [ OK ] 8월 11 04:50:01 localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.
▶ NetworkManger를 활성화하고 network 인터페이스도 start 해주도록 합니다.
[root@localhost network-scripts]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: ens33 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:d8:49:c2 Slave queue ID: 0 Slave Interface: ens34 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:d8:49:cc Slave queue ID: 0
▶ /proc/net/bonding/bond0 파일을 보게 되면 현재 Bonding의 구성은 Active/Stanby 모드로 되어 있고 Primary가 en33, Slaver가 ens33,34로 구성이 되어 있는 것을 확인할 수 있으면 해당 내용은 네트워크 링크 상태의 여부에 따라 변경이 될 수 있습니다.
[root@localhost network-scripts]# ip a | grep -i en 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 2: ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000 3: ens34: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc pfifo_fast master bond0 state DOWN group default qlen 1000
▶ ens33과 ens34 두 개의 adapter에서 ens34의 상태를 Down 시켜보도록 하겠습니다.
[root@localhost network-scripts]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: ens33 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:d8:49:c2 Slave queue ID: 0 Slave Interface: ens34 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 1 Permanent HW addr: 00:0c:29:d8:49:cc Slave queue ID: 0
▶ ens34 Slave Interface의 상태가 Down이 된 것을 확인할 수 있습니다.
[root@localhost network-scripts]# ethtool ens33 | grep -i detect Link detected: yes [root@localhost network-scripts]# ethtool ens34 | grep -i detect Link detected: no [root@localhost ~]# ping 192.168.111.2 PING 192.168.111.2 (192.168.111.2) 56(84) bytes of data. 64 bytes from 192.168.111.2: icmp_seq=1 ttl=128 time=38.5 ms 64 bytes from 192.168.111.2: icmp_seq=2 ttl=128 time=0.436 ms 64 bytes from 192.168.111.2: icmp_seq=3 ttl=128 time=0.378 ms 64 bytes from 192.168.111.2: icmp_seq=4 ttl=128 time=0.439 ms 64 bytes from 192.168.111.2: icmp_seq=5 ttl=128 time=0.302 ms
▶ ethtool 명령어를 보게 되면 Link detected 상태가 ens33의 경우는 yes ens34의 경우는 no인 상태를 확인할 수 있고 한쪽 어댑터의 링크가 down인 상태에서도 ping 명령어를 통해서 G/W에 테스트를 했을 때 패킷이 빠지지 않고 정상적인 통신을 하고 있는 것을 확인할 수 있습니다.
[root@localhost network-scripts]# ip a | grep -i en 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 2: ens33: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc pfifo_fast master bond0 state DOWN group default qlen 1000 3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
▶ 원복 후 반대로 ens33의 링크를 Down 해보도록 하겠습니다. 기본적으로 시스템 가용성을 보장하기 위해 양쪽 어댑터의 테스트를 진행합니다.
[root@localhost network-scripts]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: ens34 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 1 Permanent HW addr: 00:0c:29:d8:49:c2 Slave queue ID: 0 Slave Interface: ens34 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 00:0c:29:d8:49:cc Slave queue ID: 0
▶ Primary 어댑터가 ens33에서 ens34로 변경이 되었고 Slaver Interface 상태에서 ens33의 경우 MII Status 상태가 Down으로 변경되었습니다.
[root@localhost network-scripts]# ethtool ens33 | grep -i detect Link detected: no [root@localhost network-scripts]# ethtool ens34 | grep -i detect Link detected: yes [root@localhost ~]# ping 192.168.111.2 PING 192.168.111.2 (192.168.111.2) 56(84) bytes of data. 64 bytes from 192.168.111.2: icmp_seq=1 ttl=128 time=0.493 ms 64 bytes from 192.168.111.2: icmp_seq=2 ttl=128 time=0.258 ms ^C --- 192.168.111.2 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.258/0.375/0.493/0.119 ms
▶ 현재는 ens33의 상태가 down이면서 ens34의 상태가 up으로 마찬가지로 한쪽 인터페이스의 상태가 Down 상태에서도 ping 체크를 통해서 정상 패킷 통신이 되는 것을 확인할 수 있습니다.
[root@localhost network-scripts]# systemctl enable network network.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig network on
▶ 마지막으로 재부팅을 하기 전에 network enable을 통해 재부팅 후에도 데몬이 자동으로 기동 될 수 있도록 설정합니다.
반응형2020.06.02 - [System of Infra/UNIX] - IBM AIX 이더채널(Etherchannel) 구성
2022.08.12 - [System of Infra/WINDOW] - WINDOW 티밍(Teamming) 네트워크 이중화 설정하는 방법
PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.
포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.
728x90반응형'System of Infra > Linux System' 카테고리의 다른 글
LINUX Virbr0 어댑터 삭제하는 방법 (6) 2023.02.16 LINUX 특정 프로세스 CPU 점유율 확인하는 방법 (13) 2022.12.29 LINUX Hostname 변경하는 방법 (6) 2022.08.09 LINUX DNS Primary IP -> Secondary IP 변경하는 방법 (4) 2022.08.04 LINUX HBA FC Adapter(Emulex) 성능 분석 테스트 방법 (5) 2022.08.04