HAProxy·Î ·Îµå¹ë·±½Ì(LB, ÀÌÁßÈ) ±¸¼º | ÀÛ¼ºÀÏ : 2015/03/24 18:39 |
![]() |
Á¶È¸¼ö : 32756 |
![]() | ||||||||||||||||||||||||||||||||||||||||
Á¦ ¸ñ : HAProxy·Î ·Îµå¹ë·±½Ì(LB, ÀÌÁßÈ) ±¸¼º ÀÛ¼ºÀÚ : ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ ) ÀÛ¼ºÀÏ : 2015.3.10(È) HAProxy´Â L4(TCP), L7(HTTP) ³×Æ®¿÷ ½ºÀ§Ä¡¸¦ ´ëüÇÒ ¼ö ÀÖ´Â ·Îµå ¹ë·±½Ì(load balancing), HA(high availability)¿ë ¿ÀǼҽº´Ù. ¿¹¸¦ µé¾î À¥¼¹ö°¡ ¿©·¯´ë°¡ ÀÖ°í, ÀÌ ¼¹ö¸¦ ·Îµå ¹ë·±½ÌÇÑ´Ù¸é À¥¼¹ö ¾Õ´Ü¿¡ HAProxy¼¹ö¸¦ ¼ÂÆÃÇÑ´Ù. ¿©·¯´ë À¥¼¹ö Áß 1´ë°¡ Àå¾Ö¹ß»ýÇØµµ ¼ºñ½º¿¡´Â ÁöÀåÀÌ ¾ø´Ù. HAProxy´Â ¹Ù·Î ¼¹ö Àå¾Ö¸¦ ÀÎÁöÇϰí ÇØ´ç¼¹ö¸¦ ¼ºñ½º¿¡¼ Á¦¿Ü½Ã۱⠶§¹®ÀÌ´Ù. ![]() 1. HAProxy ±âº» ¼³Á¤
¼³Á¤ Áß ¸î°¡Áö¸¸ »ìÆìº¸ÀÚ. 1) ·Î±× ¼³Á¤
log ¼³Á¤Àº ÁöÁ¤ÇÑ IP ¶Ç´Â ¼ÒÄÏ(¿¹. /dev/log ¶Ç´Â /var/run/log)À¸·Î ·Î±×¸¦ º¸³½´Ù. local1 µÚ¿¡´Â ·Î±×·¹º§À» ÁöÁ¤ÇÒ ¼ö Àִµ¥, local1 notice¶ó°í ÁöÁ¤Çß´Ù¸é emerg~notice ·¹º§À» ·Î±×·Î ³²±ä´Ù. notice ·¹º§¸¸ syslog·Î º¸³»°í ½Í´Ù¸é local1 notice noticeó·³ notice¸¦ 2¹ø Àû¾îÁÖ¸é µÈ´Ù. µÚ¿¡ ÀÖ´Â notice´Â ÃÖ¼Ò·¹º§À» ÀǹÌÇÑ´Ù. Áï, notice~notice ¹üÀ§ÀÇ ·¹º§À» ÀǹÌÇϹǷΠ¿ÀÁ÷ notice ·¹º§¸¸ syslog·Î º¸³»´Â °ÍÀÌ´Ù. option httplog ¼³Á¤Àº Ŭ¶óÀÌ¾ðÆ® IP, URL, »óÅÂÄÚµå, bytes µîÀÇ À¥·Î±×±îÁö syslog·Î º¸³»µµ·Ï ÇÑ´Ù. syslog(¶Ç´Â rsyslog)µµ À§¿Í ¸ÅĪµÇµµ·Ï ¼³Á¤ÇÑ´Ù.
HAProxy start/stop Á¤º¸¿Í ¼¹ö°¡ DOWN, UP µîÀÇ »óÅ º¯°æ Á¤º¸ µîÀÌ notice·¹º§¿¡ ÇØ´çÇÑ´Ù. À¥·Î±×´Â info·¹º§ÀÌ´Ù. ¿äûÀÌ ³Ê¹« ¸¹À» °æ¿ì À¥·Î±×·®(haproxy_access.log)ÀÌ ±Þ¼ÓÈ÷ Ä¿Áö¹Ç·Î ·Î±×¸¦ ³²±æ °ÍÀÎÁö Àß ÆÇ´ÜÇÏ±æ ¹Ù¶õ´Ù. 2) listen ¼³Á¤
option httpchk´Â HTTP¿äûÀ¸·Î ¼ºñ½º Çコüũ¸¦ Çϰڴٴ ¶æÀÌ´Ù. Ãß°¡¼³Á¤¾øÀÌ option httpchk¸¸ ¼³Á¤Çϸé OPTIONS ¸Þ½îµå·Î À¥¿äûÀ» ÇÑ´Ù. ƯÁ¤ URLÀ» üũÇÏ°í ½Í´Ù¸é ¾Æ·¡Ã³·³ ¼³Á¤ÇÏ¸é µÈ´Ù. OPTIONS ¸Þ½îµå üũº¸´Ù´Â Á» ´õ ³ªÀº ¹æ¹ýÀÌ´Ù. HEAD ¸Þ½îµå·Î üũÇϸé À¥¼¹ö ÀÀ´äÀÌ ¾ø´Â °Í ¿Ü¿¡ 404 ¿¡·¯°¡ ¹ß»ýÇÏ´Â °æ¿ìµµ ÇØ´ç ¼¹ö¸¦ ¼ºñ½º¿¡¼ Á¦¿Ü½ÃŲ´Ù.
option forwardfor´Â ¹é´ÜÀÇ À¥¼¹ö(À§¿¡¼´Â www1, www2)¿¡ X-Forwarded-For Çì´õ¸¦ ³Ö¾î¼ Àü´ÞÇÑ´Ù. X-Forwarded-For Çì´õ¿¡ ½ÇÁ¦ ¿äûÇÑ Å¬¶óÀÌ¾ðÆ® IP°¡ ÀúÀåµÈ´Ù.
www1 ¼¹ö°¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÁßÀÎÁö¸¦ 3ÃÊ(3000)°£°ÝÀ¸·Î üũ(check inter 3000)ÇÑ´Ù. Á¢¼ÓÀÌ ÇѹøÀÌ¶óµµ ¾ÈµÈ´Ù¸é ÇØ´ç ¼¹ö¸¦ ¼ºñ½º¿¡¼ Á¦¿Ü(fall 1)½ÃŲ´Ù. ¸¸¾à µÎ¹ø ¿¬¼Ó Ã¼Å©ÇØ¼ ¸ðµÎ Á¤»óÀûÀÎ ÀÀ´äÀÌ ¿Â´Ù¸é ´Ù½Ã ¼ºñ½º¿¡ Ãß°¡(rise 2)½ÃŲ´Ù. rise¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é µðÆúÆ®·Î 2¸¦, fallÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é 3ÀÌ µðÆúÆ® °ªÀÌ´Ù.
Æò»ó½Ã¿¡´Â inter 3000 ¼³Á¤¿¡ µû¶ó 3ÃÊ °£°ÝÀ¸·Î ¼ºñ½º¸¦ üũÇÑ´Ù. ÇØ´ç ¼¹ö°¡ ´Ù¿îÀÌ µÇ¾úÀ» ¶§, rise 3 ¼³Á¤¿¡ µû¶ó 3¹ø ¿¬¼Ó Ã¼Å©ÇØ¼ Á¤»óÀÌ¸é ¼ºñ½º¿¡ Ãß°¡ÇÑ´Ù. À̶§ fastinter 1000ÀÌ ½Ç·Â¹ßÈÖ¸¦ ÇÑ´Ù. 3¹ø üũÇÏ´Â µ¿¾È¿¡ 1Ãʰ£°ÝÀ¸·Î ¼ºñ½º¸¦ üũÇÏ°Ô µÈ´Ù. µû¶ó¼ Á» ´õ »¡¸® ¼ºñ½º¿¡ Ãß°¡µÉ ¼ö ÀÖ´Ù. balance ¼³Á¤Àº ¿©·¯°³°¡ Àִµ¥ ÀÚÁÖ »ç¿ëÇÏ´Â 2°³¸¸ »ìÆìº¸¸é. roundrobinÀº ¼øÂ÷ÀûÀ¸·Î ¿äûÀ» ³Ñ°ÜÁØ´Ù. ù¹øÂ° ¿äûÀº 1¹ø¼¹ö·Î, ´ÙÀ½Àº 2¹ø¼¹ö·Î, ±× ´ÙÀ½Àº ´Ù½Ã 1¹ø¼¹ö·Î. leastconnÀº ¿äûÀ» °¡Àå Àû°Ô ¹ÞÀº ¼¹ö·Î ¿äûÀ» ³Ñ°ÜÁØ´Ù. 1¹ø ¼¹ö°¡ 100°³ ¿äû¹Þ¾Æ ó¸®ÁßÀ̰í, 2¹ø¼¹ö°¡ 80°³ ¹Þ¾Æ ó¸®ÁßÀ̶ó¸é, ¿äûÀÌ µé¾î¿Ã ¶§ 2¹ø¼¹ö·Î º¸³½´Ù. 2. µ¿ÀÏ Å¬¶óÀÌ¾ðÆ®´Â µ¿ÀÏÇÑ ¼¹ö·Î Á¢¼ÓµÇµµ·Ï ¼³Á¤ (sticky ¼³Á¤) µ¿ÀÏÇÑ Å¬¶óÀÌ¾ðÆ®°¡ Ç×»ó °°Àº ¼¹ö·Î¸¸ ¿äûÀ» º¸³¾ Çʿ䰡 ÀÖÀ» ¶§´Â ÄíŰ üũ¿Í Ŭ¶óÀÌ¾ðÆ® IP üũ µî 2°¡Áö ¹æ¹ýÀ¸·Î ÇØ°áÇÒ ¼ö ÀÖ´Ù. 1) ÄíŰ·Î ¼¼¼Ç À¯Áö
Ŭ¶óÀÌ¾ðÆ® ¿äûÀÌ µé¾î¿À¸é, SVID Äí۰¡ ÀÖ´ÂÁö¸¦ °Ë»çÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ óÀ½ ¿äûÇÒ ¶§´Â SVID Äí۰¡ ¾øÀ» °ÍÀ̹ǷΠÄí۸¦ »õ·Î ¸¸µç´Ù. ÀÌ ¶§ www1 ¼¹ö·Î Á¢¼ÓÇϸé w1 Äí۰ªÀ» ±Á°í, www2 ¼¹ö·Î Á¢¼ÓÇϸé w2 Äí۰ªÀ» ±Á´Â´Ù. Çѹø ¿äûÇß´ø Ŭ¶óÀÌ¾ðÆ®¿¡¼ ´ÙÀ½ ¿äûÀ» ÇÒ ¶§´Â SVID Äí۰¡ ÀÖÀ¸¹Ç·Î Äí۰ª¿¡ ¸Â´Â ¼¹ö·Î ¿äûÀ» º¸³½´Ù. µû¶ó¼ óÀ½¿¡ w1¼¹ö·Î ¿äûÀÌ µé¾î¿Ô´Ù¸é ´ÙÀ½¿¡µµ °è¼Ó w1¼¹ö·Î ¿äûÀ» º¸³¾ ¼ö ÀÖ°Ô µÈ´Ù.
µ¿ÀÏÇÑ ¼¹ö·Î Á¢¼ÓÇÏ´Â °ÍÀ» 10ºÐ¸¸ À¯ÁöÇÏ·Á¸é À§Ã³·³ cookie À¯Áö½Ã°£(maxlife 10m)À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. HAProxy¼¹ö°¡ 'Ŭ¶óÀÌ¾ðÆ® -> HAProxy ¼¹ö -> À¥¼¹öµé'°ú °°Àº ±¸¼ºÀ¸·Î µÇ¾î ÀÖÀ» ¶§, SVID ÄíŰ´Â Ŭ¶óÀÌ¾ðÆ® <-> HAProxy ¼¹ö ±¸°£¿¡¸¸ À¯Áö°¡ µÇ°í, µÞ´ÜÀÇ À¥¼¹ö·Î´Â Àü´ÞµÇÁö ¾Ê´Â´Ù. ·Îµå¹ë·±½Ì¿ëÀ¸·Î¸¸ »ç¿ëÇÏ´Â ÄíŰÀ̹ǷΠÀ¥¼¹ö°¡ »ç¿ëÇÒ ÇÊ¿ä¾øÀ¸´Ï±ñ.
2) Ŭ¶óÀÌ¾ðÆ® IP·Î ¼¼¼Ç À¯Áö
À§Ã³·³ balance¿Í hash-typeÀ» ¼³Á¤Çϸé ÇØ½ÃÅ×À̺íÀ» »ç¿ëÇØ¼ Ŭ¶óÀÌ¾ðÆ® IPº°·Î ƯÁ¤¼¹ö·Î¸¸ Á¢¼ÓµÇµµ·Ï ÇÒ ¼ö ÀÖ´Ù. 3. HAProxyÀÇ Åë°è ¸ð´ÏÅ͸µ ÆäÀÌÁö
HAProxyÀÇ Åë°è ¸ð´ÏÅ͸µ ÆäÀÌÁö(Statistics Report, stats page)´Â 8080°°ÀÌ ¼ºñ½º¿Í´Â º°°³ÀÇ Æ÷Æ®·Î ¼³Á¤ÇÏ´Â°Ô º¸´Ù ¾ÈÀüÇÏ´Ù. 4. À¥¼¹ö ·Î±×¿¡ Proxy IP´ë½Å Ŭ¶óÀÌ¾ðÆ® IP ³²±â±â Ŭ¶óÀÌ¾ðÆ® -> HAProxy ¼¹ö -> À¥¼¹ö·Î ¿äûÀÌ µé¾î¿Ã ¶§, À¥¼¹ö ·Î±×¿¡´Â HAProxy¼¹öÀÇ IP°¡ ³²°ÔµÈ´Ù. ¿äûÇÑ Å¬¶óÀÌ¾ðÆ® IP´Â X-Forwarded-For Çì´õ¿¡ µé¾îÀִµ¥, nginx, apache À¥¼¹ö´Â ÀÌ Çì´õ°ªÀ» »Ì¾Æ³» Proxy IP¸¦ Ŭ¶óÀÌ¾ðÆ® IP·Î º¯°æÇØÁÖ´Â ¸ðµâÀÌ ÀÖ´Ù. 1) nginx http_realip ¸ðµâÀº ±âº»À¸·Î ¼³Ä¡µÇÁö ¾ÊÀ¸¹Ç·Î configureÇÒ ¶§ --with-http_realip_module ¿É¼ÇÀ» Ãß°¡ÇÑ ÈÄ ÄÄÆÄÀÏÇÑ´Ù.
10.10.10.10Àº HAProxy¼¹öÀÇ IPÀ̰í, HAProxy¼¹ö°¡ ¿©·¯´ëÀÏ ¶§´Â IP¸¦ ÇÑÁÙ¿¡ Çϳª¾¿ Ãß°¡ÇØÁØ´Ù. 192.168.0.0/24ó·³ ´ë¿ªÆøÀ¸·Î ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. 2) apache ¾ÆÆÄÄ¡¿¡ mod_rpaf ¸ðµâÀÌ Å¬¶óÀÌ¾ðÆ® IP º¯È¯±â´ÉÀ» Á¦°øÇÑ´Ù. ÀÚ¼¼ÇÑ ¼³Á¤¹ýÀº ´ÙÀ½±ÛÀ» Àо½Ã±æ. * apache¿¡¼ Proxy IP¸¦ real IP·Î ¹Ù²Ù±â (±Û ÁÁÀºÁøÈ£, 2010.2) http://coffeenix.net/board_view.php?bd_code=1701 5. Âü°íÀÚ·á * HAProxy version 1.5.11 Configuration Manual http://cbonte.github.io/haproxy-dconv/configuration-1.5.html * Module ngx_http_realip_module http://nginx.org/en/docs/http/ngx_http_realip_module.html * L4/L7 ½ºÀ§Ä¡ÀÇ ´ë¾È, ¿ÀÇ ¼Ò½º ·Îµå ¹ë·±¼ HAProxy http://helloworld.naver.com/helloworld/textyle/284659 * FreeBSD¿¡¼ CARP¿Í HAProxy·Î ÀÌÁßÈ(HA) ±¸¼º (±Û ÁÁÀºÁøÈ£, 2015.2) http://coffeenix.net/board_view.php?bd_code=1770 |
![]() |