IT/Network

[Linux] LVS로 L4 서버 만들기

착한아줌마 2019. 3. 26. 12:30
반응형

 

 

 

LVS(Linux Virtual Server)

리눅스에서 로드밸런싱을 위한 가상 서버 모듈(솔루션)

 

클라이언트 입장에서 리얼 서버가 아니고 가상 서버에 붙는 것처럼 되서 이름이 Virtual Server인가 싶다

 

 

 

 

 


 

 

 

 

 

1. 설치

 

우선 ipvsadm(LVS를 위한 모듈) 설치

yum으로 설치하면 간단하다

 

# yum install ipvsadm

 

 

 

 

 

2. 확인

 

설치 후에는 잘 깔렸는지 일단 확인

 

# ipvsadm -l

 

 

이제 설정하고나서 L4 서버로 쓰게될테니 부팅 시에 모듈 올라오도록 확인

 

# chkconfig --list ipvsadm

# chkconfig --level 345 ipvsadm on

 

 

그리고 패킷을 포워딩 해주어야하므로 관련 커널 파라메타를 수정해주어야 함

기본적으로 리눅스 서버가 L3단 동작(라우팅)을 하려면 설정되어야할 옵션

 

net.ipv4.ip_forward 값이 1이어야 한다!!

아래는 확인 방법

 

# sysctl -a | grep ip_forward

 

이 부분은 대부분 알아서 넘어가려고 하지만

혹시나해서 수정방법 중에 하나..

 

# vi /etc/sysctl.conf

파일 열어서, 아마 처음 부분에 있을 것이다 보통은

 

net.ipv4.ip_forward = 0에서 1로 수정하고 vi 저장 종료

 

sysctl 변경 내용 적용 명령어

# sysctp -p

 

 

 

 

 

3. 서비스 등록

 

이제 제대로 설정 시작

서비스 만들어 봄

 

일단 아래는 서비스 추가 명령어 usage

 

ipvsadm -A -t (서비스 IP 주소:Port 번호) -s (할당 방법) 

 

서비스 IP 주소는 실제 클라이언트가 보고 들어오게되는 VIP가 된다

 

할당 방법은 부하분산 시 서버를 선택하는 기준(스케줄링) 방법이다

아래와 같은 종류가 있다

 

 rr  Robin Robin 실제 서버에 한번씩 번갈아가며 접속하는 방법
 wrr  Weighted Round Robin 라운드 로빈 방식에서 실제 서버에 가중치를 주어 가중치가 높은 서버에 더 자주 접속하는 방법
 lc  Least-Connection 가장 접속이 적은 실제 서버로 더 많은 요청을 배분하는 방식
 wlc  Weighted Least-Connection lc 방식에 가중치(Ci/Wi)를주어 특정 서버에 더 많은 작업을 할당하는 방식
 lblc  Locality-Based Least-Connection 
 lblcr  Locality-Based Least-Connection with Replication 
 dh  Destination Hashing 목저지 IP를 기준으로 해쉬 함수 적용해서 배분하는 방식
 sh  Source Hashing 소스 IP를 기준으로 해쉬 함수 적용해서 배분하는 방식
 sed  Shortest Expected Delay 예상 지연이 가장 짧은 서버에 들어오는 작업을 할당하는 방식
 nq  Never Queue 들어오는 작업을 유휴 서버에 할당하는 방식.

 

 

대부분 이해 가능한 방식

 

lblc 와 lblcr은 수신 IP 주소에 관련되어 적은 세션의 서버에 분배하는 방식이라는데 잘 이해가 안되서 적지 않았음

※ sed는 설명은 저런데 wlc와 같이 동작한다는 얘기가 있음

※ nq는 세션이 0인 서버가 없으면 sed와 동작방식이 같음

 

 

이제 설정 넣어 본다

 

우선 하려는 구성은 아래와 같다

 

서비스 IP:Port (VIP:Port) : 192.168.1.254:80

스케쥴링 방식 : RR

서비스 라우팅 방식 : NAT

서버 IP:Port : 23.23.23.10~11:80

 

서비스 등록에선 서비스와 스케쥴링 방식이 추가됨

 

 

 

 

 

 

4. 서버 등록

 

다음은 부하분산될 서버 등록

서버 정보와 서비스 라우팅 방식을 설정한다

 

아래는 usage

 

ipvsadm -a -t (서비스 IP 주소:Port 번호) -r (실제 서버의 IP 주소:Port 번호) -m

 

m옵션은 masquerading (NAT)을 의미

다이렉트 라우팅 (DSR)이 필요하면 g옵션을 사용

 

 

 

 

 

 

5. 서비스 설정 확인 및 저장

 

설정한 내용 확인한다

 

# ipvsadm

# ipvsadm -l

 

모두 같은 출력

 

 

설정은 /etc/sysconfig/ipvsadm에 저장한다

저장을 해야 재부팅 이 후에도 지속 가능

 

# /etc.init.d/ipvsadm save

 

이게 그냥 ipvsadm save를 하면 명령어가 먹지 않는다 주의할 것

 

 

 

 

 

 

6. 서비스 설정 내용 초기화

 

설정을 초기화 하는 방법 그냥 C 옵션

 

 

 

 

 

 


 

 

 

 

 

굳이 서비스 테스트 한 내용을 적지는 않겠다

 

클라이언트 붙여서 서비스IP로 접속해보고 각 서버로 연결되는지 잘 보면 된다

 

 

 

 

다음번엔 L4 서버 이중화와 서버 헬스체크를 추가해서 테스트 해볼 예정

 

 

 

 

 


 

 

- 다음글

 

[Network] - [Linux] LVS로 L4 서버 만들기 - 이중화, 헬스체크 with keepalived

 

 

 

 

 

 

 

 

- 참조

https://blog.boxcorea.com/wp/archives/1803

http://junhyung2.blogspot.com/2014/07/lvs.html