리눅스 LVS 로드밸런서 구성

CentOS에서 LVS 사용하기

LVS(Linux Virtual Server)는 리눅스에서 구현된 로드밸런스 솔루션으로,  L4 스위치의 역할을 한다.


1. 설치
LVS는 ipsvadm 패키지를 설치하면 된다.

설치후 ipsvadm 커맨드를 실행하면 아래와 같은 결과를 볼 수 있다.

2. 구성 및 설정

LVS/NAT 구성
로드밸런서(LVS) :  192.168.100.51(외부망), 172.16.1.51(내부망), CentOS 6
웹서버1 : 172.16.1.31(게이트웨이는 로드밸런서의 내부망 ip 주소), CentOS 6
웹서버2 : 172.16.1.32(게이트웨이는 로드밸런서의 내부망 ip 주소), CentOS 6

커널 파라에타에서 패킷 포워딩을 허용하도록 해준다. /etc/sysctl.conf에서 아래 부분을 수정하고 적용한다.

재부팅시 서비스를 자동으로 실행하도록 아래 커맨드를 실행한다.

2.1. 룰 초기화
기존의 룰을 삭제한다. 물론, 지금은 처음 설치했기 때문에 수행하지 않아도 된다.

2.2. 가상 서비스 등록
여기서는 웹서비스를 등록하도록 할 것이다. 등록은 아래와 같은 형식으로 한다.
ipvsadm -A -t (서비스 IP 주소:Port 번호) -s (할당 방법) 아래에서 할당방법은 라운드로빈 방식이다.

할당방식은 라운드로빈외 여러가지가 존재하며, 아래와 같다.

  • rr(Robin Robin): 실 서버에 한번씩 번갈아가며 접속하는 방법
  • wrr(Weighted Round Robin): 라운드로빈 방식에서 실제 서버에 가중치를 주어 가중치가 높은 서버에 더 자주 접속하는 방법
  • lc(Least-Connection): 가장 접속이 적은 실제 서버로 더 많은 요청을 배분하는 방식.
  • wlc(Weighted Least-Connection): lc 방식에 가중치(Ci/Wi)를주어 특정 서버에 더 많은 작업을 할당하는 방식. 옵션 없을경우 기본값.
  • lblc(Locality-Based Least-Connection): 목적지 IP와 관련하여 가장 접속이 적은 서버로 더 많은 요청을 배분하는 방식.
  • lblcr(Locality-Based Least-Connection with Replication): 목적지 IP와 관련하여 가장 접속이 적은 서버로 더 많은 요청을 배분하는 방식. LBLC 스케줄과의 차이는 대상 IP 주소를 실제 서버 노드의 서브셋으로 묶는것.
  • dh(Destination Hashing): 정적 해쉬 테이블에 있는 목저지 IP를 찾아 실제 서버의 풀로 요청을 배분하는 방식.
  • sh(Source Hashing): .정적 해쉬 테이블에 있는 소스 IP를 찾아 실제 서버의 풀로 요청을 배분하는 방식.
  • sed(Shortest Expected Delay): 예상 지연이 가장 짧은 서버에 들어오는 작업을 할당하는 방식.
  • nq(Never Queue): 빠른 작업을 기다리는 대신 들어오는 작업을 유휴 서버에 할당하는 방식. 모든 서버가 사용중인 경우 가장 짧은 예상 지연 정책을 적용하여 작업을 할당함.

2.3. 물리 서버 등록
ipvsadm -a -t (서비스 IP 주소:Port 번호) -r (실제 서버의 IP 주소:Port 번호) -m (“m” 은 masquerading (NAT)을 의미함) 형식으로 등록해준다.

2.4. 등록된 서비스 확인.
아래 커맨드로 등록된 서비스 테이블을 확인 할 수 있다.

2.5. 설정 저장.
아래 커맨드로 저장한다. 설정은 /etc/sysconfig/ipvsadm에 저장된다.

3. 테스트

웹서버1, 웹서버2에 각각 apache 웹서버를 설치하고, index.html을 서로 다른 내용으로 만들고, 접속해 본다.

접속할 때 마다, 서로 다른 서버에 접속됨을 확인 할 수 있다.

2 comments

    • mongyi on 2019년 1월 16일 at 2:09 오후
    • Reply

    안녕하세요. 좋은 정보 감사합니다. LVS 서버 만들어서 테스트 중인데 웹 서버를 만들어서 번갈아가면서 나오는지 확인하고 싶습니다. 그런데 VIP라서 저는 작성자님처럼 PC에서는 확인이 어려우니 LVS서버에서 curl을 이용해 VIP를 이용했는데
    [root@e_cent html]# curl 192.168.0.125
    curl: (7) Failed connect to 192.168.0.125:80; 호스트로 갈 루트가 없음 이렇게 나오더라구요.
    혹시 어떻게 해야하는 지 도움을 주실 수 있나요?
    참고로 LVS VIP가 192.168.0.125입니다.

    • snowffox on 2019년 1월 16일 at 6:26 오후
    • Reply

    ipvsadm 실행 결과가 3번과 비슷하게 나오면 설정 문제는 아닐것 같고요.
    혹시 방화벽이 올라가서 차단될 수도 있으니,
    iptables -L -v 로 방화벽 룰도 확인해 보셔요.

댓글 남기기

Your email address will not be published.

%d 블로거가 이것을 좋아합니다: