Tips/Linux

CentOS 6.3 리눅스 이더넷 채널 본딩하기

NEORAY 2012. 12. 27. 21:59

 


네 중규모나 조금 큰 규모의 리눅스서버를 구성할때 가장 많이 쓴다는 CentOS 입니다

RHEL의 짝퉁판이죠 좋게 말하면 클론이구요 (합법적인 짝퉁 ^^)

조금 큰규모 서버 구성하실땐 꼭 CentOS를 쓰시더라구요

다른 배포판들도 요즘 많이 괜찮아졌는데 서버는 Redhat이라는게 이제 딱 박혔나봐요

(또 서버용으로 많이 쓰시는 건 Debian이 있죠)


그래도 레드햇계열은 방대한량의 데이터가 나와있어 참고할 것이 많다는게 젤 큰 것이려나요 

솔찍히 안정적이기도 하죠 ^^


여기서 본딩을 해볼텐데요(티밍=본딩=이더채널=트렁킹 다 같습니다 OS마다 좀 다르게 부르는 것일 뿐)

제가 지금 구성해 놓은 서버에서는 이걸 할 수 가 없어서


오픈소스이면서 리눅스를 구동하는데 있어서는 VMware에 절대 뒤지지 않는 Virtualbox로 설명하겠습니다


별로 보잘것 없는 사양의 VM을 생성하고 랜카드 4개를 박았습니다

4개는 되어야 본딩 할 맛이 안 나겠습니까 ㅎㅎ


실제 서버 운용하시는 분들은 이렇게 gnome 같은 xwindow는 설치를 잘 안하실 텐데요

여기서는 편의를 위해 설치 했습니다


ifconfig를 해보면 랜카드 4개가 잘 인식되어 있군요


본딩을 시작하기전에 꼭 깔려 있어야 하는게 있습니다 바로 ethtool인데요

아마 기본적으로 설치가 되어 있을 텐데 설치가 안되어 있다면 설치해 주시구요


touch 명령어로 빈 파일들을 생성해 주셔야 합니다

생성해 주셔야 할 파일들은

음 미리 다 생성해 놓고 하셔도 되니 다 적겠습니다

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

#touch /etc/sysconfig/network-scripts/ifcfg-eth0

#touch /etc/sysconfig/network-scripts/ifcfg-eth1

#touch /etc/modprobe.d/bonding.conf

요런 놈들을 만들어 주시면 되겠습니다 ifcfg-eth 는 본딩할 만큼 만들어 주시면 되겠습니다


저는 지금 센토스 깔고 바로하는거라 ifcfg-bond0이랑 bonding.conf 빼고는 전부 만들어져 있는데요 

이럴경우 그냥 진행 하시면 됩니다


네 vi 나 vim으로 ifcfg-bond0 파일을 열어 다음코드를 입력합니다

DEVICE=bond0

IPADDR=...  /* 자신의 아이피를 넣으면됩니다 */ 

NETMASK=○...  /* 넷마스크 */

GATEWAY=...○ /* 게이트웨이 */

DNS1=...○  /* DNS */

DNS2=...○ /* 보조 DNS */

USERCTL=no

BOOTPROTO=none

ONBOOT=yes

NM_CONTROLLED=no


/* 고정 아이피로 안하시려면 네트워크부분 싹 지우시고 BOOTPROTO를 dhcp로 해주시면됩니다

스샷처럼요 */

USERCTL=no 옵션을 넣어 줘도 좋겠죠



원래 안에 있던 내용은 싹다 날려 버립니다

DEVICE=eth0

USERCTL=no

ONBOOT=yes

MASTER=bond0

SLAVE=yes

BOOTPROTO=none

NM_CONTROLLED=no

그리고 위에 코드를 입력합니다



네 저렇게 vi 에디터로 입력해도 되지만 너무 많아서 입력하기 귀찮더군요

텍스트에디터로 열어서 ctrl + c , ctrl + v 해줍니다

그래도 디바이스 명은 고쳐주세요



저걸 다 고쳐 주셨다면

bonding.conf를 생성합니다

(아까 생성하셨다면 패스하세요)


그리고 이것 또한 vi 에디터로 열어서 수정해줍니다

alias bond0 bonding

options bond0 mode=6 miimon=100

빨간 글씨 부분은 마음에 드는 것으로 수정하셔야 하는데 0번 ~ 6번중에 선택하시면 됩니다


0. balance-rr : (Round Robin) Load Balancing, 송신할 패킷마다 사용하는 NIC을 바꾼다.


1. active-backup: Failover, bond내에서 한개의 Slave만 사용

포트문제가 생길경우 다른 Slave가 Enable


2. balance-xor : Load Balancing, 소스와 목적지의 MAC을 XOR 연산을 통해 사용할 NIC를 결정하여 분배


3. Broadcast : Fault-Tolerance, 모든 Slave으로 데이터전송(failover), 일반적으로는 잘 사용안함.


4. 802.3ad : Dynamic Link Aggregation, IEEE 802.3ad 프로토콜을 이용하여 동적 Aggregation 작성

대역폭 상승, 부하 분산, Failover 지원


5. balance-tlb(TLB) : 적응형 송신 부하 분산, 송신패킷 로드밸런싱, 송신시 부하가 낮은 NIC이용

수신은 특정 NIC이용


6. balance-alb(ALB) : 적응형 부하 분산, 송수신패킷 로드밸런싱, 송수신시 부하가 낮은 NIC를 사용



아 그리고 그 뒤에 나온 miimon에 대해서 설명을 드리자면

mii는 네트워크 인터페이스가 살아있는지 확인하는데 쓰는데요

mii링크를 얼마나 자주 감시 할지를 설정합니다 (단위 0.001초)

기본값은 0 이고 0으로 설정시 failover는 비활성화 됩니다

그리고 이제 거의 다 되었습니다 네트워크 파일을 수정해야 되는데요

/etc/sysconfig/network 를 vi에디터로 열어

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=자기호스트이름

GATEWAYDEV=bond0

들을 추가해 줍니다(있는건 내버려 두세요)



modprobe bonding  명령으로 본딩 설정을 적용시키고


 

service network restart  네트워크 서비스를 재시작 하시면 됩니다


본딩이 완료 되었습니다 달라진게 보이시나요?

bond0 인터페이스가 Master로 있고

나머지 NIC 들이 전부 노예로ㅋ 있습니다


cat /proc/net/bonding/bond0

으로 본딩 내용과 상태를 체크하실수 있습니다

4기가비트의 대역폭을 가지게 되었네요 ㅎ 


제 블로그도 잘 들어와 집니다 ㅎ

(근데 가상머신에서는 본딩하면 심각하게 느려집니다 ㅠ.ㅠ)

블로그 기본스킨이 다좋은데 색이 좀 어중간해서 CentOS 배경화면보고 영감을 받아 색을 좀 쨍 하게 했습니다 ㅎ


리눅스도 써보면 은근 매력적인 운영체제 입니다 많이 이용하세요.

반응형