You cannot see this page without javascript.

▒ Doly의 CentOS7 강좌18 6. CentOS 네트워크 4-네트워크 본딩(bonding)
 
 
#################################################
    작성자 : 정우영
    작성일 : 2014.09.17
    대상 OS : CentOS7 x86_64
    완성될 서적 : Doly의 센트OS(CentOS)7 구축 관리 실무 (2015년 3월)
 
 본 강좌를 기반으로 서적을 집필합니다. 연재강좌가 마무리되고 몇달 후면 서적이 나오겠죠? CentOS7은 서적도 없지만 강좌도 많이 부족하네요. 리눅스 서버를 10년 넘게 구축하고 관리하고 컨설팅하면서 꼭 필요한 부분과 알아야 할 부분들을 꼼꼼히 체크하면서 강좌를 써보려합니다. 강좌중 오탈자가 있거나 설명이 부족하고 잘못된 경우 doly골뱅이superuser.co.kr으로 메일한통 부탁드립니다. 강좌가 수정되면 더 많은 분들께 도움이 될것이라 생각하고 강좌를 기반으로 집필될 서적또한 완성도가 높아지지 않을까 생각합니다.
#################################################
 
 
6. CentOS 네트워크
 
6.2. 네트워크 설정
 
6.2.3 네트워크 bonding 설정
리눅스는 여러 인터페이스를 묶어 하나의 본딩(bonding)된 채널(channel)으로 만들 수 있다. 이는 1G 네트워크 인터페이스 4개를 묶어 4G의 대역폭을 확보할 수 있고, 묶여진 네트워크 인터페이스, 케이블, 스위치등의 장애에 대비할 수 있다. 네트워크 본딩은 이더넷 본딩(Ethernet bonding), 포트 트렁킹(port trunking), 채널 티밍(channel teaming), NIC 티밍(teaming), 링크 통합(link aggregation)등의 용어로 다양한 네트워크 장비 및 운영체제에서 제공한다. CentOS 7부터는 네트워크 티밍(Network teaming)이라는 기존의 본딩과 다른 기능이 추가 되었다. 티밍에서는 여러 기능을 사용자가 동적으로 설정할 수 있고 오버헤더를 조금더 줄였다. 본 서적에서는 본딩만을 다루도록 한다. 티밍의 경우 CentOS 7에서 처음 소개되는 것인만큼 안정화를 기대하기 힘들고 범용적인 기술이 아니기 때문에 학습하여 설정하여도 다른 사람이 컨트롤하기에는 어려움이 있을 것이다. 
본딩의 이점은 앞에서 설명한 2가지이다. 실무에서는 대역폭을 확장하기 위해서이기 보다는 장애 대비용으로 많이 사용된다. 다음 구성을 보자.
 
Switch (Active)  Switch (Standby)
         
                  Server
 
위 네트워크 구성을 보자. 현업에서 사용하는 네트워크 구성은 아주 복잡하지만 그중에서 네트워크 스위치 이중화에 대한 그림을 그렸다. 네트워크 스위치, 회선, 포트등의 장애를 대비하여 위와 같이 이중화 시키게 된다. 위 환경에서 CentOS에서는 본딩 설정을 하게되고 본딩의 여러 모드 중에서 active-backup(mode :1)을 사용하여 본딩을 구성한다. 만약 Active Switch와 연결된 네트워크 인터페이스가 eth0이고, Standby Switch와 연결된 네트워크 인터페이스가 eth1이라면 eth0을 primary로 지정해야 원활하게 통신이 될것이다. 이 부분은 설정하면서 다루게 될것이다. 
 
 
1. 본딩 모드(bonding mode)
본딩 모드는 본딩으로 묶요질 여러 slave 인터페이스들을 효율적으로 묶기위한 여러 가지 방법들이라고 보면 된다. 여러 상황에 따라 효율적인 방법을 선택하겠지만 일반적으로 Round-robin 모드와 Active backup 모드를 사용하며 네트워크 스위치가 802.3ad를 제공하고 스위치를 컨트롤 가능한 경우 802.3ad를 사용한다.
 

Mode

Mode(문자)

방법

특징

0

balance-rr

Round-robin

기본값

1

active-backup

Active backup

빈번히 사용됨

2

balance-xor

XOR

해시 방식

3

broadcast

Broadcast

 

4

802.3ad

802.3ad

스위치 802.3ad 요구

5

balance-tlb

Adaptive transmit load balancing

 

6

balance-alb

Adaptive load balancing

 

 
<자세한 설명은 좀더 조사해서 서적에서 다루도록 하겠다.>
 
2. Link 모니터링 방법
본딩은 2개 이상의 인터페이스를 묶기 때문에 항상 묶여진 slave 인터페이스를 감시해야 한다. slave인터페이스를 감시하는 방법은 2가지가 있다. 기본값은 MII(Media Independent Interface)이며 기본값을 쓰기를 권장한다. 
<자세한 설명은 좀더 조사해서 서적에서 다루도록 하겠다.>
 
 
 
6.2.3.1. GUI환경에서 본딩 설정
이미 설정된 네트워크 디바이스 설정 삭제
먼저 본딩에서 슬레이브(slave)로 사용하여 묶을 네트워크 디바이스가 다른 용도로 사용되거나 통신을 위해 설정되었다면 본딩 구성후에 문제가 될 수 있다. 다음과 같이 nmcli 명령으로 확인하고 연결된 것이 있는지 확인한다.
 
7~] #  nmcli connection
이름   UUID                                  유형            장치
eth1   5fd5da3c-bef7-417c-a184-48f10f2792d2  802-3-ethernet  eth1
eth0   8bac19dd-a177-49e2-9f30-38ec13c5d624  802-3-ethernet  eth0
 
만약 위와 같이 eth0, eth1에 대한 설정이 있다면, 다음과 같이 삭제한다.
 
7~] #  nmcli connection delete eth0
7~] #  nmcli connection delete eth1
 
 
프로그램 > 시스템도구 > 설정 (네트워크 선택)
또는 콘솔창에서 control-center를 입력한다.
 
~] # control-center
 
"네트워크“를 선택한다.
또는 바탕화면우측 상단에 네트워크 아이콘을 선택하고 마우스 오른쪽 버튼을 클릭하여 메뉴가 나타나면 아래 그림과 같이 “네트워크 설정”을 클릭한다.  
네트워크 설정창이 나타나면 우측 하단에 “+”모양을 클릭한다.
"본딩“을 선택한다. 
0001.png

 

 

 
위 그림에서 연결 이름을 bond0으로 한다. 고전적으로 본딩을 하게되면 bond0을 기본으로 하였다. 만약 2개의 본딩을 구성한다면 두 번째 이름은 bond1이 된다. 연결 이름은 자유롭게 입력할 수 있으니 내부, 외부 나눠져있다면 bond0-내부, bond1-외부 등의 이름을 사용하는 것도 좋은 방법이다. 연결 이름을 입력하고 추가(A) 버튼을 클릭하여 본딩에 사용될 네트워크 인터페이스를 추가한다. 
0002.png

 

 

 
연결 종류를 선택한다. 이더넷 또는 인피니밴드를 선택해야 한다. GUI 환경에서는 여러 항목이 나열되나 현재 본딩은 이더넷과 인피니밴드만 지원한다. 여기서는 이더넷을 선택한다.
0003.png

 

 

 
이더넷 추가 화면이 위와 같이 나타나며, 연결이름을 eth0 (이더넷 디바이스 장치명)으로 한다. 물론 이 또한 다른 이름으로 할 수 있으나 설정후에는 /etc/sysconfig/network-scripts/ifcfg-이름 형태로 저장되기 때문에 혼란스러울 수 있다. 장치명과 동일한 이름으로 연결 이름을 입력한다. 다음으로 장치의 MAC주소는 우측 “﹀” 표시를 눌러 eth0을 선택한다. 
다음으로 “일반”탭으로 하거 다음 그림과 같이 “사용 가능하면 자동으로 이 네트워크에 연결(A)"을 선택한다. 만약 선택하지 않으면 본딩은 활성화 되나 이더넷이 활성화 되지 않아 통신이 안되는 경우가 발생된다.
0004.png

 

 

 
위와 같이 eth0 장치에 대해 이더넷 및 일반 탭에서 설정을 마무리 한다.
 
동일한 방법으로 eth1에 대해 이더넷 설정을 한다.
0005.png

 

 

 
연결 이름(N) : eth1
장치 MAC 주소(D) : eth1 선택
일반 탭에서 :  사용 가능하면 자동으로 이 네트워크에 연결(A)
 
설정을 완료하였다면 다음과 같이 본딩 연결에 다음 그림과 같이 2개의 장치가 추가 되어 있을 것이다.
  
0006.png

 

0007.png

 

 

다음으로 모드(Mode)를 선택한다. 기본은 라운드 로빈(Round-robin)인데 오른쪽 그림과 같이 여러 모드중에 액티브 백업(Active backup)으로 설정한다. 액티브 백업으로 선택하면 위 그림처럼 기본(P) 인터페이스를 입력하는 창이 나타나는데 여기서 기본으로 지정할 즉 Active 스위치에 연결될 디바이스 이름(eth0, eth1등)을 입력한다. 연결 감시는 MII(Media Independent Interface)로 두고 감시 주기는 네트워크 상황에 따라 다르지만 100 또는 200으로 설정한다. 나머지는 기본으로 둔다.
 
0008.png

 

 

다음으로 일반 탭으로 가서
   사용 가능하면 자동으로 이 네트워크에 연결(A)
을 설정한다. 
 
 
0009.png

 

 

다음으로 “IPv4 설정” 탭으로 가서 방식을 “수동”으로 변경하고 IP주소, 넷마스크, 게이트웨이 정보를 입력하고 DNS 서버 정보까지 입력한다. 본딩은 대부분 고정 IP를 부여한다.
 
 
0010.png

 

 

본딩 설정이 완료되면 위 그림에서 처럼 “본딩(bond0)"가 추가 되고 우측에 보는 것과 같이 본딩된 슬레이브를 확인할 수 있다. 
 
만약 본딩 장치에 할당된 IP를 변경한다는 등의 설정변경 후에는 바로 적용이 되지 않을 것이다. 꼭 다음과 같이 NetworkManager를 재시작 해야 한다. 
 
7~] #  systemctl restart NetworkManager
 
만약 NetworkManager를 입력하기 어려우면 Ne까지만 입력하고 <TAB>키를 입력하면 자동완성이 된다. 
 
 
6.2.3.2. TUI환경에서 본딩 설정
GUI환경을 사용할 수 없는 경우 콘솔 환경에서 nmtui를 이용하여 본딩 설정을 한다. 본딩 설정전에 앞에서 언급한 본딩 모드에 대해 숙지를 하고 진행하는 것이 좋을 것이다.
<TUI 환경에서 본딩 설정은 조금 더 연구하여 서적에서 다루도록 하겠다.>
 
6.2.3.3. 설정파일을 작성을 통한 본딩 설정
CentOS 6은 NetworkManager에서 본딩 및 브릿지 설정을 일부 지원하지만 완벽하지 않았다. 그래서 CentOS 6 이하 버전에서 본딩 설정을 하기 위해 설정파일을 작성하여 본딩 설정을 해야 한다. 
CentOS 7버전에서는 아래에 소개되는 방법으로 본딩 설정을 하게되면 여러모로 문제가 될것이니 위에서 소개한 GUI, TUI 환경에서 설정방법을 꼭 이용해야 한다.
<설정파일을 통한 본딩 설정은 조금 더 연구하여 서적에서 다루도록 하겠다.>
 
 
6.2.3.4. 본딩 확인 및 모니터링
본딩 설정이 완료되면 새로운 장치가 추가될 것이다. 새로 추가된 장치는 다음 명령어를 통해 확인해 보자.
 
ifconfig 명령어를 통한 확인
 
~] # ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 192.168.0.222  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::5054:ff:fe7e:29b3  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:7e:29:b3  txqueuelen 0  (Ethernet)
        RX packets 4757  bytes 354728 (346.4 KiB)
        RX errors 0  dropped 2243  overruns 0  frame 0
        TX packets 295  bytes 32529 (31.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 52:54:00:7e:29:b3  txqueuelen 1000  (Ethernet)
        RX packets 2490  bytes 189020 (184.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 295  bytes 32529 (31.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 52:54:00:7e:29:b3  txqueuelen 1000  (Ethernet)
        RX packets 2267  bytes 165708 (161.8 KiB)
        RX errors 0  dropped 2243  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
위 내용에서와 같이 eth0와 eth1은 SLAVE를 확인할 수 있고, bond0 디바이스는 MASTER임을 확인할 수 있다. 아래와 같이 ip link 명령어의 결과 또한 비슷하다.
 
~] # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:7e:29:b3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:7e:29:b3 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT
    link/ether 52:54:00:7e:29:b3 brd ff:ff:ff:ff:ff:ff
 
 
 
본딩 모드 및 활성상태 모니터링
본딩 구성 후 설정된 모드와 활성화된 상태를 /proc 파일시스템에서 조회할 수 있다. 다음 결과를 유심히 보자.
 
~] # cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
 
Slave Interface: eth0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:7e:29:b3
Slave queue ID: 0
 
Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:c4:48:a4
Slave queue ID: 0
 
 
위 내용에서 다음 내용을 볼 수 있다.
Bonding Mode(본딩 모드) : fault-tolerance (active-backup)
Primary Slave(우선 선택되어야 할 Slave 인터페이스) : eth0
Currently Active Slave (현재 활성화된 Slave 인터페이스) : eth0
MII 모니터링 주기 : 100(0.1)
 
eth0 인터페이스에 연결이 끊어진 경우 결과를 확인해 보도록 하자.
 
~] # cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
 
Slave Interface: eth0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 52:54:00:7e:29:b3
Slave queue ID: 0
 
Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:c4:48:a4
Slave queue ID: 0
 
현재 활성화된 Slave는 eth1이고 eth0은 다운(down)되었다는 것을 확인할 수 있다. 만약 앞에서 Primary(우선 선택되어야 할) Slave 인터페이스를 지정하지 않은 경우라면 eth0이 복구 되더라도 eth1이 활성화된 Slave가 된다. Primary(우선 선택되어야 할) Slave 인터페이스를 eth0으로 설정하면 eth0 인터페이스가 복구되면 활성화된 Slave는 eth0으로 재 설정된다.
 
 
 이상으로 18번째 강좌를 마무리 하겠습니다. CentOS 7부터는 네트워크매니저의 완성도가 높아졌습니다. 이 네트워크매너저를 이용하면 본딩을 쉽게 설정할수 있습니다. CentOS 7부터 티밍이라는 개념이 나왔지만, 아직은 본딩을 추천합니다. 강좌에서 조금더 연구가 필요한 부분은 제외하였습니다. 금주도 바뿌네요^^ 2014년 9월 23일(화) 도리(Doly)였습니다.^^ 
 
#################################################
* 본 강좌는 언제든 갱신될 수 있으며, 원글은 www.linux.co.kr 강좌>리눅스>Doly의 연재강좌 에서 수정됩니다. 
* 본 강좌의 일부 또는 전체를 인용하실 경우, 반드시 출처를 밝혀 주시기 바랍니다.
 
* 수정이력 :
 2014.09.23(화): 최초작성
List of Articles
번호 제목 글쓴이 날짜 조회 수

XE Login