¹«Á¤Áö, ¹«Á¦ÇÑ Web ¼­¹ö¸¦ ¸¸µéÀÚ

Linux Virtual Server Project

& M$-WLBS

by Byoungjoon Shin

1999-9-9

vslogo-100.jpg (2965 bytes)

¾È³çÇϽʴϱî? ½Åº´ÁØÀÔ´Ï´Ù.
¿äÁò ÀÎÅͳÝÀÇ ±âÇÏ ±Þ¼öÀûÀÎ Áõ°¡·®À¸·ÎÀÎÇØ ±âÁ¸ÀÇ Web¼­¹öÀÇ ¼º´ÉÀÌ »ç¿ëÀÚÀÇ ¿ä±¸¸¦ µû¶ó°¡Áö ¸øÇÏ´Â »óȲÀÌ ¹ß»ýÇÏ°í ÀÖ½À´Ï´Ù. Web¼­¹öÀÇ upgrade¸¦ »ý°¢ÇØ º¼ ¼ö°¡ ÀÖÁö¸¸, À̰͵µ °ð ºÎÇÏ°¡ ¸ðÀÚ¶ó°Ô µÉ °ÍÀ̸ç, upgrade °úÁ¤µµ »ó´çÈ÷ º¹ÀâÇÏ°í ºñ¿ëµµ ¸¸¸¸ÇÏÁö°¡ ¾Ê½À´Ï´Ù.

±âÁ¸ÀÇ ¹æ¹ýÀ¸·Î´Â Round-Robin DNS ³ª °í°¡ÀÇ IP ºÐ¹è±âÀåÄ¡µéµµ ÀÖÁö¸¸, À̶ÇÇÑ °¡°ÝÀÌ ¸¸¸¸ÇÏÁö°¡ ¾Ê½À´Ï´Ù.

±×·¯¸é, SW¸¸À» ÀÌ¿ëÇÑ ¹æ¹ýÀ¸·Î´Â ¾î¶²°ÍÀÌ ÀÖÀ»±î ã¾Æº¸¾Ò´õ´Ï, Á¦¸ñ°ú °°ÀÌ Linux °è¿­¿¡¼­´Â "Linux Virtual Server Project(http://proxy.iinchina.net/~wensong/ippfvs/)" °¡ ÀÖ°í, M$ÀÇ °è¿­¿¡¼­´Â WLBS°¡ ÀÖ´õ±º¿ä.

ÀÌ µÎ SW¸ðµÎ ¿ÜºÎ »ç¿ëÀÚ¿¡°Ô´Â ÇϳªÀÇ IP¸¸À» º¸¿©Áָ鼭, ³»ºÎÀûÀ¸·Î´Â n°³ÀÇ ¼­¹ö¸¦ µ¹¸®´Â ¼Ö·ç¼ÇÀÔ´Ï´Ù.
Áï, n°³ÀÇ ¼­¹ö¿¡ °°Àº web ¼­ºñ½º¸¦ ¿î¿µÇϸ鼭, ºÎÇÏ°¡ Áõ°¡ÇÏ°Ô µÇ¸é, ¼­¹ö¸¸ ´Ã·Á¼­ ¼º´ÉÀ» Çâ»ó½Ãų¼ö ÀÖ´Â ¹æ¹ýÀÔ´Ï´Ù. ¶ÇÇÑ, n°³ÀÇ ¼­¹ö°¡ µ¿½Ã¿¡ Á×Áö¸¸ ¾Ê´À´Ù¸é, ÇØ´ç ¼­ºñ½º(web)´Â Àý´ë ´Ù¿îµÇÁö¾Ê´Â ¹«Á¤Áö ½Ã½ºÅÛÀ» ¸¸µé¾î ÁÖ°Ô µË´Ï´Ù.

¿ì¼±, °³³äµµ¸¦ º¸¸é, LVSP(linux virtual server project)ÀÇ ±×¸²Àº ¾Æ·¡¿Í °°½À´Ï´Ù.

VirtualServer.gif (9149 bytes)

M$ÀÇ WLBS(Windows Load Balancing Server)´Â ¾Æ·¡¿Í °°½À´Ï´Ù.

wlbs2.gif (7153 bytes)

Àá½Ã µÎ ½Ã½ºÅÛÀ» ºñ±³ÇØ º¼±î¿ä?

Ç׸ñ LVPS WLBS
¿î¿µÈ¯°æ Linux/Unix °è¿­ Windows NT 4.0 Server
Windows NT 4.0 Server Enterprise Edition
(Âü°í·Î Çѱ¹ M$¿¡¼­´Â Enterprise Edition¿¡¼­¸¸ µÈ´Ù°í ÁÖÀåÇÏ¿´À½, ºñ½Ñ sw ÆȾƸÔÀ»·Á°í, ³ª»Û xx)
ºñ¿ë ¹«·á ¹«·á
Ãִ뿬°á¼ö 100´ë ÀÌ»ó 64´ë
±¸¼º 1°³ÀÇ Load Balancer(Real Server °¡´É)
n °³ÀÇ Real Server·Î ±¸¼º
n °³ÀÇ wlbs ¼­¹ö·Î ±¸¼º
clustering ¹æ¹ý Non-Shared cluster Non-Shared cluster
¼³Ä¡¹æ¹ý Kernel patch Wlbs setup
Àû¿ë¹üÀ§ LAN/WAN LAN
½ºÄÉÁÙ¹æ¹ý Round-Robin Scheduling
Weighted Round-Robin Scheduling
Least-Connection Scheduling
Weighted Least-Connection Scheduling
ÀÇ 4°¡Áö Áß¿¡¼­ ¼±Åð¡´É
ºñ°ø°³

°¢ swÀÇ ÀÚ¼¼ÇÑ ³»¿ëÀº ÇØ´ç web ÆäÀÌÁö¿¡¼­ ã¾Æ º¸½Ã±¸¿ä. ¿©±â¿¡¼­´Â Á¦°¡ ¼³Ä¡ÇÏ°í, Å×½ºÆ®ÇÏ°í, ¿î¿µÇÑ ³»¿ëÀ» ±âÁØÀ¸·Î ¼³¸íÇÏ¿© µå¸®°Ú½À´Ï´Ù.

0. Áغñ

¿ì¼± ÄÄÇ»ÅÍ°¡ ÀÖ¾î¾ß °ÚÁö¿ä. 2´ëÀÌ»ó + Ŭ¶óÀ̾ðÆ® 1´ë ^^
ÄÄÇ»ÅÍÀÇ ±âÁ¾Àº ¹«¾ùÀÌ¶óµµ »ó°üÀÌ ¾ø½À´Ï´Ù. °¢ OS°¡ ¿î¿µ°¡´ÉÇÑ ÃÖ¼ÒÇÑÀÇ ½Ã½ºÅÛÀÌ¸é µË´Ï´Ù.

LVSP

Kernel ¼Ò½º 2.2.12 ·Î Å×½ºÆ® ÇÏ¿´½À´Ï´Ù.
LVSP ȨÆäÀÌÁö¿¡¼­ ÃֽŹöÁ¯(Å×½ºÆ®ÇÒ ´ç½ÃÀÇ ÃֽŹöÁ¯  ipvs-0.8.2-2.2.12.tar.gz)À» ¹Þ¾Æ ¿É´Ï´Ù.

WLBS

Windows NT 4.0 Server
WLBS¸¦ M$ÀÇ È¨ÆäÀÌÁö¿¡¼­ ¹Þ¾Æ ¿É´Ï´Ù.

1. ¼³Ä¡

LVSP

linuxÀÇ Ä¿³Î ÄÄÆÄÀÏ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â http://kldp.org¿¡ °¡¸é ÀÖ½À´Ï´Ù.
À§¿¡¼­ ¹Þ¾Æ¿Â ÆÄÀÏÀ» ÀÓÀÇ µð·ºÅ丮¿¡ ¾ÐÃàÇØÁ¦ ÇÕ´Ï´Ù.

# tar xvzf ipvs-0.8.2-2.2.12.tar.gz (/usr/src µð·ºÅ丮¿¡ Ç®¾ú´Ù°í °¡Á¤ÇÕ´Ï´Ù.)

# cd ipvs-0.8.2-2.2.12

# vi README

# cd ipvsadm-1.2     :     ipvsadm ¼³Ä¡¸¦ À§Çؼ­

# make

# make install

# cd /usr/src/linux

# cat <path-name>/ipvs-0.8.2-2.2.12.patch | patch -p1

           ¿¹) cat ../ipvs-0.8.2-2.2.12.patch | patch -p1

ÀÌ ÀÌÈÄÀÇ °úÁ¤ÀÇ ¸®´ª½ºÀÇ Ä¿³Î ÄÄÆÄÀÏ °úÁ¤°ú ¶È°°½À´Ï´Ù. ´ÜÁö ¸î°¡Áö ÄÄÆÄÀÏ ¿É¼ÇÀ» ÁöÁ¤ÇØ ÁÖ¾î¾ß µÇ´Âµ¥, Àúµµ ¿Ö ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÏ´ÂÁö´Â ÀÚ¼¼È÷ ¸ð¸£Áö¸¸, ÇØ´ç »çÀÌÆ®ÀÇ ¼³¸í¿¡ ±×·¸°Ô µÇ¾î Àֱ⠶§¹®¿¡ ÁöÁ¤ÇØ ÁÖ¾ú½À´Ï´Ù.

Linux Ä¿³Î ÄÄÆÄÀÏ°úÁ¤ Áß¿¡¼­

# make menuconfig   -- Ä¿³Î ÄÄÆÄÀÏ ¼³Á¤ ÁöÁ¤½Ã

Kernel Compile Options:

Code maturity level options --->

[*] Prompt for development and/or incomplete code/drivers

Networking options --->

[*] Network firewalls
....
[*] IP: firewalling
[*] IP: always defragment (required for masquerading) (NEW)
....
[*] IP: masquerading
....
[*] IP: masquerading virtual server support (EXPERIMENTAL)(NEW)
(12) IP masquerading table size (the Nth power of 2)(NEW)
<*> IPVS: round-robin scheduling(NEW)
<*> IPVS: weighted round-robin scheduling(NEW)
<*> IPVS: weighted least-connection scheduling(NEW)
<*> IPVS: persistent client connection scheduling(NEW)
....
[*] IP: aliasing    : À̺κÐÀÇ lvsp Ȩ¿¡´Â ¾ø´Âµ¥, ÁöÁ¤¾ÈÇØÁÖ¸é ¾ÈµÇ´õ±º¿ä.

¡¡

ÄÄÆÄÀÏÀÌ ¿Ï·áµÈ ÈÄ¿¡ »õ·Î¿î ÄÄÆÄÀÏ·Î ¸®ºÎÆÃÇÕ´Ï´Ù. ÀÌ°ÍÀ» ¼³Ä¡°¡ ¿Ï·áµÈ °ÍÀÔ´Ï´Ù.

¡¡

WLBS

M$ »çÀÌÆ®¿¡¼­ ¹Þ¾Æ¿Â wlbsÀÇ ÆÄÀÏ(wlbs22_i386.exe)ÀÇ ¾ÐÃàÀ» ÀÓÀÇÀÇ µð·ºÅ丮¿¡ Ç®¾îÁÝ´Ï´Ù.

readme.txt¸¦ È®ÀÎÇØ º¸½Ã±¸¿ä.

¾ÐÃàÀ» Ǭ µð·ºÅ丮¿¡ wlbs.hlp ÆÄÀÏÀ» º¸½Ã¸é ÀÚ¼¼ÇÑ ¼³Ä¡¿¡ °üÇÑ Á¤º¸°¡ ÀÖ½À´Ï´Ù. ±×¸²°ú ÇÔ²²...

2. ¼³Á¤

¸ÕÀú, °¡»ó IP(»ç¿ëÀÚ¿¡°Ô º¸¿©Áú IP)¿Í °¢ ¼­¹ö¿¡ ÇÒ´çµÈ IP°¡ ¾Æ·¡¿Í °°´Ù°í ÇսôÙ.

°¡»ó IP    :     172.26.20.110

¼­¹ö #1ÀÇ IP    :     172.26.20.111

¼­¹ö #2ÀÇ IP    :     172.26.20.112

LVSP

LVSP¿¡¼­´Â Load balancer ÄÄÇ»ÅÍ¿Í Real ServerÀÇ ¼³Á¤ÀÌ ¾à°£ ´Ù¸¨´Ï´Ù.

Load balancer (Linux Director) ÄÄÇ»ÅÍ¿¡¼­ ¾Æ·¡¿Í °°ÀÌ ¸í·ÉÀ» ÁÝ´Ï´Ù.

ifconfig eth0 172.26.20.111 netmask 255.255.255.0 broadcast 172.26.20.255 up
route add -net 172.26.20.0 netmask 255.255.255.0 dev eth0
ifconfig eth0:0 172.26.20.110 netmask 255.255.255.255 broadcast 172.26.20.110 up
route add -host 172.26.20.110 dev eth0:0
ipvsadm -A -t 172.26.20.110:23 -s  wlc   (WLC scheduling is used for this virtual service)
ipvsadm -a -t 172.26.20.110:23 -R 172.26.20.112 -g

Real ServerÀÇ ¼ö¸¸Å­ ¸¶Áö¸· ¶óÀÎÀ» ¹Ýº¹Çؼ­ ÁÖ¾î¾ß ÇÕ´Ï´Ù.
¶ÇÇÑ Load balancer ÄÄÇ»Å͸¦ real server·Îµµ »ç¿ëÇÒ·Á¸é,

ipvsadm -a -t 172.26.20.110:23 -R 127.0.0.1 -g

ÀÌ·¸°Ô ¸í·ÉÀ» Ãß°¡·Î ÁÝ´Ï´Ù.

¡¡

´ÙÀ½À¸·Î °¢ Real Server¿¡¼­´Â ¾Æ·¡¿Í °°ÀÌ ¸í·ÉÀ» ÁÝ´Ï´Ù.

ifconfig eth0 172.26.20.112 netmask 255.255.255.0 broadcast 172.26.20.255 up
route add -net 172.26.20.0 netmask 255.255.255.0 dev eth0
ifconfig lo:0 172.26.20.110 netmask 255.255.255.255 broadcast 172.26.20.110 up
route add -host 172.26.20.110 dev lo:0

¿©±â±îÁö°¡ ¼³Á¤ÀÇ ÀüºÎ ÀÔ´Ï´Ù.

¡¡

WLBS

wlbsÀÇ ¼³Á¤ÀÇ µµ¿ò¸»ÀÇ ¼³Á¤¹æ¹ýÀ» ±×´ë·Î µû¶óÇÏ¸é ½±°Ô °¡´ÉÇÕ´Ï´Ù. ´Ù¸¸ ¾Æ·¡ÀÇ ±×¸²¿¡¼­ ÇÑ°¡Áö¸¸ ¹Ù²Ù¾î ÁÖ¸é µË´Ï´Ù.

wlbsconf.gif (13623 bytes)

Primary IP address    :    °¡»ó IP    172.26.20.110
Subnet mask            :      255.255.255.0    ( C Ŭ·¡½ºÀÎ °æ¿ì)
Full Internet name     :     DNS¼­¹ö¿¡¼­ ¼³Á¤ÇÑ À̸§
Multicast support    :  ¸¸¾à Lan card¸¦ 1°³·Î »ç¿ëÇÑ´Ù¸é ¼³Á¤ÇØ ÁֽʽÿÀ.

Priority(ID)            :      °¢ ¼­¹öÁß¿¡¼­ ã¾Æ°¥ ¼ø¼­
Dedicated IP address    : °¢ ¼­¹öÀÇ ½ÇÁ¦ IP      172.26.20.111


Filtering mode    : °¢ ¼­¹ö°¡ µ¿ÀÏ ½Ã½ºÅÛÀÌ ¾Æ´Ñ°æ¿ì¿¡´Â Load percentage¸¦ ¼³Á¤ÇÕ´Ï´Ù.

[Add]¹öÆ°À» ´­·¯ÁÖ°í, [OK]¹öÆ°À» ´©¸¨´Ï´Ù.

À§ÀÇ °úÁ¤À» °¢ ¼­¹ö¿¡¼­ ¶È°°ÀÌ ÇØÁָ鼭 ¼­¹öÀÇ ½ÇÁ¦ IP¸¸ ¹Ù²Ù¾î ÁÝ´Ï´Ù.

¶ÇÇÑ µµ¿ò¸»¿¡ º¸¸é, Network ȯ°æÀÇ µî·ÏÁ¤º¸Áß¿¡¼­ Binding¿¡ °ü·ÃµÈ ¼³Á¤À» ¹Ù²Ù´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» µµ¿ò¸»ÀÇ ±×¸²°ú   ¶È°°ÀÌ ¼³Á¤ÇÏ¿© ÁÝ´Ï´Ù.

¼³Á¤ÀÌ ¿Ï·áµÇ¸é, ¸®ºÎÆÃÇÏ¿© À̺¥Æ® Ç¥½Ã±â¸¦ È®ÀÎÇϽʽÿÀ.

¡¡

3. Å×½ºÆ®

Å×½ºÆ® ¹æ¹ýÀº µÎ ½Ã½ºÅÛÀÌ µ¿ÀÏÇÕ´Ï´Ù.

¸ÕÀú, µÎ´ë ¼­¹ö¸ðµÎ¸¦ ·£¿¡ ¿¬°áµÇ¾î ÀÖ´Â »óȲ¿¡¼­, °¢ ¼­¹öÀÇ web Ãʱâ ÆäÀÌÁö¸¦ ´«À¸·Î È®ÀÎÇÒ ¼ö ÀÖµµ·Ï ´Ù¸£°Ô ¸¸µé¾î ÁÝ´Ï´Ù.

°¢ ¼­¹ö°¡ »ì¾Æ ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù.

ping 172.26.20.111
ping 172.26.20.112

À̹ø¿¡´Â °¡»ó IP·Î pingÀ» ÇØ º¾´Ï´Ù.

ping 172.26.20.110

ÀÌ ¼¼°³ÀÇ Å×½ºÆ®¿¡¼­ ÀüºÎ ÀÀ´äÀÌ ÀÖÀ¸¸é Á¦´ë·Î ½ÇÇàµÇ´Â °ÍÀÔ´Ï´Ù. ´Ù¸¸, °¡»ó IP·ÎÀÇ pingÀÌ ¾î´À ½Ã½ºÅÛÀ¸·Î °¡´ÂÁö´Â ¾Ë¼ö°¡ ¾ø½À´Ï´Ù.

À̹ø¿¡´Â ºê¶ó¿ìÁ®¸¦ ¶ç¿ì°í,

°¢ ¼­¹öÀÇ IP¸¦ url ÁÖ¼Ò¿¡ Àû¾î¼­ web¼­¹ö°¡ »ì¾Æ ÀÖ°í, °¢ ¼­¹öÀÇ Ã³À½ ÆäÀÌÁö°¡ ´Ù¸¥ Áö¸¦ È®ÀÎÇÕ´Ï´Ù.

È®ÀÎÀÌ µÆÀ¸¸é, °¡»ó IP¸¦ url¿¡ Àû¾îÁÝ´Ï´Ù.  ÀÌÁ¦ ¾î´Â ¼­¹ö°¡ °¬´ÂÁö¸¦ È®ÀÎ ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

ÇØ´ç ¼­¹öÀÇ lan ÄÉÀ̺íÀ» »Ì¾ÆµÎ°í, ºê¶ó¿ìÁ®¿¡¼­ '»õ·Î°íħ'À» ÇÏ¿© º¸½Ê½Ã¿À.

À̹ø¿¡´Â ´Ù¸¥ÂÊ ¼­¹öÀÇ webÈ­¸éÀÌ ³ª¿Ã °ÍÀÔ´Ï´Ù.

¡¡

ÀÚ, ÀÌÁ¦ ¹«Á¤Áö, ¹«Á¦ÇÑ web¼­ºñ½º¸¦ ÇÒ Áغñ°¡ µÈ °ÍÀÔ´Ï´Ù.

ÀÌ°ÍÀº ²À Web¼­ºñ½º »Ó¸¸ ¾Æ´Ï¶ó TCP/IP¸¦ »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ ¼­ºñ½º¿¡ ÀÀ¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

±×·³, µµ¿òµÇ¼Ì±â¸¦ ºË´Ï´Ù.

¡¡

1999³â 9¿ù 9¿ù

½Åº´ÁØ (bolero@dooin.co.kr)
http://bolero.dooin.co.kr