 |
 |
 |
 |
|
>> Read No. 2221 article |
|
|
초보가 해본 LVS 터널링...^^
|
 |
 |
 |
 |

등록 2002-02-15 01:23:00
조회 5
이름 조경희

|
 |
 |
<pre>
메일 주시면 혹시나 제가 알고 있는 내용이면 답글해드께요..
제가 설정해본 LVS입니다.
100% 정확하진 모르겠어요..정말 1원짜리 TIP같네요..
또한 내용이 틀릴수도 있으니 양해 바랍니다. 저도 초보라... )/
주 LVS서버는 대전에 있는 IT회사 내부 서버를 사용했으며, REAL서버는 IDC센터에 있는 Linux서
버를 사용함. 주 LVS서버에 커널 버전은 [2.4.7-10 #1](REDHAT)이였으며, 커널컴파일을 하지 않았
습니다. 사용한 커널안에 이미 ipip와 ipvs에 대한 모듈이 있어 재 컴파일에 필요성을 느끼지
못했습니다. 주로 참고한 문서는 KLDP-LVS문서 이재현님이 올려주신 LVS 구축기(CLUSTERKOREA)를
보고 성공 했습니다. REAL서버에 커널버전은 각각 [2.4.2-2 #1](REDHAT)와 [2.4.2-2wl](WOWLINUX)였습니
다. 아이피 터널링 방식은 패킷에 흐름만 바꾸어 주는 형태로 이해하고 작업.
흐름을 조정해 주는 도구가 IPVSADM이구요 IPVSADM은 커널에 패치를 적용한 다음 IPVSADM만 바이
너리로 만듭니다. 커널패치에 대한부분은 이재현님이 올린 자료를 보시면 알수 있습니다.
컴파일이 끝난후 전 새로운 이미지를 올리지 않고 이미 깔려있는 커널 그대로 사용했습니
다. 간단하게 스토리를 엮어보면 이렇습니다.
--->(internet)--->(LVS SERVER)--->(LVS IP) ----> 대전에 LVS서버
(IPVSADM)----> 1차 부하분산 서버(서울)
(IPVSADM)----> 2차 부하분산 서버(서울)
- 이곳에서 기술한 아이피는 모두 가상입니다.
1. 커널을 받아서 설치함. (ftp://linux.sarang.net) 2. 받은 커널에 IPVSADM에 패치를 적용한다음 커
널컴파일. cd /usr/src/linux
cat /lvs/linux_kernel_ksyms_c.diff | patch -p1
cat /lvs/linux_net_Makefile.diff | patch -p1
cat /lvs/linux_net_ipv4_Config_in.diff | patch -p1
cat /lvs/linux_ip_fw_compat_c.diff | patch -p1
cp -rp /lvs/ipvs net/ipv4
mv net/ipv4/ipvs/linux_net_ipv4_ipvs_Makefile net/ipv4/ipvs/Makefile
make menuconfig
3. 컴파일한 커널 /usr/src/linux/net/ipv4/ipvs/ipvsadm이안에 있는 IPVSADM(make)만 뽑아서 SBIN으로 복
사 했습니다. 4. 이미 사용하고 있는 커널에 모듈을 올림.
- insmod ipvs
- insmod ipvs스케줄링 (IPVSADM에서 직접 기술해도 모듈은 올라갑니다. 만약 그렇지 않으면
구축 불가능할꺼예요..) 5. IP셋팅.
- LVS로드발란스 서버
- ifconfig eth0 xxx.180.yyy.1 netmask 255.255.255.0 broadcast xxx.180.yyy.255 up
- route add -net xxx.180.yyy.0 netmask 255.255.255.0 dev eth0
- ifconfig eth0:0 xxx.180.yyy.2 netmask 255.255.255.0 broadcast xxx.180.yyy.2 up
- route add -host xxx.180.yyy.2 dev eth0:0
- echo 1 > /proc/sys/net/ip_forward
- LVS REAL 서버
- ifconfig tunl0 xxx.180.yyy.2 netmask 255.255.255.255 broadcast xxx.180.yyy.2 up 1차
- ifconfig tunl0 xxx.180.yyy.2 netmask 255.255.255.255 broadcast xxx.180.yyy.2 up 2차
7. IPVSADM셋팅.
- ipvsadm -A -t xxx.180.yyy.2:80 -s rr
- ipvsadm -a -t xxx.180.yyy.2:80 -r xxx.239.xxx.100 -i
- ipvsadm -a -t xxx.180.yyy.2:80 -r xxx.53.129.107 -i
- ipvsadm -a -t xxx.180.yyy.2:80 -r xxx.239.xxx.200 -i
8. 셋팅 확인.(스케줄링과 포트 그리고 주소가 정확한지 확인 하세요)
- IP Virtual Server version 0.8.1 (size=65536)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP xxx.180.yyy.2:http rr
- -> xxx.239.121.200:http Tunnel 1 0 0
- -> 218.53.129.107:http Tunnel 1 0 0
- -> xxx.239.121.100:http Tunnel 1 0 0
9. 네임 서버에서 xxx.180.yyy.1에 해당하는 www도메인을 만들어 준후 www.domain.com과 같이 아이
피접속. 0. netstat -an이나 ipvsadm -Lcn으로 접속에 대한 상세한 부분을 확인해보세요.
tunl0에 리소스를 사용할려면 Redhat 7.1이상에 LVS모듈이 올라간 커널에 ipip.o모듈을 올린다.
(ifconfig tunl0 LVS_IP(구축시 사용한 아이피) netmask 255.255.255.255 broadcast LVS_IP up)
네임서버에서 처리하는 방법.(서버에 효율은 모르겠어요. 로드를 할수 없으니... )
www 180 IN A xxx.239.121.1
180 IN A xxx.239.121.2
180 IN A xxx.239.121.3
LVS server route infomation
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
xxx.180.yyy.2 * 255.255.255.255 UH 0 0 0 eth0
xxx.180.yyy.0 * 255.255.255.0 U 0 0 0 eth0
127. .0 * 255. .0 U 0 0 0 lo
default xxx.180.yyy.xxx .0.0 UG 0 0 0 eth0
route add -host xxx.180.yyy.2 dev eth0:0
echo 1 > /proc/sys/net/ip_forward
Realserver route information
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
xxx.239.yyy.1 * 255.255.255.128 U 0 0 0 eth0
127. .0 * 255. .0 U 0 0 0 lo
default xxx.239.yyy.1 .0.0 UG 0 0 0 eth0
LVS server ipvsadm infomation
ipvsadm setting
ipvsadm -A -t xxx.180.yyy.2:80 -s rr(라운드로빈방식) (DNS에 미러링 스케줄링)
ipvsadm -a -t xxx.180.yyy.2:80 -r xxx.239.121.100 -i
ipvsadm -a -t xxx.180.yyy.2:80 -r 218.53.129.107 -i
ipvsadm -a -t xxx.180.yyy.2:80 -r xxx.239.121.200 -i
ipvsadm
IP Virtual Server version 0.8.1 (size=65536) -> 이 싸이즈에 대해서 아시는분 댓글좀 달아 주세요
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP xxx.180.yyy.2:http rr
-> xxx.239.121.200:http Tunnel 1 0 0
-> 218.53.129.107:http Tunnel 1 0 0
-> xxx.239.121.100:http Tunnel 1 0 0
ipvsadm -Lcn(현재상항)
IPVS connection entries
pro expire state source virtual destination
TCP 01:41.38 FIN_WAIT xxx.239.yyy.160:38478 xxx.180.yyy.2:80 xxx.239.yyy.100:80
TCP 01:44.31 FIN_WAIT xxx.239.yyy.160:38479 xxx.180.yyy.2:80 xxx.239.yyy.200:80
TCP 01:38.46 FIN_WAIT xxx.239.yyy.160:38477 xxx.180.yyy.2:80 xxx.53.yyy.107:80
Real server tunl0 setting(터널링아이피셋팅)
ifconfig tunl0 xxx.180.yyy.2 netmask 255.255.255.255 broadcast xxx.180.yyy.2 up 1차
ifconfig tunl0 xxx.180.yyy.2 netmask 255.255.255.255 broadcast xxx.180.yyy.2 up 2차
ifconfig tunl0 xxx.180.yyy.2 netmask 255.255.255.255 broadcast xxx.180.yyy.2 up 3차
tunl0 Link encap:IPIP Tunnel HWaddr
inet addr:xxx.180.yyy.200 Mask:255.255.255.255
UP RUNNING NOARP MTU:1480 Metric:1
RX packets:24 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
테스트
저는 다른 지역에 리눅스서버에서 Lynx로 테스트.
lynx xxx.180.yyy.? 가상 아이피 했을경우 각각 터널링을 통해 다른 페이지를 관람할수 있으면
성공이다. 모든 여러분이 성공 하시길.......
해보니까 별건 아닌거 같애염...개념이 무척 어려웠쑴다..
그럼..
sysop at netizen.ne.kr 조경희
</pre>
|
|
|
페이지로딩: [ 0.48 초 ]
작업시간: [ 0.01 초 ]
|
|
 |
 |
![[TOP]](/images/color///top.gif) 
|
 |
 |
 |
 |
|
|