본문 바로가기

server

Keepalived를 활용한 NGINX 서버 이중화 구성

Keepalived를 활용한 NGINX 서버 이중화 구성

이 블로그 글에서는 Keepalived를 사용하여 NGINX 서버의 이중화 구성을 설정하는 방법에 대해 설명하겠습니다. 이중화 구성은 웹 서비스의 고가용성을 보장하는 데 중요합니다. Keepalived는 Linux 환경에서 가상 IP를 통해 이러한 고가용성을 구현하는 데 사용됩니다.

필요 조건

  • 두 대의 Linux 서버 (여기서는 하나는 Master, 다른 하나는 Backup 서버로 지칭)
  • 각 서버에 설치된 NGINX
  • Keepalived 설치 가능성

구성 과정

Step 1: Keepalived 설치

먼저, Master와 Backup 서버 모두에 Keepalived를 설치합니다.

Debian/Ubuntu 기반 시스템:

sudo apt-get install keepalived

Red Hat/CentOS 기반 시스템:

sudo yum install keepalived

Step 2: NGINX 상태 확인 스크립트 작성

NGINX의 상태를 체크하는 스크립트를 **/etc/nginx/check_nginx.sh**에 작성합니다. 이 스크립트는 NGINX 프로세스가 실행 중인지 확인합니다.

#!/bin/sh
if [ -z "$(pidof nginx)" ]; then
  exit 1
fi

이 스크립트에 실행 권한을 부여합니다:

sudo chmod +x /etc/nginx/check_nginx.sh

Step 3: Keepalived 설정

Keepalived를 통해 Master와 Backup 서버의 설정을 구성합니다. /etc/keepalived/keepalived.conf 파일에서 아래와 같이 설정합니다.

vrrp_script chk_nginx {
    script "/etc/nginx/check_nginx.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state MASTER  # Backup 서버에서는 이 값을 BACKUP으로 변경
    interface eth0  # 사용 중인 네트워크 인터페이스에 맞게 변경
    virtual_router_id 51
    priority 100  # Backup 서버에서는 이 값을 99 등으로 낮게 설정
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 12345  # 강력한 패스워드로 변경
    }
    virtual_ipaddress {
        192.168.1.10  # 공유할 가상 IP 주소
    }
    track_script {
        chk_nginx
    }
}

Step 4: Keepalived 서비스 시작 및 상태 확인

설정을 적용한 후에 Keepalived 서비스를 재시작하고, 그 상태를 확인합니다.

sudo systemctl restart keepalived
sudo systemctl status keepalived

결론

이제 Master와 Backup 서버가 Keepalived를 통해 이중화되어 있으며, 하나의 서버에 문제가 발생할 경우 다른 서버가 자동으로 대체 역할을 수행합니다. 이를 통해 서비스의 지속적인 가용성을 보장할 수 있으며, 웹 서비스의 안정성과 신뢰성이 크게 향상됩니다.