´ÙÀ½Àº Direcet Routing request dispatching ±â¼úÀ» ÀÌ¿ë ¾î¶»°Ô ¸®´ª½º °¡»ó ¼¹ö¸¦ ±¸ÃàÇÏ´ÂÁö ¼³¸íÇÑ´Ù.
¿äû µð½ºÆÐĪ Á¢±Ù¹æ¹ýÀº IBMÀÇ NetDispatcher°¡ ¼öÇàÇÏ´Â °Í°ú ºñ½ÁÇÏ´Ù. ½ÇÁ¦ ¼¹ö¿Í ºÎÇÏºÐ»ê ¼¹ö¿¡¼ °¡»ó IP ÁÖ¼Ò¸¦ °øÀ¯ÇÑ´Ù. ºÎÇϺл꼹ö¿¡´Â ¸¶Âù°¡Áö·Î °¡»ó IP ÁÖ¼Ò¸¦ ¼³Á¤ÇÑ ÀÎÅÍÆäÀ̽º°¡ ÀÖ¾î¾ßÇϸç ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ë, ¿äû ÆÐŶÀ» ¹Þ¾ÆµéÀÌ°í ¼±ÅÃÇÑ ¼¹ö¿¡ Á÷Á¢ ¶ó¿ìÆÃÇÒ ¼ö ÀÖ´Ù. ¸ðµç ½ÇÁ¦ ¼¹ö´Â °¡»ó IPÁÖ¼Ò·Î ¼³Á¤ÇÑ non-arp alias ÀÎÅÍÆäÀ̽º°¡ Àְųª °¡»ó IP ÁÖ¼Ò·Î ÇâÇÏ´Â ÆÐŶÀ» Áö¿ª ¼ÒÄÏÀ¸·Î ÀçÁöÇâÇÑ´Ù. ±×·¡¼ ½ÇÁ¦ ¼¹ö¿¡¼ ÆÐŶÀ» Áö¿ªÀûÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ´Ù. ºÎÇÏºÐ»ê ¼¹ö¿Í ½ÇÁ¦ ¼¹ö´Â Çãºê/½ºÀ§Ä¡¸¦ ÀÌ¿ë ¹°¸®ÀûÀ¸·Î ¸µÅ©µÈ ±×µé¸¸ÀÇ ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í Çϳª °¡Áö°í ÀÖ¾î¾ßÇÑ´Ù.±¸Á¶´Â ´ÙÀ½°ú °°´Ù.
»ç¿ëÀÚ°¡ ¼¹ö Ŭ·¯½ºÅÍ¿¡¼ Á¦°øÇÏ´Â ¼ºñ½º¿¡ Á¢±ÙÇÒ¶§, °¡»ó IP ÁÖ¼Ò(°¡»ó ¼¹öÀÇ IP ÁÖ¼Ò)·Î ÇâÇÏ´Â ¿ä±¸ ÆÐŶÀÌ ºÎÇϺл꼹ö·Î °£´Ù. ºÎÇϺл꼹ö(LinuxDirector)¿¡¼ ÆÐŶÀÇ ¸ñÀûÁö ÁÖ¼Ò¿Í Æ÷Æ® ¹øÈ£¸¦ °Ë»çÇÑ´Ù. ±× ³»¿ëÀÌ °¡»ó ¼¹ö ¼ºñ½º¿Í ÀÏÄ¡ÇÏ¸é ½ºÄÉÁ층 ¾Ë°í¸®Áò¿¡ µû¶ó Ŭ·¯½ºÅÍ¿¡¼ ½ÇÁ¦ ¼¹ö¸¦ ¼±ÅÃÇϰí, Á¢¼ÓÀ» ±â·ÏÇÏ´Â ÇØ½¬ Å×ÀÌºí¿¡ »õ·Î¿î Á¢¼ÓÀ» Ãß°¡ÇÑ´Ù. ±×·¯°í³ª¼ ºÎÇϺл꼹ö¿¡¼ ¼±ÅÃÇÑ ¼¹ö·Î Á÷Á¢ ÆÐŶÀ» Àü¼ÛÇÑ´Ù. µé¾î¿À´Â ÆÐŶÀÌ ÀÌ·¯ÇÑ Á¢¼Ó¿¡ ÇØ´çÇϰí ÇØ½¬ Å×ÀÌºí¿¡¼ ¼±ÅÃÇÑ ¼¹ö¸¦ ãÀ» ¼ö ÀÖÀ¸¸é ÆÐŶÀº ´Ù½Ã ¼¹ö·Î Á÷Á¢ Àü¼ÛµÈ´Ù. ¼¹ö¿¡¼ Àü¼Û(Æ÷¿öµù)µÈ ÆÐŶÀ» ¹ÞÀ¸¸é, ¼¹ö´Â ÆÐŶ¿¡¼ ¾Ë¸®¾Æ½º ÀÎÅÍÆäÀ̽º³ª Áö¿ª ¼ÒÄÏÀÇ ÁÖ¼Ò¸¦ ã¾Æ¼ ¿äûÀ» ó¸®ÇÏ°í °á°ú¸¦ »ç¿ëÀÚ¿¡°Ô Á÷Á¢ Àü¼ÛÇÑ´Ù. Á¢¼ÓÀÌ ÇØÁ¦µÇ°Å³ª ½Ã°£À» ÃʰúÇϸé, ÇØ½¬ Å×ÀÌºí¿¡¼ ¿¬°á ±â·ÏÀ» Á¦°ÅÇÑ´Ù. ÀÛ¾÷ÀÇ È帧Àº ´ÙÀ½°ú °°´Ù.
ºÎÇÏºÐ»ê ¼¹ö´Â ´Ü¼øÈ÷ µ¥ÀÌÅÍ ÇÁ·¹ÀÓÀÇ MAC ÁÖ¼Ò¸¸ ¼±ÅÃÇÑ ¼¹ö·Î ¹Ù²Ù¸ç À̸¦ ´Ù½Ã LAN¿¡ ÀçÀü¼ÛÇÑ´Ù. ÀÌ·± ÀÌÀ¯ ¶§¹®¿¡ ºÎÇÏºÐ»ê ¼¹ö¿Í °¢ ¼¹ö°¡ ´ÜÀÏÇÑ ¹°¸®Àû ¼¼±×¸ÕÆ®¾È¿¡¼ ¿¬°áµÇ¾î¾ßÇÑ´Ù. Ŭ·¯½ºÅÍ¿¡¼ arp ¹®Á¦°¡ »ý±â¸é the arp problem page¸¦ Âü°íÇÏÀÚ.
¸ÕÀú Àû´çÇÑ ¹öÀüÀÇ ¸®´ª½º Ä¿³Î ¼Ò½º¸¦ ±¸ÇÑ´Ù. ±×·¯°í Ä¿³Î¿¡ °¡»ó ¼¹ö ÆÐÄ¡(version 0.9 ÀÌ»ó)¸¦ Àû¿ëÇÑ´Ù. ¼¼ ¹øÂ°·Î ÃÖ¼ÒÇÑ ¿©±â¼ ¼±ÅÃÇÑ Ä¿³Î ÄÄÆÄÀÏ ¿É¼ÇÀ» ¼±ÅÃÇß´ÂÁö È®ÀÎÇÑ´Ù.
Ä¿³Î ÄÄÆÄÀÏ ¿É¼Ç:
Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers Networking options ---> [*] Network firewalls ... [*] IP: forwarding/gatewaying ... [*] IP: firewalling ... [*] IP: masquerading ... [*] IP: ippfvs(LinuxDirector) masquerading (EXPERIMENTAL) Virtual server request dispatching technique--- ( ) VS-NAT ( ) VS-Tunneling (X) VS-DRouting
±×¸®°í ÇϳªÀÇ ½ºÄÉÁ층 ¾Ë°í¸®ÁòÀ» ¼±ÅÃÇØ¾ßÇÑ´Ù.
Virtual server scheduling algorithm (X) WeightedRoundRobin ( ) LeastConnection ( ) WeightedLeastConnection [ ] IP: enabling ippfvs with the local node feature
±×´ÙÀ½ Ä¿³ÎÀ» ÄÄÆÄÀÏÇÑ´Ù. ÀûÀýÇÏ°Ô Ä¿³ÎÀÌ ÄÄÆÄÀϵǾú´Ù¸é, ½Ã½ºÅÛ Ä¿³ÎÀ» ¾÷µ¥ÀÌÆ®Çϰí ÀçºÎÆÃÇÑ´Ù.
Kernel Compile Options:
Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers Networking options ---> [*] Network firewalls ... [*] IP: forwarding/gatewaying ... [*] IP: firewalling ... [*] IP: masquerading ... [*] IP: masquerading virtual server support (EXPERIMENTAL) (12) IP masquerading table size (the Nth power of 2) <M> IPVS: round-robin scheduling(NEW) <M> IPVS: weighted round-robin scheduling(NEW) <M> IPVS: weighted least-connection scheduling(NEW) <M> IPVS: persistent client connection scheduling(NEW)
±×´ÙÀ½ Ä¿³ÎÀ» ÄÄÆÄÀÏÇÑ´Ù. ÀûÀýÇÏ°Ô Ä¿³ÎÀÌ ÄÄÆÄÀϵǾú´Ù¸é, ½Ã½ºÅÛ Ä¿³ÎÀ» ¾÷µ¥ÀÌÆ®Çϰí ÀçºÎÆÃÇÑ´Ù. ¸¶Áö¸·À¸·Î cd ¸í·ÉÀ» ÀÌ¿ë, ipvsadm ¼Ò½º µð·ºÅ丮·Î À̵¿ÇÏ¿© "make install" À̶ó°í ¸í·ÉÀ» Ä¡¸é ipvsadm ÇÁ·Î±×·¥À» ½Ã½ºÅÛ µð·ºÅ丮¿¡ ¼³Ä¡ÇÑ´Ù.
ÅͳθµÀ» »ç¿ëÇÑ °¡»ó ¼¹ö ½ÇÇè ¿¹Á¦
´ÙÀ½Àº ÅͳθµÀ» ÀÌ¿ë °¡»ó ¼¹ö¸¦ ½ÇÇèÇÑ ¿¹Á¦ÀÌ´Ù. ¼³Á¤Àº ´ÙÀ½°ú °°´Ù. ÀÌ°Ç ÀÌ ±ÛÀ» º¸´Â »ç¶÷µé¿¡°Ô ÇϳªÀÇ ½Ç¸¶¸®¸¦ Áֱ⠹ٶõ´Ù. ºÎÇÏ ºÐ»ê¼¹öÀº 172.26.20.111 ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ°í ½ÇÁ¦ ¼¹ö´Â 172.26.112ÀÌ´Ù. °¡»ó IP ÁÖ¼Ò´Â 172.26.20.110 ÀÌ´Ù. ÀÌ ¿¹Á¦¿¡¼ "telnet 172.26.20.110"À» ÇÏ¸é ½ÇÁ¦ ¼¹ö¿¡ Á¢¼ÓÇÒ °ÍÀÌ´Ù.
The load balancer (LinuxDirector), kernel 2.0.36
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 ippfvsadm -A -t 172.26.20.110:23 -R 172.26.20.112
The real server 1, kernel 2.0.36 (IP forwarding enabled)
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
When I am on other hosts, 'telnet 172.26.20.110' will actually connect the real server 1.
The load balancer (LinuxDirector), kernel 2.2.14
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 echo 1 > /proc/sys/net/ipv4/ip_forward ipvsadm -A -t 172.26.20.110:23 -s wlc ipvsadm -a -t 172.26.20.110:23 -r 172.26.20.112 -g
The real server 1, kernel 2.0.36 (IP forwarding enabled)
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
The load balancer (LinuxDirector), kernel 2.2.14
echo 1 > /proc/sys/net/ipv4/ip_forward ipvsadm -A -t 172.26.20.110:23 -s wlc ipvsadm -a -t 172.26.20.110:23 -r 172.26.20.112 -g
The real server 1, kernel 2.2.14
echo 1 > /proc/sys/net/ipv4/ip_forward 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 echo 1 > /proc/sys/net/ipv4/conf/all/hidden echo 1 > /proc/sys/net/ipv4/conf/lo/hidden
VIP¸¦ dummy¿Í °°Àº ´Ù¸¥ µð¹ÙÀ̽ºÀÇ ¾Ë¸®¾Æ½º·Î ¼³Á¤Çϰųª °¨Ãâ ¼ö ÀÖ´Ù. ¾Ë¸®¾Æ½º ÀÎÅÍÆäÀ̽ºÀ̹ǷÎ, ¿øÇϴ¸¸Å VIP¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. dummy µð¹ÙÀ̽º¸¦ »ç¿ëÇÑ ¿¹Á¦´Â ¾Æ·¡¿Í °°´Ù.
echo 1 > /proc/sys/net/ipv4/ip_forward ifconfig dummy0 up echo 1 > /proc/sys/net/ipv4/conf/all/hidden echo 1 > /proc/sys/net/ipv4/conf/dummy0/hidden ifconfig dummy0:0 172.26.20.110 up route add -host 172.26.20.110 dev dummy0:0 ifconfig dummy0:1 <Another-VIP> up ...
ºÎÇϺл꼹öÀÇ ¼³Á¤Àº À§ ¿¹Á¦¿Í °°´Ù. Ä¿³Î 2.2.x¸¦ °¡Áö°í ¿î¿µÇÏ´Â ¸®¾ó ¼¹ö´Â ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù:
echo 1 > /proc/sys/net/ipv4/ip_forward ipchains -A input -j REDIRECT 23 -d 172.26.20.110 23 -p tcp ...
ipchains redirect ¸í·É¾î¸¦ ÀÌ¿ë, 172.26.20.110 Æ÷Æ® 23¸¦ ÇâÇÏ´Â TCP ÇÁ·ÎÅäÄÝÀ» °¡Áø ÆÐŶÀº Áö¿ª ¼ÒÄÏÀ¸·Î ÀçÁöÇâµÈ´Ù. ¼ºñ½º ´ë¸óÀº ¹Ýµå½Ã ¸ðµç ÁÖ¼Ò(0.0.0.0)À̳ª VIP ÁÖ¼Ò(¿©±â¼´Â 172.26.20.110)¿¡ ±Í¸¦ ±â¿ïÀ̰í ÀÖ¾î¾ßÇÑ´Ù.
´ÙÀÌ·ºÆ® ¶ó¿ìÆÃÀ» ÀÌ¿ëÇÑ °¡»ó ¼¹ö¿¡¼, ½ÇÁ¦ ¼¹ö´Â ´Ù¸¥ ³×Æ®¿÷ ¶ó¿ìÆ®¸¦ ÀÌ¿ëÇØ Ŭ¶óÀ̾ðÅ׿¡°Ô °á°ú¸¦ º¸³»ÁÙ¼ö ÀÖ´Ù. ÀÌ·± ¹æ¹ýÀ» ÀÌ¿ëÇÏ¸é ¼º´ÉÇâ»ó¿¡ ÁÁÀ» °ÍÀÌ´Ù. ºÎÇÏ ºÐ»ê ¼¹ö¿Í ½ÃÁ¦ ¼¹ö´Â »ç¼³ LANÀ» ÀÌ¿ëÇØ Åë½ÅÇÒ ¼ö ÀÖ´Ù. ¼³Á¤ ¿¹Á¦´Â ´ÙÀ½°ú °°´Ù.
The load balancer (LinuxDirector), kernel 2.2.14
ifconfig eth0 <an IP address> ... ... ifconfig eth0:0 <VIP> netmask 255.255.255.255 broadcast <VIP> up route add -host <VIP> dev eth0:0 ifconfig eth1 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 up route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1 ipvsadm -A -t <VIP>:23 ipvsadm -A -t <VIP>:23 -r 192.168.0.2 -g ...
The real server 1, kernel 2.0.36
ifconfig eth0 <a seperate IP address> ... # Follow the different network route ... ifconfig eth1 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1 ifconfig lo:0 <VIP> netmask 255.255.255.255 broadcast <VIP> up route add -host <VIP> dev lo:0
Created on: 1999/5/1