본문 바로가기

Server Story..../Linux

LVS 셋팅 관련.


LVS 서버란

 

LVS(Linux virtual Server) 은 로드 벨런스를 위해 사용되어지는 서버이다.

LVS 자체는 운영하기가 손쉬운 편이나, 자칫 하면 골치아파 지는수도 있는게 LVS 서버다.

로드 벨런스에는 여러가지 테크닉이 존재한다.

(테크닉?? 정확하게는 운영 방식이지만..)

 

일단 L4 스위치를 이용한 운영, 제일 안정적이지만 제일 돈이 제일 많이드는 방법이다. 또 L4 스위치를 못쓰는 사람은 그림에 떡이다.!!

그 다음은 DNS 서버를 이용한 로드 벨런스 방법이다. 이건 2차 DNS 서버까지 있는 경우, 1차와 2차의 IP를 다르게 입력하여 사용하는 방법으로 금액적으로는 가장 싸다.

하지만 Processor 서버의 수가 늘어나게 되면 DNS 서버의 수도 늘어나야 되는 문제가 발생한다.

요즘 5차까지 사용하는것이 대새라고는 하지만.. 중복지출이 생겨버리는 어의없는 상황이 발생한다.

 

마지막이 가성비가 가장좋은 LVS 서버다.

역시 싸고, 확장성이 좋으며, 컨트롤 하기 쉬운게 최고다.

 

대부분의 서버 구성도는 다음과 같다.

 

L3 스위치(백그라운드 스위치) -> L2 스위치 -> LVS -> WEB1,WEB2 -> File & DB 순이다.

(스프링노트 이미지 삽입이 안된다 젠둥 ㅠ,.ㅠ)

 

여기서 File 서버 및 DB 서버는 분리해 주는것이 좋다.

하지만 돈이 따로 듬으로 합쳐준다 =ㅅ=;; (HDD의 I/O가 엄청나게 일어나니, SSD 같은걸 이용하는게~~~~ 쿨럭!!!)

 

요즘 클라우드의 운영등으로 인해 점점 확장성이 좋은 virtual O/S 장비들이 많이 늘어나고 있다.

또한 클라우드를 위한 가상화 어플리케이션들도 늘어난다. 이를 이용한 LVS 서비스를 이용하는 데도 점점 늘어나고 있는 만큼 배워두면 좋다. (배워둬서 나쁠건 머 있겠나..)

 

여기서 클라우드란 가상화에 의한 PC를 생성하여 사용하는 것을 의미한다.

주로 단일 PC에 여러개의 PC를 재 양성하여, 이 재 양성된 PC를 역어 온라인 상에서 가상화된 PC를 이용할수 있도록 하는 기술이다.

머 신기술이라고들 하는데.. 내가 봤을땐 그냥 가상 서버호스팅에, 웹호스팅의 조금 개량형이다.

클라우드PC로는 죽어도 리니지2, 월드오브워크레프트, 못한다.. 그냥 워드나 작성할까?? 음~~ 업무용이군 =ㅅ=;;

 

LVS 설치

그럼 설치를 시작한다.

아시다 싶이 요즘 yum 없으면 엔지니어 일도 해먹기 힘들어 졌다.

RPM 이나 컴파일등을 구하기가 더 힘들다. =ㅅ=;;

 

yum install ipvsadm

 

여기서 어느넘이 한 마디 한다 ipvsadm 이 머에요?? lvs 아니에요??

그넘이 그넘이다 =ㅅ=;;

로드 벨런스의 기본 개념은 특정 IP로 받은 패킷을 지정한 서버의 지정한 포트로 넘겨주는 것이다.

때문에 ip를 컨트롤 하기위한 ip 컨트롤러가 필요하다. 이게 바로 ipvsadm 이다.

 

이제부터 본격적인 설정이 시작된다.

서버의 정보는 다음과 같다.

 

LVS : 192.168.0.100

VIP : 192.168.0.101

Real1 : 192.168.0.200

Read2 : 192.168.0.201

Node : 192.168.0.300

 

VIP를 LVS 서버 및 리얼 서버에 모두 다 지정한다.

ifconfig {인터페이스명} {지정할IP} up

예) ifconfig eth0:0 192.168.0.101 up

 

이후 LVS 서버에만 ip  포워딩을 허락해 준다.

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

 

각 리얼서버에 ARP 발생을 막기위한 커널 튜닝을 해준다. LVS 에는 해주면 안된다. 하지 말자.

vi /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2

이와 같이 지정하면 VIP가 지정된다. 이제 타 PC 에서 지정한 IP로 Ping 이 나가는지 확인하자. 안나가면 말짱 도로묵

 

이 밖에 인터페이스 파일을 직접 생성하는 방법도 있다,

vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

에 아래 바로 입력

 

DEVICE=eth0:0

BOOTPROTO=static

IPADDR=192.168.0.101

NETMASK=255.255.255.0

ONBOOT=yes

 

이제 분배해줄 룰을 설정하자

ipvsadm -A -t {VIP}:{PORT} -s wlc

예) ipvsadm -A -t 192.168.0.101:80 -s wlc

 

이게 무슨소리냐~~ 위에서 지정한 VIP로 들어오는 특정 포트의 패킷을 밭아들인다는 뜻이된다.

위의 예제는 80포트를 지정했다.

또한 뒤의 -s wlc 는 패킷 분배 방법을 말한다.

배킷 분배방법은 다음과 같다.

rr : 라운드로빈, 들어오는 순서대로 분배해 준다.

wrr : 가중치, 라운드로빈 함께 쓴다. 여기서 가중치라함은 지정한 수치 만큼의 접속자를 해당 서버에 보내고 난 뒤 다시 지정한 수치만큼의 접속자를 다음 서버로 보내는 것을 말한다. (먼소리???)

lc : 리얼 서버들 중 가장 접속자 수가 가장 적은 것들로 패킷을 보낸다.

wlc : 리얼 서버들 중 가장 접속자 수가 적은 것들로 패킷을 보내나, 접속자 수가 비슷하거나 같으면 가중치에 따라 패킷을 보낸다.

 

다음은 어떠한 리얼 서버로 패킷을 보내줄 것인지를 선택한다.

 

ipvsadm -a -t {VIP}:{PORT} -r {Real IP}:{PORT} -w {가중치(숫자)}

예)  ipvsadm -a -t 192.168.0.101:80 -r 192.168.0.200:80 -w 2

 

 

ipvsadm -a -t 192.168.0.101:80 -r 192.168.0.201:80 -w 2

 

이제 제대로 설정 되었는지 확인해 보자

ipvsadm -L

 

그리고 설정값 날라가면 안되니 저장하자

ipvsadm-save

 

마지막으로 LVS 서버를 재 부팅 할 때에 자동으로 ipvsadm 올라오도록 설정하자

 

chkconfig --level 3 ipvsadm on

 

아래 링크에서 퍼옴.

http://saga99.springnote.com/pages/9559596