HAProxy·Î ·Îµå¹ë·±½Ì(LB, ÀÌÁßÈ) ±¸¼º | ÀÛ¼ºÀÏ : 2015/03/24 18:39 |
Á¶È¸¼ö : 31437 |
Á¦ ¸ñ : 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 |
Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ / URL : http://coffeenix.net/board_view.php?bd_code=1771 |