Ubuntu 16.04에서 Nacos 클러스터 구성하기

환경 준비 및 설치

다음 세 대의 서버를 사용하여 Nacos 클러스터를 구축합니다:

  • 192.168.88.44
  • 192.168.88.45
  • 192.168.88.46

Nacos 서버 패키지 파일을 각 서버의 /opt/nacos 디렉토리로 복사한 후, 압축을 해제합니다:

tar -zxf nacos-server-2.0.3.tar.gz

데이터베이스 설정

MySQL 서버에서 다음 명령어로 nacos_config 데이터베이스를 생성하고 스키마를 적용합니다:

mysql -u root -p nacos_db < /opt/nacos/conf/nacos-mysql.sql

이 스크립트는 여러 테이블을 포함하며, 주요 기능은 구성 정보 저장, 버전 관리, 다중 테넌트 지원입니다.

application.properties 구성

각 서버의 /opt/nacos/conf/application.properties 파일을 수정하여 MySQL 연결 정보를 설정합니다:

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.88.44:3306/nacos_config?useUnicode=true&characterEncoding=utf8&useSSL=false
db.user=nacos_user
db.password=nacos_password

방화벽 설정

Nacos 서비스가 정상적으로 동작하도록 방화벽에 필수 포트를 열어야 합니다:

firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --zone=public --add-port=9848/tcp --permanent
firewall-cmd --zone=public --add-port=9849/tcp --permanent
systemctl restart firewalld.service

주의: 포트 9849는 클러스터 내 노드 간 동기화를 위한 핵심 포트입니다. 이 포트가 열리지 않으면 클러스터 상태 불일치 문제가 발생할 수 있습니다.

시스템 서비스 등록 및 자동 시작 설정

/etc/systemd/system/nacos.service 파일을 생성하여 시스템 레벨에서 서비스 관리 가능하게 합니다:

[Unit]
Description=Nacos Server
After=network.target

[Service]
Type=forking
ExecStart=/opt/nacos/nacos/bin/startup.sh
ExecReload=/opt/nacos/nacos/bin/shutdown.sh
ExecStop=/opt/nacos/nacos/bin/shutdown.sh
Restart=always
PrivateTmp=true

[Install]
WantedBy=default.target

서비스 시작

서비스를 등록하고 시작합니다:

systemctl daemon-reload
systemctl enable nacos
systemctl start nacos

실행 상태 확인을 위해 다음 명령어를 사용합니다:

netstat -ntlp | grep 8848

클러스터 구성

모든 노드가 서로 인식되도록 클러스터 구성 파일을 작성합니다. 먼저 예제 파일을 복사합니다:

cp /opt/nacos/conf/cluster.conf.example /opt/nacos/conf/cluster.conf

편집 후, 각 서버의 IP 주소를 기재합니다:

192.168.88.44:8848
192.168.88.45:8848
192.168.88.46:8848

로드 밸런싱을 위한 NGINX 설정

클러스터 접근을 위해 로드 밸런서로 사용할 NGINX를 구성합니다. 예시 설정은 다음과 같습니다:

upstream nacos_cluster {
    server 192.168.88.44:8848 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.88.45:8848 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.88.46:8848 weight=1 max_fails=3 fail_timeout=30s;
}

server {
    listen 80;
    location / {
        proxy_pass http://nacos_cluster;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

이렇게 구성하면, 하나의 엔드포인트로 모든 클러스터 노드에 접근 가능하며, 장애 시 자동 재배분이 가능합니다.

접근 및 검증

브라우저에서 다음 주소로 접속하여 로그인 화면을 확인합니다:

기본 사용자명과 비밀번호는 모두 nacos입니다.

태그: nacos ubuntu MySQL cluster systemd

6월 27일 16:41에 게시됨