CentOS 6.3 리눅스 이더넷 채널 본딩하기
네 중규모나 조금 큰 규모의 리눅스서버를 구성할때 가장 많이 쓴다는 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 배경화면보고 영감을 받아 색을 좀 쨍 하게 했습니다 ㅎ
리눅스도 써보면 은근 매력적인 운영체제 입니다 많이 이용하세요.