# Centos에서 본딩구성하기

<table border="1" id="bkmrk-perplexity%EC%97%90%EC%84%9C-%EC%83%9D%EC%84%B1%ED%95%9C-ai%EC%9D%B4" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](http://igoni.kr/uploads/images/gallery/2026-01/scaled-1680-/quOimage.png)](http://igoni.kr/uploads/images/gallery/2026-01/quOimage.png)

</td></tr><tr><td class="align-right">perplexity에서 생성한 AI이미지</td></tr></tbody></table>

### 시작하는말

안녕하세요, 고니입니다.  
기존에 작성했던 컨텐츠들 업데이트를 하면서 문서의 리팩토링(Refactoring)을 진행해보려고 합니다.

### Bonding 소개

여려개의 NIC를 논리적인 NIC로 묶어서 대역폭을 확장하거나 Active/Standby 형태로 가용성을 보장하기 위해 사용하는 기술이고  
가상화환경에 올라간 VM이나 Public Cloud환경에서는 대부분 사용할 필요는 없으나, Bare-metal환경에서는 아직 유용하게 활용되고 있는 방법입니다.

1. #### Bonding 구성
    
    <table border="1" id="bkmrk-%EB%B3%B8%EB%94%A9%EB%AA%A8%EB%93%9C-%EC%84%A4-%EB%AA%85-%EB%B9%84%EA%B3%A0-0-%28balan" style="border-collapse: collapse; width: 100%; border-width: 1px; border-spacing: 0px; height: 412.725px;"><thead><tr style="height: 29.875px;"><td class="align-center" style="width: 16.3829%; height: 29.875px;">**모드**</td><td class="align-center" style="width: 83.5913%; height: 29.875px;">**방 식**</td></tr></thead><tbody><tr style="height: 86.65px;"><td style="width: 16.3829%; height: 86.65px;">0 </td><td style="width: 83.5913%; height: 86.65px;">
    - Balance-Round robin
    - 설정된 모든 NIC가 활성화가 되어 NIC별로 순차적으로 데이터를 전송하는 방식
    - 장점 : 모든 NIC의 대역폭을 합산하기 때문에 높은 대역폭을 유지,
    - 단점 : NIC의 link상태를 고려하는 방식은 없기 때문에 특정 NIC의 링크가 끊어진 경우 패킷손실 가능성이 존재합니다
    
    </td></tr><tr style="height: 69.85px;"><td style="width: 16.3829%; height: 69.85px;">1</td><td style="width: 83.5913%; height: 69.85px;">
    - Active-Standby
    - 하나의 NIC가 활성화, 나머지는 Standby로 구성되어 데이터를 전송하는 방식
    - 장점 : 높은 고가용성을 보장
    - 단점 : 하나의 NIC만 활성화가 되기 때문에 네트워크 대역폭이 증가하진 않습니다.
    
    </td></tr><tr style="height: 86.65px;"><td style="width: 16.3829%; height: 86.65px;">2</td><td style="width: 83.5913%; height: 86.65px;">
    - balance-xor
    - 기본적인 데이터 전송은 Bonding mode 0과 비슷하지만 xor연산을 이용해 특정 해시 알고리즘을 사용하여 링크에 분산시키는 방식
    - bonding mode 0과 동일한 장/단점을 지니고 있습니다.
    
    </td></tr><tr style="height: 69.85px;"><td style="width: 16.3829%; height: 69.85px;">3</td><td style="width: 83.5913%; height: 69.85px;">
    - broadcast
    - 모든 트래픽을 모든 NIC로 전송하는 방식입니다.
    - 장점 : 특정 NIC가 Down되어도 활성화된 NIC에서 데이터 전송을 할 수 있기 때문에 높은 고가용성 보장
    - 단점 : 동일한 데이터의 중복전송이 이루어지기 때문에 높은 네트워크 비용이 발생할 수 있습니다.
    
    </td></tr><tr style="height: 69.85px;"><td style="width: 16.3829%; height: 69.85px;">4</td><td style="width: 83.5913%; height: 69.85px;">
    - 802.3ad, LACP(Link Aggregation Control Protocol)를 사용하여 NIC를 묶고, 트래픽을 분산합니다.
    - 장점 : 높은 고가용성을 제공하여, 링크상태를 감지하여 조절합니다.
    - 단점 : LACP를 지원하는 Switch장비가 필요합니다. (Switch장비에서 논리적으로 Group으로 구성이 필요합니다)
    
    </td></tr></tbody></table>

### Bonding 구성하기  


<table border="1" id="bkmrk-bonding-mode-1%28activ" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 100%;"></col></colgroup><tbody><tr><td><div drawio-diagram="8633"><img src="http://igoni.kr/uploads/images/drawio/2024-11/drawing-3-1731178421.png" alt=""/></div>

</td></tr><tr><td>- Bonding Mode 1(Active / Standby)로 구성
- Active NIC : eth0, Standby NIC : eth1, Bond NIC : bond0

</td></tr></tbody></table>

1. 커널에 boding module 인식 확인  
    ```bash
    # 본딩정보 커널 인식
    $> modprobe bonding 
    
    # 본딩정보 확인
    $ lsmod  | grep bond
    bonding               152979  0
    ```
2. eth0에 본딩 선언  
    ```bash
    $> vi /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    BOOTPROTO=none
    ```
3. eth1에 본딩 선언  
    ```bash
    $> vi /etc/sysconfig/network-scripts/ifcfg-eth1
    DEVICE=eth1
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    BOOTPROTO=none
    ```
4. 본딩 NIC 설정  
    ```bash
    $> vi /etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    BOOTPROTO=static
    ONBOOT=yes
    IPV6INIT=no
    IPADDR=192.168.10.221
    NETMASK=255.255.255.0
    BONDING_OPTS="mode=1 miimon=100" #mode값을 원하는 값으로 변경하면 됨.
    ```
5. 네트워크 서비스 재시작  
    ```bash
    $> systemctl restart network (Centos7 이상 버전인 경우 사용)
    $> /etc/init.d/network restart (Centos 6이하 버전인 경우에만 사용)
    ```
6. 본딩구성정보 확인  
    ```bash
    $> cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.1.2 (January 20, 2007)
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth0
    MII Status: up
    MII Polling Interval (ms): 80
    Up Delay (ms): 0
    Down Delay (ms): 0
    Slave Interface: eth0
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:XX:XX:XX:XX:c2
    Slave Interface: eth1
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:XX:XX:XX:XX:c4
    ```

### *Reference*

- *[https://access.redhat.com/documentation/ko-kr/red\_hat\_enterprise\_linux/6/html/deployment\_guide/s2-networkscripts-interfaces-chan](https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/6/html/deployment_guide/s2-networkscripts-interfaces-chan)*