ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LINUX 본딩(Bonding) 네트워크 이중화 설정하는 방법
    System of Infra/Linux System 2022. 8. 11. 01:51
    반응형

    LINUX 로고이미지

    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) 구성

     

    IBM AIX 이더채널(Etherchannel) 구성

    IBM AIX 이더 채널(Etherchannel) 구성 오늘의 시나리오는 NIC네트워크 어댑터를 이중화 구성하여 사용하는 이더채널에 대해서 구성하도록 하겠습니다. 현재 테스트 서버는 가상화 환경으로 구성되

    pinetreeday.tistory.com

    2022.08.12 - [System of Infra/WINDOW] - WINDOW 티밍(Teamming) 네트워크 이중화 설정하는 방법

     

    WINDOW 티밍(Teamming) 네트워크 이중화 설정하는 방법

    WINDOW 티밍(Teamming) 네트워크 이중화 구성 ▶ Teamming 윈도우 네트워크 이중화 테스트 실습을 위해 vmware workstation을 통해서 네트워크 어댑터를 추가해주도록 하겠습니다.(물리적인 서버의 경우

    pinetreeday.tistory.com

     

    PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.

    포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.

    반응형

    댓글

Designed by Tistory.