IT/Network

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

착한아줌마 2019. 6. 18. 19:00
반응형





ipvsadm 모듈로 L4 서버를 만든 후 L4 이중화와 서버에 대한 헬스체크(healthcheck)까지 설정

이중화와 헬스체크를 위해 keepalived 라는 모듈을 사용












1. 모듈 설치



우선 기본적으로 ipvsadm 모듈이 설치되어 있어야함


이전 글 링크 참조

[Network] - [Linux] LVS로 L4 서버 만들기


그러고나서 keepalived도 설치해야하는데 얘도 yum 명령어로 바로 설치 가능


# yum install keepalived






2. 설정



keepalived 모듈의 설정파일 위치는 /etc/keepalived/ 디렉토리 아래에 keppalived.conf라는 파일로 있음

설정파일 수정전 .bak을 붙여 백업해놓았음




keepalived 모듈은 이중화 뿐만아니라 설정에 따라 ipvsadm 모듈까지 같이 관리할 수 있음

아래는 keepaloved.conf 파일 내용





------------------- 이중화 관리 설정-------------------


- vrrp_instance [이름]: 그냥 vrrp 인스턴스 생성하면서 이름 지정

- state [역할(MASTER|BACKUP)]: 모듈 초기화시 역할 지정

- interface [인터페이스]: vrrp 패킷 주고 받을 인터페이스

- priority [숫자]: MASTER 선출에 쓰이는 우선순위 값

- advert_int [숫자]: vrrp 패킷 광고하는 인터벌타임

- virtual_ipaddress: 생성할 vip





---------------- ipvsadm 모듈 관리 설정----------------


- virtual_server [vip][port]: 서비스 한 개씩 등록, 여기 설정한 vip:port가 필터 조건이 되는 것으로 보임

- delay_loop [숫자]: 헬스체크 주기

- lb_algo [스케쥴링]: 서비스 스케쥴링

- lb_kind [서비스라우팅]: 서비스 라우팅 방식

- persistence_timeout [숫자]: 세션 유지 시간

- protocol [프로토콜]: 프로토콜

- connect_port [port]: port 번호


- real_server [서버ip][port]: 등록 서버 ip,port

- weight [숫자]: 스케쥴링이 wrr등 가중치가 필요할때 서버당 가중치 설정

- TCP_CHECK: tcp로 헬스체크 하는 듯







3. 실행 및 확인


위 설정파일은

32.32.32.0/24 대역과 33.33.33.0/24 대역인 구성으로

서비스 vip는 32.32.32.100

리얼 서버ip:port는 33.33.33.10-11:80

LVS ip는 32.32.32.1-2, 33.33.33.1-2


아래는 구성도 그림





아래 실행 명령어로 실행


# service keepalived start


실행하고 나면 별다른 출력되는 정보가 없는데

keepalived 데몬은 사실상 컨트롤을 하고있을 뿐이기 때문인 것으로 보임


이후 ipvsadm 상태를 확인해보면 의도했던 대로 설정이 들어가 동작 중임을 알 수 있음





tcpdump로 패킷을 확인하면 아래와 같이 확인 가능


# tcpdump -n -i br0 vrrp


마스터 장비 ip(33.33.33.1)에서 멀티캐스트로 vrrp 패킷 전달

vrid는 32, priority는 254, 광고 인터벌은 1초 등등 정보가 보임 





tcpdump로 이번엔 헬스체크 패킷을 확인

대상 리얼 서버중에서 33.33.33.10에 대해서만 일단 확인해보면 


# tcpdump -n -i br0 port 80 and host 33.33.33.10


half open 방식으로 서버 80포트를 체크하는 것을 확인 할 수 있음

주기는 덤프상으로 약 6초로 보임



캡처는 하지 않았지만 실제로 한 쪽 서버의 웹 데몬을 내리거나 링크를 절체하면

헬스체크가 되지 않아서 ipvsadm에서 문제된 서버가 제외되 있는 것을 볼 수 있음 !!




이중화된 마스터 장비에서 vip를 확인할 때는 아래 명령어를 사용해서 확인


# ip addr


br0 인터페이스에서 vip 33.33.33.100이 있음













LVS 서버 이중화와 관련된 heartbeat, haproxy 등의 데몬도

지금의 기능과 크게 다르지는 않겠지만 이후 테스트 해봐야 할 것으로 보임












- 참조

https://www.keepalived.org/

https://idchowto.com/?p=32207