안녕하세요 늘 많은 도움을 받고 있습니다
오늘도 고수님들의 고견을 기다립니다
사내에서 haproxy를 이용하여 로드밸런싱을 하고 있는데
이번에 keepalived라는 서비스 모듈을 통해 haproxy 이중화를 구성하여 테스트 중에 있습니다
원래는 외부에서 직접 도메인을 통하면 로드밸런서의 공인IP로 바로 들어오도록 DNS를 설정하여
서비스 접근 시에 다이렉트로 로드밸런서로 들어오게 되어있는데요
문제는 keepalived도 그렇고, haproxy에서 지원하는 haproxy enterprise 버전의 haproxy ha도 그렇고
이중화를 위해 컨택 포인트가 되는 하나의 가상 사설 IP를 지정하여 그 쪽으로 들어오는 트래픽을 분산하도록 되어있는데,
이렇게 되면 외부에서 이 IP를 찾을 수 없으니 NAT (포트포워딩) 을 해야하는데,
이럴 경우 몇가지 문제가 있습니다.
혹시 포트포워딩 말고, 다른 방법이 있을까요?
이중화를 위해 컨택 포인트가 되는 하나의 가상 사설 IP를 지정하는게 아니라,
공인 IP를 넣을 수 있으면 아주 간단한 일인데, 뭐 방법이 없을까요?
±×·± ´ç¿¬ÇÑ »ç½ÇÀ» ¸ô¶ó¼ Áú¹® µå¸®´Â°Ô ¾Æ´Ñµ¥¿ä... ¤Ì¤Ì
Áú¹®¸¸ Á¦´ë·Î Àо ´ç¿¬È÷ ¾Ë°í ÀÖ´Ù´Â °É ¾Ë ¼ö ÀÖ´Â
´äº¯Àº.....
NAT Çϱ⠽ÈÀ¸¸é DMZ¿¡ ¹èÄ¡½ÃÅ°°í ³»ºÎ¸Á ÀÌ´õ³Ý Çϳª ´õ Çؼ ³»ºÎ·Î Åë½ÅÇÏ°Ô ÇÏ¸é ±×¸¸ÀÔ´Ï´Ù.
±×·¯´Ï±î haproxy ¸¦ ÀÌÁßÈ ÇÏ°í ǵ¥ DMZ¿Í NAT È¥µ¿µÇ¼ ±×·¯´Â°ÅÀÚ³ª¿ä?
Áú¹®ÀÌ ³Ê¹« ÀÌ»óÇÏ´Ï±î ¿Ö Àú·±°É °í¹ÎÇÏÁö? À̸®µÇ´Â°Å¿¡¿ä ±×·¯´Ï±î ¿øÇÏÁö ¾Ê´Â ´äº¯¸¸ »ý±â´Â°Å°í
DMZ¶û NAT¶û È¥µ¿ µÇ´Â°Ô ¾Æ´Ï°í¿ä
°¡»ó IP¸¦ NATÇؼ Á¢±ÙÇÏ´Â ¹æ¹ý ¸»°í
±× °¡»ó IP¸¦ °øÀÎ IP·Î ¸ÅÇÎÇѴٰųªÇؼ
¿ÜºÎ¿¡¼ ´ÙÀÌ·ºÆ®·Î °øÀÎÀ» ¶§¸®°í Á¢±ÙÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ È¤½Ã ÀÖÀ»±î¸¦ ¹°¾îº»°Ì´Ï´Ù
ÀÌÁßÈ´Â ÀÌ¹Ì µÇ¾ú´Âµ¥, ¼Ò½º IP º¯Á¶µÇ´Â ºÎºÐÀ̳ª Æ®·¡ÇÈ °°Àº ¹®Á¦°¡ ÀÖ¾î¼ °í¹ÎÇÏ´Â °Å°í¿ä
ÀÌÇظ¦ ¸øÇÏ¸é ´äÀ» ´ÞÁö¸¦ ¸¶¼¼¿ä
Áú¹®À» °³¶±°°ÀÌ ÇÏ´Ï ±×·±´äº¯ ´Ù´Â°Å°í ÀÌÇظ¦ ¸øÇÏ´Â°Ô ¾Æ´Ï¶ó
ÀÌÇظ¦ ¸øÇÏ´Â°Ç Áú¹®ÀÚ¿¡¿ä Á»´õ ÇÁ·Ï½Ã °øºÎÇÏ°í Áú¹®¿Ã¸®¼¼¿ä
±×°ÉÀ§ÇؼÀÖ´Â°Ô send proxy v2µµÀÖ°í
x-forwareded Çì´õ ¶Ç´Â Ä¿½ºÅÒ Çì´õ¸¦ ÀÌ¿ëÇѹæ¹ýÀÌ ÀÖ±¸¿ä
tomcat was¹æ½Ä¿¡¼± ¸®¹ö½º ÇÁ·Ï½Ã, ¸®´ÙÀÌ·ºÆ® ÇÁ·Ï½Ã µÎ¹æ½Ä´Ù ¸¹ÀÌ ¾²±â ¶§¹®¿¡ ¾ÆÀÌÇÇ º¯Á¶´Â ¹®Á¦ »çÇ×ÀÌ ¾Æ´Õ´Ï´Ù.
±×·² °æ¿ì Á÷Á¢ ip·Î µé¾î¿À´Â°Ç ÀÌÁßȳª haproxy·Î °®´Â ÀÌÁ¡À» Æ÷±âÇؾßÁÒ.
IP ¹®Á¦´Â À§ÀÇ ´ñ±Û¿¡¼ ¾ê±âÇÑ °Íó·³ Çì´õ·Î µÎ¸é ÇØ°áµË´Ï´Ù.
ƯÈ÷³ª, Áö±Ý°°ÀÌ ±¸¼º¿¡ ´ëÇÑ Áú¹®À» ÇϽǶ§´Â °£·«ÇÏ°Ô ±¸¼º ±×¸²±îÁö ±×·ÁÁÖ½Ã¸é ºÒÇÊ¿äÇÑ ¿ÀÇØ»óȲÀÌ ´ú ÇÕ´Ï´Ù.
and ¿©±â¿¡¼ ´äÀ» Áֽô ºÐµéÀº ÇÑ°¡ÇÏ°Ô °Ô½Ã¹°¿¡ ´ä ´Þ¾Æ³õÀ¸·Á°í °è½Ã´Â ºÐµéÀº ¾Æ´Õ´Ï´Ù. »óÈ£°£¿¡ Àû´çÇÑ ¿¹ÀǴ ì°Ü¾ß ÇÑ´Ù°í º¾´Ï´Ù.
---
Áö±Ý ¼³¸íÇϽŠ³»¿ëÀ¸·Î´Â ÀÌÇØÇϱâ Èûµç ºÎºÐÀε¥ ¸î°¡Áö È®ÀÎÇغ¾´Ï´Ù.
1. ÇöÀç HAproxy °¡ ¼³Ä¡µÈ Àåºñ¿¡´Â °øÀÎIP °¡ ºÎ¿©µÇ¾î ÀÖ³ª¿ä? (NAT µÇÁö ¾ÊÀº)
2. Keepalived ´Â HAproxy °¡ ¼³Ä¡µÈ Àåºñ¿¡ °°ÀÌ ¼³Ä¡µÇ¾î ÀÖ³ª¿ä?
3. Keepalived ÀÇ µ¿ÀÛÀº ´Ü¼øÈ÷ Virtual IP ¸¸À» °ü¸®ÇÏ´Â ¿ëµµÀΰ¡¿ä? ¾Æ´Ï¸é ºÎÇÏ ºÐ»êÀ» ÇÏ°Ô µÇ¾î ÀÖ³ª¿ä?
ÀÌ·¸°Ô µÇ¸é ¿ÜºÎ¿¡¼ ÀÌ IP¸¦ ãÀ» ¼ö ¾øÀ¸´Ï NAT (Æ÷Æ®Æ÷¿öµù) À» ÇؾßÇϴµ¥,
==> L4 ½ºÀ§Ä¡¿¡¼ VIP·Î ¹Þ¾Æ¼ µé¾î ¿À´Â°ÍÀ» L1, L2 ·Î Active Standby ·Î ó¸®Çϴµ¥¿ä.. L1¿¡ ¸ô¾ÆÁÖ°í.. L1Á×À¸¸é L2·Î..
Active-Active ÇÏ¸é µÑ´Ù °ñ°í·ç ÁÖ°í¿ä..
Default (Active) °¡ ¹Þ¾Æ¾ß µÇ´Âµ¥
Áú¹® : VIP¸¦ ³»ºÎIP´ë¿ªÀÌ ¾Æ´Ñ °øÀÎIP·Î »ç¿ëÇÒ¼ö ÀÖ³ª¿ä?
ÀÏ´Ü ±¸¼ºÀÌ °¡´ÉÀº ÇÏ´Ù? ÀÔ´Ï´Ù.
ÇÏÁö¸¸ Àß »ý°¢Çغ¸¼Å¾ß ÇÕ´Ï´Ù.
VIP¸¦ °øÀÎÀ¸·Î ÇÑ´Ù°í ÇßÀ»¶§ 10.10.10.10 À̶ó°í °¡Á¤ÇÕ´Ï´Ù.
µÎ ÇÁ·Ï½Ã ¼¹öÀÇ ³»ºÎIP´Â 192.168.0.11, 12¹øÀ̶ó°í ÇÕ´Ï´Ù.
active#1 ¼¹öÀÇ ¹ÙÀεù ÁÖ¼Ò
eth0 : 192.168.0.11 ¿¡
À§ ¾ÆÀÌÇÇ¿¡ vip(10.10.10.10)°¡ alias·Î ÀÔÇôÁý´Ï´Ù.
Áï eth0À¸·Î 192´ë¿ª°ú 10 ´ë¿ªÀÌ µÑ´Ù Åë½ÅÀÌ µÇ´Â ȯ°æÀ̶ó¸é °¡´ÉÇÒµí ½Í½À´Ï´Ù.
¿©±â¼ Åë½ÅÀÌ µÈ´Ù´Â°ÍÀº Á¤»óÀûÀÎ ¶ó¿ìÆÃÀÌ µÇ¾î¾ß ÇÑ´Ù´Â ¾ê±âÀÔ´Ï´Ù.
ÇÏÁö¸¸ ¾Æ½Ã´Ù½ÃÇÇ vip°¡ ÀÔÇôÁú¶§ µû·Î gateway¸¦ ÁöÁ¤ÇÏÁö ¸øÇÏ´Â °É·Î ¾Ë°í ÀÖ½À´Ï´Ù.
±×·¯¹Ç·Î ¼³Á¤Àº °¡´ÉÇÏÁö¸¸ ¶ó¿ìÆÃÀÌ µÇÁö ¾Ê¾Æ Åë½ÅÀÌ ¾ÈµÉ°Í °°½À´Ï´Ù.
Àúµµ µû·Î Çغ¸Áø ¾Ê¾ÒÁö¸¸ Áö±Ý »ý°¢À¸·Î´Â ÀÌ·¸½À´Ï´Ù.
Ãß°¡ÀûÀ¸·Î µÎ haproxy ¼¹ö¿¡ °¢°¢ °øÀξÆÀÌÇǸ¦ ¾²½Ç¼ö ÀÖÀ¸¸é vipµµ °øÀξÆÀÌÇÇ·Î °¡´ÉÇÕ´Ï´Ù.
VIP ¸¦ °¡»óÀÇ »ç¼³ ¾ÆÀÌÇÇ·Î Çؼ®À» ÇϽŵí Çϳ׿ä. ÀÌ°Ô ¿À·ùÀεí
VIP ¸¦ °¡»ó ¾ÆÀÌÇǶó°í Çؼ®ÇÏ¸é °øÀÎÀÌµç »ç¼³ÀÌµç ¾Æ¹«°Å³ª ³ÖÀ¸½Ã¸éµÇÁÒ.
ÀÌ·¯¸é ³¡À̱ä Çѵ¥
±×·±µ¥ »ç³»¿¡¼ ¾´´Ù°í ÇϼÌÀ¸´Ï »ç¼³ IP ·Î ¼³Á¤ÇÏ°í ½ÍÀ¸¸é,
±×·¯¸é DNSÀ» ÀÚü ¼¹ö·Î ±¸ÃàÇؼ »ç¼³ µµ¸ÞÀÎ ¼¹ö·Î ±¸ÃàÇÏ¿© »ç¼³ IP¸¦ µµ¸ÞÀÎÀ¸·Î ¿¬°áÇÏ½Ã¸é µÇ°Ú³×¿ä. BIND 9·Î ½±°Ô ¸¸µé¾î º¸¾Æ¿ä
server-world ¸¦ Âü°í ÇÏ¸é ±Ý¹æ ¸¸µì´Ï´Ù.
±âº»ÀÌ µÇ¸ÔÁö¾ÊÀº »ç¶÷Àº °Ô½ÃÆÇ "¾È¾²¸é" ÁÁ°Ú³×¿ä.
µ·³»°í ¾²´Â ÇØ°á¹æÀ足É
¾îÁÝÀÝÀº°ÍµéÀÌ ²À ƽƽ´ë´õ¶ó±¸¿ä.
¸ð¸£¸é ¾Ë°Ô ¼³¸íÇØÁÖ¸é µÉÀÏÀ» Âì ¤»¤»