- 이더채널 본딩 ( Ether Channel Bonding )
자원을 제공하는 서버, 정보를 제공하는 서버에는 필요하다.
정보 제공 서버 : DB 서버 , 인증서버 ( LDAP, NIS+)
자원 제공 서버 : NFS 서버 ( EX: NAS )
- 기능
1) 장애 극복 기능 ( Failover )
2) 부하 분산 기능 ( Load Balancing )
- 모드 종류
이더채널 본딩 모드 종류는 7가지가 존재한다. ( 몇가지만 알아보자 )
mode 0 : balance -rr ( Active-Active)
-> 두개의 포트를 사용하여 부하분산과 장애극복을 제공한다. 기본설정
-> 통신할때 두개의 포트 모두 사용한다.
mode 1 : active-backup ( Active-Standby)
-> 하나의 포트만을 사용하고 장애 발생시 대기중인 포트가 사용된다.
mode 4 : 802.3ad
-> L2 스위치를 필요로 하고 속도가 빠르다.
- 관련 용어
miimon
-> 링크 감시가 발생할때 밀리 초 단위로 감시한다. 보통 100 miimon = 0.1초 사용하지 않으려면 0을 준다
primary
-> mode 1 과같이 주 포트를 정해줘야할때 사용된다. primary 포트가 아닌 포트는 Standby 상태가 된다.
- 이더채널 설정
mode 0 ( Active - Active )
[시나리오]
서버 1 - 이더채널
서버 2 - 테스트용
통신확인
서버 1에서 하나의 포트 제거
통신확인 ( 하나의 포트가 망가져도 통신은 잘 될것이다. )
[사전 준비]
서버가 2개 필요하므로 간단하게 link clone을 만들어 확인한다.
서버 1에는 NIC 하나를 추가한다 (NAT)
[설정]
서버2
# vi /etc/hosts
192.168.17.150 linux150.example linux150 추가
# system-config-network-tui
IP -> 192.168.17.150
# service network restart
서버 1
본딩 설정
eth0 --- eth 1 --------> bond0 ( 192.168.17.100 )
( 작업 순서 )
/etc/modprobe.conf 설정
/etc/sysconfig/network-scripts/ifcfg-bond0 설정
/etc/sysconfig/network-scripts/ifcfg-eth0 설정
/etc/sysconfig/network-scripts/ifcfg-eth1 설정
1) /etc/modprobe.conf 설정
|
alias scsi_hostadapter mptbase alias scsi_hostadapter1 mptspi alias scsi_hostadapter2 ata_piix alias eth1 vmxnet alias bond0 bonding |
|
2) /etc/sysconfig/network-scripts/ifcfg-bond0 설정
-> 자동생성이 안되므로 eth0 파일을 복사해서 사용한다
# cd /etc/sysconfig/nework-scripts
# cp ifcfg-eth0 ifcfg-bond0
# vi bond0
|
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=bond0 BOOTPROTO=none BROADCAST=192.168.17.255 IPADDR=192.168.17.100 NETMASK=255.255.255.0 NETWORK=192.168.17.0 ONBOOT=yes USERCTL=no BONDING_OPTS="mode=0 miimon=100" |
|
-> mode=0 번으로 설정하고 miimon=100 : 0.1초
3)/etc/sysconfig/network-scripts/ifcfg-eth0 설정
# vi ifcfg-eth0
|
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth0 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes USERCTL=no |
|
-> MASTER는 bond0 SLAVE= yes 추가
4)/etc/sysconfig/network-scripts/ifcfg-eth1 설정
# vi ifcfg-eth1
|
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes USERCTL=no |
|
[정리]
# reboot
# ifconfig
|
bond0 Link encap:Ethernet HWaddr 00:0C:29:32:4A:62 inet addr:192.168.17.100 Bcast:192.168.17.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe32:4a62/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:43 errors:0 dropped:0 overruns:0 frame:0 TX packets:22 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4073 (3.9 KiB) TX bytes:2839 (2.7 KiB) eth0 Link encap:Ethernet HWaddr 00:0C:29:32:4A:62 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:22 errors:0 dropped:0 overruns:0 frame:0 TX packets:11 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2193 (2.1 KiB) TX bytes:1336 (1.3 KiB) Interrupt:75 Base address:0x2024 eth1 Link encap:Ethernet HWaddr 00:0C:29:32:4A:62 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:21 errors:0 dropped:0 overruns:0 frame:0 TX packets:11 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1880 (1.8 KiB) TX bytes:1503 (1.4 KiB) Interrupt:59 Base address:0x20a4 |
|
-> IP 정보는 bond0 에게만 있는것을 확인 할 수있다.
-> eth0 과 eth1의 MAC Address는 bond0의 MAC Address 와 같다는 것을 알 수있다.
# cat /proc/net/bonding/bond0
|
Ethernet Channel Bonding Driver: v3.4.0-2 (October 7, 2008) Bonding Mode: load balancing (round-robin) 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: 00:0c:29:32:4a:62 Slave Interface: eth1 MII Status: up Speed: Unknown Duplex: Unknown Link Failure Count: 0 Permanent HW addr: 00:0c:29:32:4a:6c |
|
[확인]
서버 2
# ping 192.168.17.100 /* 서버 1에 ping 신호 */
서버 1
eth0 포트 끊기
# ifconfig eth1 down
# cat /proc/net/bonding/bond
|
Ethernet Channel Bonding Driver: v3.4.0-2 (October 7, 2008) Bonding Mode: load balancing (round-robin) 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: 00:0c:29:32:4a:62 Slave Interface: eth1 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 1 Permanent HW addr: 00:0c:29:32:4a:6c |
|
서버 2
-> 서버 1의 eth1 이 고장나도 ping은 잘 가고있는것을 확인 할 수 있다.
mode 2 ( Active - Standby )
-> mode 0 에 이어서 할것이기 때문에 간단히 설정파일들을 바꿔 확인해보자.
[시나리오]
서버 1 - 이더채널
서버 2 - 테스트용
통신확인
서버 1에서 하나의 포트 제거
통신확인 ( 하나의 포트가 망가져도 통신은 잘 될것이다. )
( 작업 순서 )
/etc/modprobe.conf 설정
/etc/sysconfig/network-scripts/ifcfg-bond1 설정
/etc/sysconfig/network-scripts/ifcfg-eth0 설정
/etc/sysconfig/network-scripts/ifcfg-eth1 설정
1) vi /etc/modprobe.conf 설정
# vi /etc/modprobe.conf
|
alias scsi_hostadapter mptbase alias scsi_hostadapter1 mptspi alias scsi_hostadapter2 ata_piix alias eth1 vmxnet alias bond1 bonding |
|
2) /etc/sysconfig/network-scripts/ifcfg-bond1 설정
# cd /etc/sysconfig/network-scripts/
# vi ifcfg-bond0 /* 위에서 했던 파일 고쳐줍니다 */
/* mode 0 실습 안했으면 # cp ifcfg-eth0 ifcfg-bond1 */
|
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=bond1 BOOTPROTO=none BROADCAST=192.168.17.255 IPADDR=192.168.17.100 NETMASK=255.255.255.0 NETWORK=192.168.17.0 ONBOOT=yes USERCTL=no BONDING_OPTS="mode=1 miimon=100 primary=eth0" |
|
-> primary 주 포트설정
# mv ifcgf-bond0 ifcgf-bond1 /* 처음에 bond0을 바꿧으면 이름변경 */
3) /etc/sysconfig/network-scripts/ifcfg-eth0 설정
4) /etc/sysconfig/network-scripts/ifcfg-eth1 설정
vi 편집기로 열어서 MASTER=bond0 을 MASTER=bond1 로 바꿔줍니다.
|
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth0 BOOTPROTO=none ONBOOT=yes MASTER=bond1 SLAVE=yes USERCTL=no # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 BOOTPROTO=none ONBOOT=yes MASTER=bond1 SLAVE=yes USERCTL=no |
|
(정리)
# reboot
# ifconfig
|
bond1 Link encap:Ethernet HWaddr 00:0C:29:32:4A:62 inet addr:192.168.17.100 Bcast:192.168.17.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe32:4a62/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:40 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:360 (360.0 b) TX bytes:6004 (5.8 KiB) eth0 Link encap:Ethernet HWaddr 00:0C:29:32:4A:62 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:40 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:6004 (5.8 KiB) Interrupt:75 Base address:0x2024 eth1 Link encap:Ethernet HWaddr 00:0C:29:32:4A:62 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:360 (360.0 b) TX bytes:0 (0.0 b) Interrupt:59 Base address:0x20a4 |
|
# cat /proc/net/bonding/bond1
|
Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008) Bonding Mode: fault-tolerance (active-backup) Primary Slave: eth2 (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: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:32:4a:62 Slave Interface: eth1 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:32:4a:6c |
|
(확인)
mode 0 번의 확인과 같은 방법으로 확인해본다.
서버 2
# ping 192.168.17.100
서버 1
# ifconfig eth0 down
# cat /porc/net/bonding/bond1
|
Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008) Bonding Mode: fault-tolerance (active-backup) Primary Slave: eth2 (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: 100 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 00:0c:29:32:4a:62 Slave Interface: eth1 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:32:4a:6c |
|
-> eth0 이 down 되니 자동으로 eth1 이 연결된다.
-> # ifconfig eth0 up 으로 eth0을 다시 연결하면 eth0으로 연결하고 eth1은 다시 Standby 된다.
서버 2
-> 서버 1의 eth0이 down 됬지만 ping은 멈추지 않고 잘 된다.
- 복구
'Linux > Linux Network' 카테고리의 다른 글
WEB Server ( Apache ) (0) | 2017.09.11 |
---|---|
DNS_2 ( Master DNS / Slave DNS ) (0) | 2017.09.11 |
DNS_1 ( 도메인 부하분산, 도메인 위임 ) (0) | 2017.09.08 |
네트워크 설정 (0) | 2017.09.07 |
xinetd 방식과 standalone 방식 (0) | 2017.09.06 |