[클러스터] 레드헷 9에서의 LVS 구축기-NAT방식
Linux Virtual Server 설정하기 (Redhat Linux 9에서 LVS구축해보기)
앞장에서 설명했듯이 Linux Virtual Server를 구성하는 방법에는 크게 3가지 방식이 있다. 이중에서 가장 구현하기 쉽다고 표현될수 있는것이 NAT방식이다.
사실 NAT방식은 웹서버가 10대안으로 구성되는 소형,중형 웹사이트에서 추천되는 방식이다. 그 이유는 Director(부하분산기)가 들어오고 나가는 모든 패킷을 처리하기 때문에 웹서버가 많아지는 경우 부하분산기에 부하가 걸리기 때문이다.
하지만 웹서버 개수가 10개 안이라면 NAT방식을 사용하여도 무방하다. 그리고 설정이 간단하기 때문에 편리하게 설정하고 테스트
해볼수 있다.
그럼 LVS설정에 들어가기전에 작업순서를 먼저 살펴보고 그 작업순서대로 설정을 해보기로 하자.
작업순서는 아래와 같다.
(1) Load Balance 서버의 커널 업그레이드
(2) Load Balance 서버에 IPVS 모듈 설치
(3) Load Balance 서버에 IPVSADM 모듈 설치
(4) Load Balance 서버에 IPVSADM 설정하기
(5) Real Server 들 설정하기
LVS를 설치해볼 서버들의 구성에 대해서 살펴보자. 이 구성은 매우 중요하므로 자신이 구성하고자 하는 것과 잘 비교하기 바란다.
[그림 LVS 구성도]
주의 사항!! 위 그림에 나와있는 아이피주소는 필자도 전혀 모르는 아이피이므로 괜히 접근하지 않도록 하자.. 필자가 대충 쓴것이다.
위 구성도에서 보는바와 같이 구성은 매우 간단하게 이루어져 있다. 여기서 사용자의 부라우져에서 입력하는 최종 주소는 Load Balancer 서버의
Virtual IP임에 주의해야 한다. 즉, 서비스를 하는 대외적으로 알려져야할 아이피가 Virtual IP가 됨에 주의하도록 하자. 도메인도 이 아이피에 매핑을 시켜두어야 함은 물론이다. 그럼 서비스할 도메인을 www.javalinux.co.kr 이라고 정했다면 이 도메인에 매핑될 아이피는 무엇일까요????
당근 위그림에서 보는 바와 같이 211.98.12.51 을 매핑시켜두면 된다~ 이제 감이 잡히시지요?
로드밸런싱을 해주는 서버 1대와 RealServer라고 표신된 서버는 실제 웹서버들이다. 이 두개의 Real Server들은 동일한 페이지를 서비스하는 웹서버 여야 함은 두말하면 잔소리다. 웹페이지 개발자들은 개발모듈을 두개의 서버에 업로드를 해주거나 아니면 rsync나 기타등등의 툴을 이용하여 두개의 개발된 모듈이 동일하도록 잘 신경을 써줘야한다. 또 이 부분에 의문이 가는 분들은 필자가 시간이 나는대로 다음 강좌에 올리도록 하겠다.
(그렇다고 다음 강좌까지 기다리는 무모한 분은 없길 바란다. 바로바로 찾아보도록 하자^^)
자 이제 LVS를 구성해보기 위해서 기초분석은 어느정도 완료된듯하다 그럼 본격적으로 까라보자.
다시 작업순서를 열거해보면
(1) Load Balance 서버의 커널 업그레이드
(2) Load Balance 서버에 IPVS 모듈 설치
(3) Load Balance 서버에 IPVSADM 모듈 설치
(4) Load Balance 서버에 IPVSADM 설정하기
(5) Real Server 들 설정하기
대개 LVS에 관련된 문서들이 오래된 버젼이라 커널 업그레이드 뒤에 커널 히든패치 뒤에 IPVS설치 이렇게 이루어지고 있으나….
이 문서에서는 리눅스 커널 2.4.23을 기준으로 설명을 하겠다. 레드햇 리눅스 9을 설치를 하게되면 커널 2.4.18인가? 정확히 기억이안나지만…
그 커널을 2.4.23 이상으로 업그레이드 시켜주면 2.4.23부터는 IPVS가 커널내부에 포함이 되어버렸기 때문에 IPVS를 별도로 설치할 필요가 없게된다.
자 그럼 필자의 리눅스 시스템에서 작업한 내용을 차례대로 살펴보자.
(1) Load Balance 서버의 커널 업그레이드
Redhat 사이트에서 커널소스묶음을 다운로드 받도록 한다. 여기서 사용한 버젼은 linux-2.4.23.tar.bz2 파일이다.
다운받았으면 로드밸런스서버의 적당한 디렉토리에 업로드를 한뒤 커널소스파일을 /usr/src/ 디렉토리로 복사를 한다.
이 작업은 당연히 root로 해야 될 것이다. bzip2로 압축풀고 tar로 소스를 꺼내도록 하자.
> cp linux-2.4.23.tar.bz2 /usr/src/
> bzip2 -d linux-2.4.23.tar.bz2
> tar xvf linux-2.4.23.tar
심볼릭 링크를 이용해서 linux-2.4.23 이라고 압출풀려서 생긴 디렉토리를 편하게 linux로 링크걸자.
> ln -s linux-2.4.23 linux
자 그럼 앞으로 새로운 커널 디렉토리는 /usr/src/linux가 될것이다.
그런 다음 /usr/include 디렉토리로 이동하여 아래 작업들을 해주도록 하자.
[root@lvs src]# cd /usr/include
[root@lvs include]#
[root@lvs include]#
[root@lvs include]# mv asm asm.old
[root@lvs include]# mv linux linux.old
[root@lvs include]# ln -s /usr/src/linux/include/asm-i386 asm
[root@lvs include]# ln -s /usr/src/linux/include/asm-generic asm-generic
[root@lvs include]# ln -s /usr/src/linux/include/linux linux
[root@lvs include]# cd /usr/src/linux
[root@lvs linux]# cp /boot/config-2.4.20-8smp /usr/src/linux/linux
그러고 보니 레드햇9에 기본으로 깔려있는 커널버젼은 2.4.20 인가보다..뭐 어떻게 되었든…
위 명령중 제일 마지막에 한것이 기본 커널컴파일된 옵션을 linux라는 이름으로 복사를 해둔것이 되겠다. 이는 다음에 중요하게
사용되니 기억하시고…. 그리고 위 작업은 커널 업그레이드로 여러 인터넷문서에 잘 설명되어 있으니 참고 하기 바란다.
그런다음
[root@lvs linux]# make mrproper
[root@lvs linux]# make menuconfig
를 하면 화면 하단에 Configuration file을 Load 하라는 메뉴가 있는데 이것을 선택하여 아까 복사해둔 /usr/src/linux/linux 파일을
로딩 하자.
그런 다음 커널옵션중에 IPVS관련 것들을 활성화시킵니다. 네트웍 섹션 쪽에서 뒤지다 보면 나옵니다^^
설정뒤에 저장하고 빠져나옵니다.
# make dep
# make bzImage
# make modules
# make modules_install
# make install (새로운 커널이 grub 또는 lilo에 자동으로 등록됨.)
이제 새로운 커널이 컴파일되어서 lilo에 자동등록 된것을 볼수있다.
/etc/lilo.conf 파일을 열어보면 등록되어 있는것을 알수가 있고 내용을 뜯어 고쳐서 부팅될때 새로운 커널로 부팅되게도 할수 있을것이다.
자 지금까지 한 작업이 커널 업그레이드와 IPVS 설치가 될수 있겠다.
(2) Load Balance 서버의 IPVS설치
앞에서 이야기했듯이 커널 2.4.23부터는 커널내부에 IPVS가 포함되어 있으므로 커널 2.4.23이상을 설치하도록 하자.
커널 2.4.23에는 ipvs 1.0.10 버젼이 포함되어 있다. 그러므로 ipvsadm은 1.21 버젼을 사용하면 되겠다.
소스트웨어 다운로드는 http://www.linuxvirtualserver.org/software/ipvs.html URL을 방문하도록 하자. 헤깔려서 뭘 받아야 될지 모른다면
이 문서 아래쪽에 질문 게시판에 올려주시기 바란다.
(3) Load Balance 서버에 IPVSADM 모듈 설치
ipvsadm은 ipvs 테이블에 RealServer들의 아이피를 넣었다 뺏다를 편하게 해주는 유틸이라고 보시면 됩니다.
그래서, Real Server들이 추가되거나 삭제될때 또는 부하 분산 스케쥴링 방식을 지정할때에도 ipvsadm 을 사용해야 합니다.
이것을 ipvsadm 소스를 다운로드 받아서 적당한 디렉토리에 올려두고 아파치 소스 컴파일 하듯이만 해주면 됩니다.
> ./configure
> make
> make install
설치완료!!!!!
(4) Load Balance 서버에 IPVSADM 설정하기
ipvsadm을 설정하기 전에 먼저 TCP관련된 몇가지 시스템 설정을 변경해주어야 합니다.
————————————————————————
[root@lvs conf] echo “1” >/proc/sys/net/ipv4/ip_forward
[root@lvs conf] echo “0” >/proc/sys/net/ipv4/conf/all/send_redirects
[root@lvs conf] echo “0” >/proc/sys/net/ipv4/conf/default/send_redirects
[root@lvs conf] echo “0” >/proc/sys/net/ipv4/conf/eth0/send_redirects
————————————————————————-
위와 같이 설정을 변경해준 다음에 로드밸런스 서버에 Virtual IP를 등록해주자…
> ifconfig eth0:0 211.98.12.51 netmask 255.255.255.0 broadcast x.x.x.x up
> route add default gw 게이트웨이아이피 netmask 0.0.0.0 metric 1
위에서 netmask , broadcast , 게이트웨이아이피는 로드밸런스 서버에 이미 설정되어 있는 정보를 ifconfig를 이용해 보면 된다.
각자의 리눅스 서버 환경에 맞도록 설정해준다.
자 얼추 되었으면 ipvsadm을 이용해서 설정에 들어가도록 하자.
————————————————————————-
> ipvsadm -A -t 211.98.12.51:80 -s wlc
————————————————————————-
이것은 이 로드밸런스 서버의 Virtual IP의 80포트를 대외적인 서비스 아이피와 포트로 지정을 한다는 이야기이다.
wlc 옵션은 부하분산 스케쥴링 알고리즘의 하나이다 옵션 없이 ipvsadm 이라고만 명령을 쳐보면 상세히 나오니깐 참조하기 바란다.
————————————————————————-
> ipvsadm -a -t 211.98.12.51:80 -r 211.98.12.52:80 -m -w 1
> ipvsadm -a -t 211.98.12.51:80 -r 211.98.12.53:80 -m -w 1
————————————————————————-
위 작업은 로드밸런스서버에 뒷단의 Real Server 들이 어떠한 것들이 붙는지 설정해 주는 작업이다. 52번 53번 웹서버 두대가 붙는다는 것을 알수있다. 자세한 옵션은 역시 ipvsadm HELP를 보고 각자 파악해보자 .
어느것이 RealServer의 아이피이고 로드밸런서의 Virtual IP인지 구분만 할줄 알면 된다.
(5) Real Server 들 설정하기
NAT방식에서는 매우 심플하게 RealSever에서 해줄것은 거의 없다.
기본 GateWay 설정만 바꿔주도록 하자.
————————————————————————
> route add default gw 211.98.12.50
————————————————————————
여기서 주의해야 할것은 위에 50번 아이피는 로드밸런스 서버의 Virtual IP가 아니라는것이다.
설정이 완료되었으면 웹브라우져를 구동시킨뒤 주소란에 로드밸런서의 Virtual IP를 적어주고 웹페이지를 호출해보면 된다.
지금까지 간단한 형태의 LVS 설정을 해 보았다. LVS의 완벽한 설정까지는 아직 많은 길이 남았지만 먼저 간단한 형태를 구현해보고 동작되는것을 보는것만큼 즐거운 일은 없지 않을까 해서 부랴부랴 강좌를 적어보았다.
급하게 적느라 부족한 부분이 많지만 시간나는대로 업그레이드 하도록 하겠다.
2 Responses
… [Trackback]
[…] Read More on that Topic: nblog.syszone.co.kr/archives/507 […]
… [Trackback]
[…] Find More on on that Topic: nblog.syszone.co.kr/archives/507 […]