[완료] LVS 접속 문제.
안녕하십니까. 맨날 눈팅만 하다가 처음으로 질문을 하게 되었습니다.
현재 구성하려고 하는 시스템은 로드밸렁신 서버 한대와 그에 따른 리얼 서버 2대(혹은 여러대)
를 사용 하여 LVS 시스템을 구축 하려고 합니다.
그래서 관련 문서들을 읽어보고 DIRECT ROUTING 방식으로 구성을 하였습니다.
예를 들면 아래와 같습니다.
로드밸런스 서버 : eth0 111.111.111.111(실제IP)
eth0:0 111.111.111.100(가상IP)
리얼 서버1 : eth0 111.111.111.112(실제IP)
eth0:0 111.111.111.100(가상IP)
리얼 서버2 : eth0 111.111.111.113(실제IP)
eth0:0 111.111.111.100(가상IP)
그리고 ipvsadm은 각각 리얼서버 1 2로 다이렉트 라우팅이 되도록
설정을 하였습니다. 포트는 23(telnet) 을 실험적으로 설정하였습니다.
문제는 다음과 같습니다. 위의 시스템으로 클라이언트 PC(이름은 편의상 A라고
하겠습니다)가 접속을 할떄 111.111.111.100 으로 접속을 하게 되면 문제
없이 리얼서버로 접속을 하게 되는데 다른 터미널을 띄워서 다시 접속을 하게
되면 스케쥴링 방식과는 상관 없이 최초 접속된 리얼서버로 다시 연결이 되게
됩니다. 즉 A 클라이언트 PC가 리얼서버1에 접속이 되어 있으면 A에서 발생한
다른 연결들도 전부 리얼서버1로 접속이 되는 문제입니다.
A클라이언트가 리얼서버1에 접속에 있는 상태에서 다른 클라이언트가 접속을 하게
되면 정산적으로 리얼서버2로 연결이 되는데 A에서 한번더 접속을 하게 되면 리얼서버1
로 다시 접속이 되는 문제 입니다.
한 클라이언트에서 접속할때마다 다른서버로 나누어지게 하는 방법이 없는지 궁금하여
이렇게 질문을 올리게 되었습니다.
장문이라 송구스럽지만 해법을 알고계신분들은 읽어보시고 도움좀 부탁드립니다.
persistent 설정이 되어
persistent 설정이 되어 있는거 아닌지 확인해 보세요.
또는 접속자가 없어서 계속 1번으로 접속되는 수도 있으니
wrr 같은 라운도 로빈 방식으로 테스트 해보시고요.
http://star4u.org
http://mirror.star4u.org
따로 persistent 을 잡아주지 않았습니다.
우선 답변 감사합니다.
persistent 설정을 따로 잡아주진 않았는데 ipvsadm 설정을 할때 아래의
명령을 사용 하였습니다
ipvsadm -A -t xxx.xxx.xxx.xxx:port(가상IP) -s wrr
help를 보니 -p 옵션이 있어야 persistent 옵션이 들어가는거 같은데 넣지 않으면 디폴트로 들어가는
것인가요?
자문 자답 이지만...
문제의 원인을 찾았습니다.
arp 때문이였습니다. 클라이언트에 가상IP의 mac이 저장되어있어서
가상ip로 접속하면 자동으로 한번 연결된 리얼서버로 연결이 되는듯 합니다.
실재로 mac을 지우면서 해보니 로드밸런싱이 정상적으로 작동을 하는군요.
혼자 헛짓한거 같아서 부끄럽습니다.
ARP문제 때문에
ARP문제 때문에 생기는 현상을 겪었었는데 답변하면서 깜빡했네요 ^^;;
리얼서버에서 가상IP에 대한 ARP요청을 차단해주셔야 이후에도 문제가 생기지 않을겁니다.
RHEL(CentOS)는 http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Virtual_Server_Administration/s1-lvs-direct-VSA.html#s2-lvs-direct-arptables-VSA 를 보시면 됩니다.
레드햇 사이트에는 아래처럼 되어 있는데
실제로는 아래처럼 해야 제대로 동작합니다.
http://star4u.org
http://mirror.star4u.org
arp hidden
arp 차단방법떄문에 이것저것 해보다가 안되어서 힘들었는데
답변감사합니다. 이것으로 해보겠습니다.
댓글 달기