9.2.1 部署模式选择与环境准备
在选择 Nacos 部署模式前,应根据业务规模、可用性与运维成本评估。单机模式适合开发/测试,依赖少、部署快但无高可用;集群模式适合生产,建议≥3 节点并配套外置数据库与负载均衡。中小规模推荐 3 节点,跨地域可规划多集群与同步策略。
部署模式与接入路径示意:
环境准备要点:Linux x86_64,内存≥4GB(生产建议 8GB+),磁盘预留日志与数据空间;JDK 8/11;开放 8848/9848/9849;节点互通与 NTP 时间同步。以下为一套可直接执行的环境检查与准备流程:
# 1) 基础环境检查
uname -a
free -m
df -h
java -version
# 2) 配置 JAVA_HOME(以 JDK 8 为例)
echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' | sudo tee -a /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile
source /etc/profile
java -version # 预期输出 1.8.x 或 11.x
# 3) 端口检查与放通(firewalld)
sudo firewall-cmd --add-port=8848/tcp --permanent
sudo firewall-cmd --add-port=9848/tcp --permanent
sudo firewall-cmd --add-port=9849/tcp --permanent
sudo firewall-cmd --reload
sudo ss -lntp | egrep '8848|9848|9849' # 预期无冲突占用
# 4) 时间同步
sudo systemctl enable --now chronyd
chronyc tracking # 预期同步状态为正常
集群模式必须外置数据库(MySQL 5.7+)。示例初始化流程(库名 nacos_config):
# 1) 创建库与用户
mysql -uroot -p <<'SQL'
CREATE DATABASE nacos_config DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'nacos'@'%' IDENTIFIED BY 'Nacos@123';
GRANT ALL PRIVILEGES ON nacos_config.* TO 'nacos'@'%';
FLUSH PRIVILEGES;
SQL
# 2) 导入 Nacos 官方建表脚本(路径以实际解压目录为准)
# 假设 nacos-server 已解压到 /opt/nacos
mysql -unacos -pNacos@123 nacos_config < /opt/nacos/conf/nacos-mysql.sql
负载均衡建议在应用侧统一入口。以下为 Nginx 负载均衡示例(仅示意,生产需启用健康检查与 TLS):
# /etc/nginx/conf.d/nacos.conf
upstream nacos_cluster {
server 10.0.0.11:8848;
server 10.0.0.12:8848;
server 10.0.0.13:8848;
}
server {
listen 80;
server_name nacos.example.com;
location / {
proxy_pass http://nacos_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
运行用户与目录规划建议统一标准化(便于日志与排障):
# 创建运行用户
sudo useradd -r -s /sbin/nologin nacos
# 建议目录结构
# /opt/nacos 程序目录
# /data/nacos/logs 日志目录
# /data/nacos/data 数据目录(若使用本地存储)
sudo mkdir -p /data/nacos/{logs,data}
sudo chown -R nacos:nacos /data/nacos
常见问题与快速排错(示例命令与预期):
# 1) 端口不可用
ss -lntp | grep 8848
# 预期:若已有占用,需释放或修改 Nacos 配置端口
# 2) 数据库连接失败
grep -n "db" /opt/nacos/conf/application.properties
# 检查 db.url.0、db.user.0、db.password.0 是否正确
mysql -unacos -pNacos@123 -h 10.0.0.20 -P3306 -e "show databases;"
# 预期:能看到 nacos_config
# 3) 时间不一致导致心跳异常
chronyc sources -v
# 预期:至少有一个源处于同步状态(*)
练习:
1) 在三台虚拟机上完成 JDK、端口与 NTP 准备,并用上述命令验证结果。
2) 初始化 nacos_config 数据库,记录建表耗时并截图 show tables; 结果。
3) 配置 Nginx 负载均衡并用 curl http://nacos.example.com/nacos 验证可达性(预期返回 Nacos 控制台页面或 302 跳转)。