DHCP 상태에서의 안정적 2중 네트워크 이용

하나로 E-Valley, KT의 엔토피아, 파워콤 XPeed
전부 100Mbps의 회선들이다.
실제로 내가 관리하던 어떤 사이트는 트래픽 비용을 줄이기 위해, 3회선을 안정적으로 업믹스하여 사용했다.
이를 위해서는 많은 준비와 작업이 필요로 한다.
다만 그 기술을 모두 공개할수는 없으나 일부 라우팅관련 정보들만 제공한다.

첫째로는 network-script의 ifcfg 들을 dhcp로 설정한다.
회선이 3개니 eth0, eth1, eth2 를 dhcp로 맞추어야 한다.

둘째로는 ip route를 이용하여 인입된 회선자체를 개별적으로 이용하도록 만들어야 한다.

세번째는 dhcp를 받았을떄 이 IP에 대한 정보를 어딘가로 전송하거나, DNS에 매핑하여야 한다.
DNS에 매핑하는 이유는 LVS가 이를 이용할 수 있도록 하는것에 목적이 있다.
위 단계는 매우 복잡하며 일반적으로 진행하기가 매우 힘들다.

그러므로 로드밸런싱은 포기하더라도 RR DNS만으로도 운영할 수 있는 방법중 핵심적인 부분만 설명한다.
IP가 1.2.3.4 와 3.4.5.6 과 6.7.8.9 3개가 있다고 가정하자. 그중에 리눅스 머신이 기본적으로 사용할 IP는
1.2.3.4 고 나머지는 업밴드에 대한 라우팅을 지정해야한다.
etc/iproute2 의 routing table에 미리 테이블을 만들어야한다.

퀵리퍼런스다. 하지만 모든정보를 퀵리퍼런스로 만들지 않는다. 삽질없이 얻을 수 있는 댓가는 없다.

테이블명은 주회선을 real1, 보조회선을 real2 로 명명한다.
물론 주회선은 dhcp가 up되면서 게이트웨이가 잡히므로 별다른 설정이 필요없다
2,3번회선에 대한 설정이다.


ip rule del from 3.4.5.6 table real1
ip rule add from 3.4.5.6 table real1
ip route add 3.4.5.0/24 dev eth1 src 3.4.5.6 table real1     #이 회선을 통한 데이터를 eth1로 라우팅설정
ip route add 127.0.0.0/8 dev lo table real1  #로컬디버이스
ip route add default via 3.4.5.1 dev eth1 table real1  #이 회선이 나갈떄의 게이트웨이 IP

ip rule del from 6.7.8.9 table real2
ip rule add from 6.7.8.9 table real2
ip route add 6.7.8.0/24 dev eth2 src 6.7.8.9 table real2
ip route add 127.0.0.0/8 dev lo table real2
ip route add default via 6.7.8.1 dev eth2 table real2 #위와 동일하다

ip route flush cache #캐시를 날린다.

자 문제는 여기서 이 명령을 실행하기에 앞서 IP가 DHCP로 랜덤하게 들어온다는 사실을 알아야한다.
따라서 필요한 정보는 내가 받은 IP와 게이트웨이정도다.
이를 해결하려면? dhclient-script 를 뜯어고쳐야 한다는 말이된다.
dhclient가 dhcp를 통해 ip를 받을때 해당 IP에 정보를 덧씌워 고정시켜야 한다.
스크립 삽질이 필요한 시점이나 스크립트 공개는 애석하게도 하지 않는다.
$router 와 $new_subnet_mask $new_ip_address 등을 적절히 이용하라
쉘스크립조차 손을 못대겠다면 안정적인 회선은 꿈꾸지 못한다.

둘째로 제작하여야 하는 스크립트들이 있다.
바로 DNS를 자동으로 업데이트 시키기 위해 NSUPDATE 사용법 을 참조해서 ip를 라우팅 테이블에 고정하면서
해당 IP를 머신에 알려야 한다.
그다지 어려운 부분은 아니다 다만 최근에는 dns업데이트를 위해 보안키를 생성하고 이를 이용하여야 한다.
설명서를 잘 읽어보고 설정하면된다.
** DNS를 자동으로 업데이트 해주는 시스템, 웹상에서 DNS를 관리하는 솔루션등이 이미 제작되어 실서비스에 이용되고 있다. 가격은 매우 비싸다. 업데이트와 롤백등을 지원하고 있다. 구매문의는 메일로

net.ipv4.ip_forward 를 on으로 해야하는것을 잊으면 안된다.


셋째로는 이상태에서 LVS를 구축해야한다.
왜냐? DNS RR로 신나게 운영중인데 네트웍이 단절되거나 하면 사용자에게는 페이지가 뜨지 않는다는 사실이다.
RR은 fail over에 대한 수단이 전혀 없다.

서로 다른 네트워크 어드레스에 있는것을 어떻게 로드밸런싱을 해야하는가?
Direct Routing 기법을 이용하면된다. 이를 위한 네트워크 설정과 라우팅 테이블 설정을 조금 해야한다.
하지만 안정적으로 동.작.한다
그리고 로드밸런싱을 이용할 경우 굳이 80번 포트가 아니어도 데이터의 송수신이 가능하다.
로드밸런서는 단지 접속만 처리해줄뿐이므로 포트변경등은 간단히 가능하다.
또한 이를 위한 편법으로 SSH 터널링의 방법을 애용하라. 데이터 송수신 포트를 터널링하란 소리는 아니다.
잘생각해보면 뭘 의미하는지 알게될것이다.
그러기 위해 위의 DNS 업데이트 시스템을 필수로 설정하여야 한다.
DNS업데이트는 단순히 rr만을 목적으로 한것이 아닌 로드밸런서의 real server를 도메인으로 설정하여 갱신되도록 함에 있다.

위의 과정을 모두 끝냈다면, 300Mbps의 회선이 10만원도 안되는 가격에 내손안에 들어오게 된다.
이에 대한 질문은 사절이다. 위의 설명은 실제 구축에 있어 많이 부족하다. 하지만 실서비스 구축에 있어
이것 이상의 설명은 필요 없다. 부딪혀라. 그리고 다시 읽어보고 또다시 읽어봐라
이 작업은 매우 힘들고, 많은 시행착오를 격게 만든다.

기억할것은 이러한 서버 운영으로 인해 주변에 피해가 된다는 사실을 잊지마라.
내가 모든 상세정보를 여기 안적는 이유는 그것이다.

실제로 이러한 설정으로 약 2년이란 기간동안 어떤 사이트는 운영되어 왔다.
그 이전 dgtalx는 02년도부터 이러한 설정으로 지금까지 운영되어오고 있다.
(파워서플라이가 꼴아서 자주 죽기는 하지만 네트웍과 관련한 문제는 발생한적이 없다)

스크랩, 퍼가기 금지다 -_-


2006 made by C.L All right Reserved.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by LeCieL

2006/10/16 04:05 2006/10/16 04:05
, , ,
Response
No Trackback , 2 Comments
RSS :
http://cl.dgtalx.net/rss/response/25


Archives

Calendar

«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30