로그인
Sign in
IPMP: IP Multipathing
Filed under: networks — by Kwanghoon Jhin at 15:31 +0900
네트워크에 대한 안정성은 이제, 데이터 만큼이나 중요해 졌습니다. 사실, 시스템에서 운영되어 그 안정성이 절하되는 부분은 없다고 할 수 있습니다. 모든 시스템은 이제 안정성 확장성 고가용성에 초점이 맞추어 졌다고 볼 수 있습니다.

본 주제에서 다루고자 하는 것은 IPMP입니다.
IPMP 란 IP MultiPathing의 약자입니다. IPMP는 하나의 서비스 IP를 복수개의 물리적 NIC(Network Interface Card)을 통하여 어떤 하나의 NIC 이나 HUB 등 네트워크 장비에 의한 장애요인을 스스로 극복하고 지속적인 네트워크 서비스를 유지함을 목적으로 합니다.

이는 부하분산(Load Blancing)은 포함하지 않으며, 오로지 장애극복(Fail Over)만 고려합니다. 만약 부하분산까지 포함한다면, 비용이 지불해야 하는 상용 패키지 구입을 권장합니다. Sun에서 사용되는 것으로는 훌륭한 Trunking 이라는 소프트웨어가 있습니다. 물론 Trunking 에서 권장하는 하드웨어 환경을 만족해야 합니다.

IPMP를 위한 선제 조건

10/100 이상을 지원하는 복수개 이상의 NIC
Solaris 8 U2 10/00 (2000년 10월 버전 이상)
전제 가정: 본 예제는 ce0 ce1이라는 NIC을 사용함을 가정합니다.

IPMP 설정:

각 NIC 마다 고유의 Mac Address를 부여해야 합니다.
이는 두가지 방법이 있으며, 첫번째 방법은 시스템의 재시작(reboot)이 필요합니다.


# cd /usr/platform/`uname -i`/sbin/ ; ./eeprom local-mac-address?=true
- or -
OK> setenv local-mac-address? true


시스템 재시작 이후 대상의 NIC을 사용가능하게 만듭니다. plumb 한다라고도 합니다. 미리 plumb 되어 있으면 이 부분을 건너뜁니다.


# ifconfig ce0 plumb
# ifconfig ce1 plumb


앞서 설정해 둔 각기 별개의 Mac Address를 확인하기 위해서, root 권한으로 아래의 명령을 입력하고 결과를 확인합니다.


# ifconfig -a
-
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 4
inet 192.9.200.10 netmask ffffff00 broadcast 10.1.8.255
ether 0:3:ba:1:ec:cf
ce0: flags=1000843 mtu 1500 index 6
inet 0.0.0.0 netmask ff000000
ether 8:0:20:e3:3a:de
ce1: flags=1000843 mtu 1500 index 7
inet 0.0.0.0 netmask ff000000
ether 8:0:20:e3:3a:df


위와 같이 상호 Mac Address가 다르게 설정되어 있으면 설정이 제대로 된 것입니다. 이제 ce0와 ce1을 위한 hostname 파일을 작성합니다. 그 내용에 IPMP 설정의 핵심이 있습니다.


# touch /etc/hostname.ce0
# touch /etc/hostname.ce1


그 리고 위에서 만든 파일 두개를 각각 vi 편집기로 열어서 아래의 내용을 기입합니다. 만약 이미 존재하는 hostname 파일이 있으면, 새로운 설정을 위해 아래와 같이 변경해 주시기 바랍니다. 해당되는 NIC 이외의 hostname.* 파일은 조작하실 필요는 없습니다.


/etc/hostname.ce0
::::::::::::::
host-int0 netmask + broadcast + group test deprecated
-failover up addif host-ori netmask + broadcast + failover up
-
/etc/hostname.ce1
::::::::::::::
host-int1 netmask + broadcast + group test deprecated
-failover standby up


위 의 문법은 ce0 가 master로 작동되며, ce1은 standby 형식이입니다. 위 파일에서 host-init0 는 ce0의 이름이 되고, host-init1은 ce1의 이름으로 설정됩니다. test는 두 NIC을 하나의 그룹으로 묶에 사용하는 이름이며, host-ori는 서로 주고 받을(take over) IP를 말합니다. 이 4개는 모두 개인적인 취향에 따라 입력이 가능합니다. 특정 이름에 연결되어 있는 특정 기능은 없습니다. 아래의 설정을 따라가면 더욱 이해가 빠르게 될 것입니다.

/etc/hosts 에 각 NIC을 위한 설정과 주고 받을(take over) IP를 설정합니다.


/etc/hosts
::::::::::::::
#
# Internet host table
#
127.0.0.1 localhost
192.9.200.10 test test.solarisinsider.com loghost
192.9.200.199 host-ori
192.9.200.220 host-int0
192.9.200.221 host-int1


host-ori가 실재 서비스되는 IP 주소이며, 본 문서에서 다루고자 하는 IPMP의 대상이 되는 IP 주소입니다. 이는 가상적으로 존재하며 실재 NIC에는 부여되지 않습니다. host-init0 는 ce0, host-init1 은 ce1 에 각각 부여된 IP 주소와 이름입니다.

위의 설정이 완료되었으면, 아래의 명령을 따라 입력하여 실재 서비스에 들어갑니다.


# ifconfig ce0 `cat /etc/hostname.ce0` up
# ifconfig ce1 `cat /etc/hostname.ce1` up


그리고 ifconfig 로 확인합니다.


# ifconfig -a
-
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 4
inet 192.9.200.10 netmask ffffff00 broadcast 10.1.8.255
ether 0:3:ba:1:ec:cf
ce0: flags=9040843 mtu 1500 index 6
inet 192.9.200.220 netmask ffffff00 broadcast 192.9.200.255
groupname test
ether 8:0:20:e3:3a:de
ce0:1: flags=1000843 mtu 1500 index 6
inet 192.9.200.199 netmask ffffff00 broadcast 192.9.200.255
ce1: flags=69040843 mtu 1500 index 7
inet 192.9.200.221 netmask ffffff00 broadcast 192.9.200.255
groupname test
ether 8:0:20:e3:3a:df


위 에서 보면, host-ori의 IP 주소는 가상의 NIC으로 ce0에 할당되어 있음을 할 수 있습니다. 실재 서비스는 ce0를 통하여 이루어지며 ce0의 장애가 감지될 때까지는 ce1은 유휴 상태로 대기(standby)를 유지합니다. 이렇게 되면 설정을 끝나게 됩니다.

장애시연

만약 ce0의 네트워크 라인에 문제가 생겼을 경우 나타나는 메시지와 자동 변화되는 설정을 살펴보겠습니다.


# tail -f /var/adm/messages
-
Nov 30 16:03:50 test genunix: [ID 408822 kern.info] NOTICE: ce0: no fault external to device; service available
Nov 30 16:03:50 test genunix: [ID 611667 kern.info] NOTICE: ce0: xcvr addr:0×01 - link up 100 Mbps full duplex
Nov 30 16:03:52 test genunix: [ID 408822 kern.info] NOTICE: ce1: no fault external to device; service available
Nov 30 16:03:52 test genunix: [ID 611667 kern.info] NOTICE: ce1: xcvr addr:0×01 - link up 100 Mbps full duplex
Nov 30 16:18:44 test genunix: [ID 408789 kern.warning] WARNING: ce0: fault detected external to device; service degraded
Nov 30 16:18:44 test genunix: [ID 451854 kern.warning] WARNING: ce0: xcvr addr:0×01 - link down
Nov 30 16:18:52 test in.mpathd[38]: [ID 594170 daemon.error] NIC failure detected on ce0 of group test
Nov 30 16:18:52 test in.mpathd[38]: [ID 832587 daemon.error] Successfully failed over from NIC ce0 to NIC ce1
Nov 30 16:20:50 test genunix: [ID 408789 kern.notice] NOTICE: ce0: fault cleared external to device; service available
Nov 30 16:20:50 test genunix: [ID 451854 kern.notice] NOTICE: ce0: xcvr addr:0×01 - link up 100 Mbps full duplex
Nov 30 16:21:06 test in.mpathd[38]: [ID 299542 daemon.error] NIC repair detected on ce0 of group test
Nov 30 16:21:06 tset in.mpathd[38]: [ID 620804 daemon.error] Successfully failed back to NIC ce0


16:03:50 ~ 16:03:52 까지는 ce0 ce1 을 up 했을 때 나타나는 메시지입니다.
정상적으로 NIC이 사용가능하다는 이야기를 담고 있습니다.

16:18:44 에 ce0의 네트워크의 문제를 감지하고,
16:18:52 에 in.mpathd 가 작동을 시작한다. 이에 걸리는 시간은 단, 8초 뿐입니다.
16:18:52 같은 시각에 in.pathd가 ce0의 서비스를 ce1을 성공적으로 넘깁니다. (take over)

이를 보면, ipmp의 장애 감지와 복구는 아주 신뢰할 만큼 짧은 시간에 내에 이루어진다는 것을 알 수 있습니다.

그 이후 16:20:50 부터 기록된 메시지는 ce0 의 네트워크가 복구가 되어 다시 ce1의 서비스를 ce0로 이전하는 내용입니다. 여기에서 알 수 있는 것은 ce0 는 언제나 master가 되며 ce0의 장애가 극복되는 즉시 사용된다는 것입니다. 그리고 ce0의 장애극복은 ce1의 즉각적인 유휴상태로 전환됨도 알 수 있습니다. 이 또한 in.mpathd에서 자동적으로 이루어집니다.

ifconfig 를 통해 본 NIC 상태의 변화 정상 상태


lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 4
inet 192.9.200.10 netmask ffffff00 broadcast 10.1.8.255
ether 0:3:ba:1:ec:cf
ce0: flags=9040843 mtu 1500 index 6
inet 192.9.200.220 netmask ffffff00 broadcast 192.9.200.255
groupname test
ether 8:0:20:e3:3a:de
ce0:1: flags=1000843 mtu 1500 index 6
inet 192.9.200.199 netmask ffffff00 broadcast 192.9.200.255
ce1: flags=69040843 mtu 1500 index 7
inet 192.9.200.221 netmask ffffff00 broadcast 192.9.200.255
groupname test
ether 8:0:20:e3:3a:df


ce0 장애 상태 , ce1 으로 남겨 받은 상태 (take over)


lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 4
inet 192.9.200.10 netmask ffffff00 broadcast 10.1.8.255
ether 0:3:ba:1:ec:cf
ce0: flags=19040843 mtu 1500 index 6
inet 192.9.200.220 netmask ffffff00 broadcast 192.9.200.255
groupname test
ether 8:0:20:e3:3a:de
ce1: flags=29040843 mtu 1500 index 7
inet 192.9.200.221 netmask ffffff00 broadcast 192.9.200.255
groupname test
ether 8:0:20:e3:3a:df
ce1:1: flags=21000843 mtu 1500 index 7
inet 192.9.200.199 netmask ffffff00 broadcast 192.9.200.255


ce0:1 이 사라지고 ce1:1 이 나타남을 알 수 있습니다.
ce0와 ce1은 host-ori에 설정되어 있는 IP 주소, 192.9.200.199를 가상의 NIC으로 잡아 서로 주고 받는 형식입니다.

저 의 개인적인 경험으로는 master NIC의 신호 차단이 있고 약 5~10초 후에 slave가 작동되는 것을 목격했습니다. 그리고 복합적인 장애-예를 들자면, master, slave 모두 신호 단절과 복원을 반복하는 일정한 패턴 없이 반복되는-에서도 훌륭하게 작동됨을 보았습니다. 비용을 들이지 않고 Network Fail Over를 구성하는 데에는 이보다 좋은 것은 없으리라 생각합니다.

참고 자료
————-
http://www.sun.com/solutions/blueprints/1102/806-7230.html
http://www.samag.com/documents/s=1441/sam0111i/0111i.htm
http://docs.sun.com/
http://www.eng.auburn.edu/~doug/howtos/multipathing.html

조회 수 :
1575
추천 수 :
10 / 0
등록일 :
2009.06.04
15:26:39 (*.236.3.225)
엮인글 :
http://bestceok.com/xe/index.php?mid=sun_faq&document_srl=3039&act=trackback&key=8f6
게시글 주소 :
http://bestceok.com/xe/index.php?mid=sun_faq&document_srl=3039
List of Articles
번호 제목 글쓴이 조회 수 추천 수 비추천 수 날짜
171 Fault Manager 사용 하록 727     2012-06-25
fmadm faulty fmdump -v -u 89f881e4-91c7-cc7d-d498-b67ad9d0ce35 psrinfo로 CPU 상태 체크  
170 Fast Data Access MMU Miss 에러시... [1] 하록 2174     2012-02-24
ok boot cdrom -s ERROR: Fast Data Access MMU Miss debugger entered. ------------------------------------- 시스템과 맞는 OS인지 확인... 최신버전의 OS는 구버전 시스템에서는 읽을 수 없음  
169 디스크 부하율 체크 하록 828     2011-09-19
iostat -xcnCXTdz  
168 netapp 명령어 하록 2838     2010-08-19
Pocket guide for netapp commands This post contains the list of commands that will be most used and will come handy when managing or monitoring or troubleshooting a Netapp filer. •sysconfig -a : shows hardware configuration with more verbose...  
167 Duplex 변경 방법... 하록 1127     2010-05-11
아래에... ForceSpeedDuplex=7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7; 을 변경... 7,7을 4,4 등으로 바꿔주면 됨... 인스턴스가 0부터 15까지 있는데.. e1000g0 ~ e1000g15까지임.. 순서대로 4로 바꿔주면 됨... 나머지 것들도 마찬가지... vi /kernel/drv/e1000g.co...  
166 Duplex 변경 방법... [3] 하록 1591     2010-07-05
------------------------------------------------------------------------------------------------------------ Network ndd parameter setting Date : 28 -Oct -2008 By : dssong ---------------------------------------------------------------------...  
165 모니터 해상도 변경 하록 1123     2009-08-25
1. VGA 카드 종류 확인 # prtconf -F /SUNW,ffb@2,0:ffb0 2. vga 카드 관련 명령어 확인 # ls -l /usr/sbin/*config lrwxrwxrwx 1 root root 9 2002년 8월 29일 /usr/sbin/GFXconfig -> pgxconfig* -r-sr-xr-x 1 root bin 61508 1999년 12월 9일 /usr/sbin/afb...  
164 Crash Dump 분석 방법 하록 2894     2009-08-25
Process 의 비정상적인 종료시 Core Dump 파일이 생기고, 시스템의 비정상적인 종료시 Crash Dump 파일이 생기죠? 하지만 대부분의 운영자및엔지니어가 비정상적인 종료에 대한 원인을 파악하기 위해 Dump 파일을 분석하려하지만 생각같이 쉽지많은 않다는것을...  
163 ftpaccess 파일 설명 하록 2654     2009-08-06
ftpaccess(5) ftpaccess(5) 이름 ftpaccess - ftpd 설정 file 설명 ftpaccess file은 ftpd(1) 의 운영을 설정하는데 사용한다. 접근 방법 설정 autogroup <groupname> <class> [<class> ...] Anonymous user가 특정 <class>의 member일때, ftp server는 <group...  
162 미러링 스크립트... 하록 797     2009-07-09
#---------------------------------------------------------------- banner Config-BACKUP~ #cp /etc/vfstab /etc/vfstab.org ls /etc/vfstab* #cp /etc/system /etc/system.org ls /etc/system* #cp /etc/hosts /etc/hosts.org #cp /etc/path_to_inst /etc/...  
161 disksuite로 OS mirroring 되어있는데 복구하는 방법 하록 1349     2009-06-05
Q. SunFire 4800에서 D240장비의 36GB HDD 2개가 mirroring 구성이 되어있습니다. metastat로 확인해보면 c0t0d0 은 정상인데 c0t1d0은 disk가 fail이 난 것 같더군요... format으로 확인해보면 c0t1d0은 <unknown disk> 라고 표시됩니다. c0t1d0 disk를 mirro...  
160 DiskSuite 설치 및 OS 미러구성 하록 1288     2009-06-05
< Solstice Disksuite 4.2.1 를 Solaris 8 에 인스톨하기 > 1. Solaris 8 의 2/2 CD 를 넣습니다. # cd /cdrom/sol_8_1000_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/Packages 2. SDS (Solstice Disksuite ) 패캐지 인스톨하기 # pkgadd -d . 3. P...  
159 solaris 10, software 미러링... 하록 1233     2009-06-05
첫뻔째 과제. 하드웨어적으로 RAID1 이 구성된 시스템을 허물고 software 적으로 동일한 움직임을 구현하는것. -> HDD0 , HDD1 이 동시에 읽고 쓰기가 이루어져 양 디스크가 완벽하게 동일한 구조로 작동. -> 한쪽 디스크의 손상시 다른 한쪽으로 완벽하게 가...  
» IPMP: IP Multipathing 설정방법 하록 1575 10   2009-06-04
IPMP: IP Multipathing Filed under: networks — by Kwanghoon Jhin at 15:31 +0900 네트워크에 대한 안정성은 이제, 데이터 만큼이나 중요해 졌습니다. 사실, 시스템에서 운영되어 그 안정성이 절하되는 부분은 없다고 할 수 있습니다. 모든 시스템은 이제 안...  
157 단말기 폭 초과 메세지 발생시... 하록 1029     2009-05-28
stty columns 160  
156 StorEdge 체크 명령어 하록 1720     2009-03-09
usage: sccli [options] device [command] Valid options: -d disk, --disk=cXtYdZ select LVD single-bus JBOD enclosure containing specified disk -h, --help, --usage display valid commands -l, --list display a list of local StorEdge 3000 devices ...  
155 PROXY 서버 SQUID 설치 하록 991     2008-11-14
프록시 서버는 네트워크속도가 느린 환경에서 보다 빠른 인터넷을 사용하기 위해 서버에 캐시서버를 만들어 자주가는 사이트를 저장하여 접속할때 속도를 빠르게 하기위해 쓰인다. 또한 클라이언트의 접속통제 등의 네트워크보안을 유지할때도 쓰인다. 1) 다운...  
154 Network Interface Device Name [1] 하록 2678     2008-11-14
Network Interface Device dnet DEC 21040/21140 Ethernet, DEC 21142/21143 Fast Ethernet, SMC9332BDT Fast Ethernet, Cogent EM110TX Fast Ethernet, Cogent EM440 Fast Ethernet e1000g Intel(R) PRO/1000 Server Adapter elx 3C590, 3C595, 3C5×9, 3C5×9B...  
153 System Time 오작동 시... 하록 1343     2008-09-19
우선 이문제는 ScApp 5.18.X, 5.19.X와 5.20.X 일때, SC의 uptime이 575일 이상이면 발생 할 수 있는 문제입니다. 두가지 조건이 모두 만족해야하는거고 조치 방법은 5.20.7이상으로 ScApp를 upgrade하는 것입니다. 또한 4800뿐 아니라 다음의 서버군에 해당하...  
152 소스로 APM 설치 하록 965     2008-05-27
소스로 APM 설치 1. 소스 받기 아파치 : http://httpd.apache.org/download.cgi Mysql : wget http://dev.mysql.com/get/Downloads/MySQL-4.0/mysql-standard-4.0.23-pc-linux-i686.tar.gz/from/http://mysql.new21.com/ (4.1버전도 있지만 제로 보드와 연동 ...