LVS 서버란
LVS(Linux virtual Server) 은 로드 벨런스를 위해 사용되어지는 서버이다.
LVS 자체는 운영하기가 손쉬운 편이나, 자칫 하면 골치아파 지는수도 있는게 LVS 서버다.
로드 벨런스에는 여러가지 테크닉이 존재한다.
(테크닉?? 정확하게는 운영 방식이지만..)
일단 L4 스위치를 이용한 운영, 제일 안정적이지만 제일 돈이 제일 많이드는 방법이다. 또 L4 스위치를 못쓰는 사람은 그림에 떡이다.!!
그 다음은 DNS 서버를 이용한 로드 벨런스 방법이다. 단 라운드 로빈 적용이 DNS 적용 시간과 동일하여, 초기 적용시간이 상당히 소요 될 수 있다.
추후 문제 생겨 분리하려 해도 또 DNS 적용 시간이 소요 되어 다시 그 만큼의 시간이 소요 된다.
마지막이 가성비가 가장좋은 LVS 서버다. 단일 서버를 포트포워딩 하여 사용하는 만큼 싸고 확장이 편리하다.
역시 싸고, 확장성이 좋으며, 컨트롤 하기 쉬운게 최고다.
대부분의 서버 구성도는 다음과 같다.
L3 스위치(백그라운드 스위치) -> L2 스위치 -> LVS -> WEB1,WEB2 -> File & DB 순이다.
대략적인 구성은 다음과 같다.
쉽게 말해, LVS는 웹서버를 두대 이상으로 포트 나누어 주고 각각의 웹서버는 단일의 DB 및 파일서버를 공유하여 사용하는 유형이다.
여기서 File 서버 및 DB 서버는 분리해 주는것이 좋다.
하지만 돈이 따로 듬으로 합쳐준다 =ㅅ=;; (HDD의 I/O가 엄청나게 일어나니, SSD 같은걸 이용하는게~~~~ 쿨럭!!!)
요즘 클라우드의 운영등으로 인해 점점 확장성이 좋은 virtual O/S 장비들이 많이 늘어나고 있다.
또한 클라우드를 위한 가상화 어플리케이션들도 늘어난다. 이를 이용한 LVS 서비스를 이용하는 데도 점점 늘어나고 있는 만큼 배워두면 좋다. (배워둬서 나쁠건 머 있겠나..)
여기서 클라우드란 가상화에 의한 PC를 생성하여 사용하는 것을 의미한다.
주로 단일 PC에 여러개의 PC를 재 양성하여, 이 재 양성된 PC를 역어 온라인 상에서 가상화된 PC를 이용할수 있도록 하는 기술이다.
머 신기술이라고들 하는데.. 내가 봤을땐 그냥 가상 서버호스팅에, 웹호스팅의 조금 개량형이다.
클라우드PC로는 죽어도 리니지2, 월드오브워크레프트, 못한다.. 그냥 워드나 작성할까?? 음~~ 업무용이군 =ㅅ=;;
그리고 과거 이것을 하드웨어화 한 PC도 잠깐이나 출시 된 적이 있다.
플레시 게임 하나 해도 뚝뚝끊기는 그 속도란 답답함의 연속이었다. 지금은 하드웨어는 많이 좋아졌으니...
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
Real2 : 192.168.0.201
Node : 192.168.0.300
VIP를 LVS 서버 및 리얼 서버에 모두 다 지정한다.
ifconfig {인터페이스명} {지정할IP} up
예) ifconfig eth0:0 192.168.0.101 netmask 255.255.255.255 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 이 나가는지 확인하자. 안나가면 말짱 도로묵
sysctl -p
이 밖에 가상 IP(VIP)지정은 인터페이스 파일을 직접 생성하는 방법도 있다,
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 -g -w 2
ipvsadm -a -t 192.168.0.101:80 -r 192.168.0.201:80 -g -w 2
이제 제대로 설정 되었는지 확인해 보자
ipvsadm -L
그리고 설정값 날라가면 안되니 저장하자
ipvsadm-save
마지막으로 LVS 서버를 재 부팅 할 때에 자동으로 ipvsadm 올라오도록 설정하자
chkconfig --level 3 ipvsadm on
마지막으로 주의할 점 :
스위치 등에서 가장 중요한 VIP의 맥주소를 저장하는 경우가 있다.
스위치에 포트가 연결되면 빨리 찾아가도록 하기 위함이나, 이게 LVS 서버를 하드웨어 오류 등으로 교체할 때에는 VIP가 안올라오는 원인이 될수 있으니
참고하자.
'Linux' 카테고리의 다른 글
리눅스 비트수 확인 (0) | 2015.08.30 |
---|---|
lvs 목록 수정, 삭제 (0) | 2015.08.30 |
root 도메인 CNAME적용 여부 (0) | 2015.08.30 |
varnish 설치 (0) | 2015.08.30 |
php 에러로그 설정 (0) | 2015.08.30 |