Nginx를 이용한 부하 분산 클러스터 구축

(1). 환경 설정

서버1 192.168.5.101 부하 분산기

서버2 192.168.5.102 서비스 노드 1

서버3 192.168.5.103 서비스 노드 2

(2). Nginx 부하 분산 전략

Nginx는 upstream 블록에서 정의된 서버 리스트로부터 요청을 처리할 서버를 선택합니다. 기본적인 upstream 구성은 다음과 같습니다:

upstream [서버그룹이름]{
    server [IP주소]:[포트번호];
    server [IP주소]:[포트번호];
    ...
}

위 설정 후, 특정 요청을 해당 서버 그룹으로 리버스 프록시하기 위한 위치 지정은 아래와 같습니다:

location / {
    proxy_pass http://[서버그룹이름];
}

Nginx의 upstream 모듈은 기본적으로 6가지 부하 분산 알고리즘을 지원합니다: round-robin (기본), weight (가중치), ip_hash (IP 기반), least_conn (최소 연결), fair (응답 시간), url_hash (URL 기반).

  1. Round Robin

기본 방식으로 각 요청이 시간 순서대로 다른 서버로 전달됩니다.

  1. Weight

가중치 기반 방식으로 각 서버에 대한 요청 비율을 조절할 수 있습니다:

upstream [서버그룹이름]{
    server [IP주소]:[포트번호] weight=3;
    server [IP주소]:[포트번호];
    ...
}

가중치 값이 높을수록 더 많은 요청을 받습니다.

  1. IP Hash

클라이언트 IP 주소를 기반으로 고정된 서버에 요청을 보내는 방법입니다:

upstream [서버그룹이름]{
    ip_hash;
    server [IP주소]:[포트번호];
    ...
}

동일한 클라이언트 요청은 항상 같은 서버로 이동하여 세션 문제를 해결합니다.

  1. Least Conn

현재 가장 적은 연결 수를 가진 서버에게 요청을 보냅니다:

upstream [서버그룹이름]{
    least_conn;
    server [IP주소]:[포트번호];
    ...
}
  1. Fair

서버 응답 시간에 따라 요청을 분배합니다:

upstream [서버그룹이름]{
    fair;
    server [IP주소]:[포트번호];
    ...
}
  1. URL Hash

특정 URL에 대해 동일한 서버에 요청을 보내도록 합니다:

upstream [서버그룹이름]{
    hash $request_uri;
    server [IP주소]:[포트번호];
    ...
}

(3). 실험

  1. 부하 분산기 서버1에서 Nginx 설치

필요한 의존성 패키지를 설치하고 Nginx 소스 코드를 컴파일 및 설치합니다:

[root@서버1 ~]# yum -y install gcc pcre-devel zlib-devel openssl-devel
[root@서버1 ~]# tar xvf nginx-1.14.1.tar.gz -C /usr/local/src/
[root@서버1 ~]# cd /usr/local/src/nginx-1.14.1/
[root@서버1 nginx-1.14.1]# ./configure --prefix=/usr/local/nginx
[root@서버1 nginx-1.14.1]# make && make install

Nginx 사용자 생성 및 시작 스크립트 추가:

[root@서버1 nginx-1.14.1]# useradd -r -s /sbin/nologin nginx
[root@서버1 nginx-1.14.1]# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
[root@서버1 nginx-1.14.1]# chmod +x /etc/rc.d/rc.local
  1. 서비스 노드 2와 3에 웹 애플리케이션 배포:
[root@서버2 ~]# yum -y install httpd
[root@서버2 ~]# echo "서버2" > /var/www/html/index.html
[root@서버2 ~]# systemctl start httpd.service

[root@서버3 ~]# yum -y install httpd
[root@서버3 ~]# echo "서버3" > /var/www/html/index.html
[root@서버3 ~]# systemctl start httpd.service
  1. 테스트

각 페이지 유형(html, php 등)에 대해 정상 작동 여부를 확인합니다.

태그: nginx 부하분산 서버구성 웹서버

6월 21일 02:54에 게시됨