개요
본 문서에서는 단일 호스트 환경에서 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-8860과
nacos-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