환경 준비 및 설치
다음 세 대의 서버를 사용하여 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;
}
}
이렇게 구성하면, 하나의 엔드포인트로 모든 클러스터 노드에 접근 가능하며, 장애 시 자동 재배분이 가능합니다.
접근 및 검증
브라우저에서 다음 주소로 접속하여 로그인 화면을 확인합니다:
- http://192.168.88.44:8848/nacos/#/login
- http://192.168.88.45:8848/nacos/#/login
- http://192.168.88.46:8848/nacos/#/login
기본 사용자명과 비밀번호는 모두 nacos입니다.