Nacos 클러스터를 리눅스에 구축하고 Nginx로 로드 밸런싱 구성하기

개요

본 문서에서는 단일 호스트 환경에서 3개의 Nacos 인스턴스를 클러스터로 구성하고, Nginx를 통해 외부 요청을 분산 처리하는 방법을 설명합니다. 사전 준비로 데이터베이스 초기화 및 방화벽 설정은 완료되어야 합니다.

Java 런타임 설치

Nacos는 자바 기반 애플리케이션이므로 JDK가 필수입니다.

JDK 압축 해제

cd /data/soft
tar -zxvf jdk-23_linux-x64_bin.tar.gz

환경 변수 설정

시스템 전역에서 Java 명령어를 사용할 수 있도록 환경 변수를 등록합니다.
sudo vi /etc/profile
다음 내용을 파일 끝에 추가합니다:
# JAVA 환경 설정
export JAVA_HOME=/data/soft/jdk-23.0.2
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

환경 반영

설정한 환경 변수를 즉시 적용합니다.
source /etc/profile

Nacos 클러스터 구성

Nacos 서버 다운로드

공식 사이트에서 최신 배포판을 다운로드합니다: https://nacos.io/download/nacos-server/

압축 해제

unzip nacos-server-2.5.0.zip

각 노드별 포트 설정

여기서는 nacos-8850, nacos-8860, nacos-8870 디렉터리에 각각 복사하여 독립된 인스턴스로 운영합니다. 예: 첫 번째 노드의 포트 지정:
vi /data/soft/nacos-8850/conf/application.properties
내용 추가 또는 수정:
server.port=8850
동일하게 nacos-8860nacos-8870도 각각 8860, 8870 포트로 설정합니다.

외부 데이터베이스 연결 설정

MySQL 계열(GreatSQL 포함) 데이터베이스를 사용하는 경우 다음과 같이 설정합니다:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.188.23:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=Nacos#1234

클러스터 멤버 정의

모든 노드가 서로를 인식할 수 있도록 cluster.conf 파일을 생성합니다. 각 인스턴스의 conf 디렉터리에 동일한 파일을 배치합니다:
vi /data/soft/nacos-8850/conf/cluster.conf
다음 IP와 포트 정보를 입력:
192.168.188.26:8850
192.168.188.26:8860
192.168.188.26:8870
나머지 두 노드에도 동일한 내용으로 작성합니다.

노드 시작

클러스터 모드로 각 인스턴스를 순차적으로 실행합니다:
cd /data/soft/nacos-8850/bin && ./startup.sh -m cluster
cd /data/soft/nacos-8860/bin && ./startup.sh -m cluster
cd /data/soft/nacos-8870/bin && ./startup.sh -m cluster

서비스 상태 확인

실행 중인 포트를 확인하여 정상 시작 여부를 검증합니다:
ss -lntp | grep java
기대 결과: 주 통신 포트(8850, 8860, 8870) 외에 gRPC 관련 리스닝 포트(예: 7850, 9850 등)도 함께 열려 있어야 합니다.

Nginx를 통한 로드 밸런싱 구성

Nginx 다운로드 및 설치

cd /data/soft
wget http://nginx.org/download/nginx-1.27.2.tar.gz
tar -zxvf nginx-1.27.2.tar.gz

빌드 및 설치

TCP 프록시 기능을 활성화하기 위해 --with-stream 옵션을 포함합니다:
cd nginx-1.27.2
./configure --prefix=/data/soft/nginx --with-stream
make && make install

구성 파일 수정

/data/soft/nginx/conf/nginx.conf 파일을 아래와 같이 편집합니다:
worker_processes  3;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65s;

    # HTTP 기반 Nacos 클러스터 업스트림
    upstream nacos_http_backend {
        server 192.168.188.26:8850;
        server 192.168.188.26:8860;
        server 192.168.188.26:8870;
    }

    server {
        listen       8848;
        server_name  localhost;

        location /nacos {
            proxy_pass http://nacos_http_backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

# TCP 스트림 기반 gRPC 리스너 균형
stream {
    upstream nacos_stream_backend {
        server 192.168.188.26:9850;
        server 192.168.188.26:9860;
        server 192.168.188.26:9870;
    }

    server {
        listen 9848;
        proxy_pass nacos_stream_backend;
    }
}

Nginx 시작

/data/soft/nginx/sbin/nginx

접속 테스트

브라우저에서 다음 URL로 접근하여 Nacos 대시보드를 확인합니다:
http://192.168.188.26:8848/nacos
기본 계정 정보: 사용자명 nacos, 비밀번호 nacos

태그: nacos nginx linux cluster load-balancing

8월 27일 06:33에 게시됨