CentOS
2024/8/8大约 7 分钟
目录
一、环境依赖
| 软件/环境 | 版本要求 | 包名 | 安装方式 | 备注 |
|---|---|---|---|---|
| Linux | CentOS 7.x | - | - | 需确保系统网络正常、权限充足 |
| JDK | 1.8+(推荐1.8.0_200+) | - | 官网下载或yum安装 | Nacos运行核心依赖,必须提前配置JAVA_HOME |
| MySQL | 5.7+ 或 8.0+ | - | 官网下载或yum安装 | 存储Nacos配置数据,需支持utf8mb4编码 |
| Nacos | 1.2.1 | nacos-server-1.2.1.tar.gz | 官网下载 | 稳定版,适用于单机/集群场景 |
| Nacos | 2.4.3 | nacos-server-2.4.3.tar.gz | 官网下载 | 高版本,支持更多特性,gRPC端口配置需适配 |
二、Nacos单机搭建
1. 解压缩安装包
# 假设安装包存放在/soft目录下,解压并命名为指定版本目录
sudo tar -zxvf /soft/nacos-server-1.2.1.tar.gz -C /soft/
sudo mv /soft/nacos /soft/nacos-server-1.2.12. 初始化数据库
Nacos单机需依赖MySQL存储配置,需先创建数据库并执行初始化脚本:
# 登录MySQL(需提前安装并启动MySQL服务)
mysql -u root -p
# 执行SQL命令创建数据库(支持utf8mb4编码)
CREATE DATABASE IF NOT EXISTS `nacos_config` DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
# 切换至目标数据库
use nacos_config;
# 执行Nacos自带的初始化脚本(路径需替换为实际解压路径)
source /soft/nacos-server-1.2.1/conf/nacos-mysql.sql;
# 退出MySQL
exit;3. 修改数据库配置
# 查看配置文件并备份(避免误改丢失原配置)
ll -a /soft/nacos-server-1.2.1/conf | grep properties
sudo cp /soft/nacos-server-1.2.1/conf/application.properties /soft/nacos-server-1.2.1/conf/application.properties.bak20240801
# 编辑配置文件,配置MySQL连接信息
sudo vi /soft/nacos-server-1.2.1/conf/application.properties在配置文件中添加/修改以下内容(需替换IP、端口、密码为实际MySQL信息):
#*************** Config Module Related Configurations ***************#
### 启用MySQL作为数据源
spring.datasource.platform=mysql
### 数据库实例数量(单机场景为1)
db.num=1
### MySQL连接信息(替换为实际IP、端口、密码)
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
db.user=root
db.password=your_mysql_root_password(替换为实际密码)4. 新增用户并赋权
创建专用nacos用户(非交互用户,仅用于运行服务),避免使用root权限:
# 强制创建nacos用户组(-f:已存在则不报错)
sudo groupadd -f nacos
# 创建nacos用户,归属nacos组,禁止交互登录
sudo useradd -g nacos nacos -s /sbin/nologin
# 验证用户创建结果
id nacos
getent passwd nacos
getent passwd nacos | cut -d: -f7
# 授权nacos用户为目录属主(递归授权所有子文件)
sudo chown -R nacos:nacos /soft/nacos-server-1.2.1/
# 给bin目录下所有脚本添加执行权限(关键:确保启动/停止脚本可运行)
sudo chmod +x /soft/nacos-server-1.2.1/bin/*5. 配置systemd服务管理
通过systemd实现服务启停、开机自启:
# 创建nacos服务配置文件
sudo vi /etc/systemd/system/nacos.service添加以下内容(替换JAVA_HOME和Nacos路径为实际值):
[Unit]
Description=Nacos Service
After=network.target mysql.service # 依赖网络和MySQL服务,确保MySQL先启动
Wants=mysql.service
[Service]
Type=forking
User=nacos
Group=nacos
# 配置JDK环境变量(替换为实际JAVA_HOME路径)
Environment="JAVA_HOME=/soft/jdk/jdk1.8.0_411"
# 单机启动命令(-m standalone指定单机模式)
ExecStart=/soft/nacos-server-1.2.1/bin/startup.sh -m standalone
# 停止命令
ExecStop=/soft/nacos-server-1.2.1/bin/shutdown.sh
# 重载命令(先停止再启动,确保配置生效)
ExecReload=/soft/nacos-server-1.2.1/bin/shutdown.sh && /soft/nacos-server-1.2.1/bin/startup.sh -m standalone
PrivateTmp=true
Restart=on-failure # 服务异常时自动重启
[Install]
WantedBy=multi-user.target6. 启动服务并配置开机自启
# 重新加载systemd配置(识别新创建的nacos服务)
sudo systemctl daemon-reload
# 查看服务状态
sudo systemctl status nacos.service
# 启动服务
sudo systemctl start nacos.service
# 设置开机自启
sudo systemctl enable nacos.service
# 验证开机自启配置
sudo systemctl is-enabled nacos.service7. 防火墙端口开放
Nacos单机需开放以下端口:
# 8848:Nacos核心端口(HTTP访问、服务注册发现)
firewall-cmd --add-port=8848/tcp --permanent
# 9848:客户端gRPC请求端口(客户端与服务端通信)
firewall-cmd --add-port=9848/tcp --permanent
# 重新加载防火墙规则(使配置生效)
firewall-cmd --reload
# 查看已开放端口
firewall-cmd --list-ports8. 访问验证
- 默认访问地址:http://服务器IP:8848/nacos
- 默认账号/密码:nacos/nacos(首次登录建议修改密码)
三、Nacos集群搭建
1. 环境准备
- 至少3台CentOS 7.x服务器(推荐配置:2核4G以上)
- 所有节点已安装JDK 1.8+、MySQL 5.7+(MySQL建议主从复制,确保高可用)
- 所有节点网络互通(关闭防火墙或开放相关端口)
- 统一Nacos版本(以1.2.1为例)
2. 解压缩安装包(所有节点执行)
# 创建Nacos安装目录
sudo mkdir -p /opt/nacos
# 上传安装包至/opt/nacos目录,解压
sudo tar -zxvf /opt/nacos/nacos-server-1.2.1.tar.gz -C /opt/nacos/
# 进入解压后的目录
cd /opt/nacos/nacos3. 修改集群配置(所有节点执行)
# 复制集群配置模板
cd /opt/nacos/nacos/conf/
sudo cp cluster.conf.example cluster.conf
# 编辑集群配置(添加所有节点的IP:端口,默认端口8848)
sudo vim cluster.conf添加集群节点信息(替换为实际服务器IP):
10.237.198.132:8848
10.237.198.58:8848
10.237.198.57:88484. 修改数据库配置(所有节点执行)
集群共享同一MySQL数据库(需确保所有节点能访问MySQL服务):
# 备份配置文件
sudo cp /opt/nacos/nacos/conf/application.properties /opt/nacos/nacos/conf/application.properties.bak20240801
# 编辑配置文件
sudo vim /opt/nacos/nacos/conf/application.properties添加以下内容(替换为实际MySQL集群地址和密码):
#*************** Config Module Related Configurations ***************#
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://10.237.198.58:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
db.user=root
db.password=mLEh:*#gu6ok(替换为实际密码)5. 权限配置(所有节点执行)
# 创建nacos用户组和用户
sudo groupadd -f nacos
sudo useradd -g nacos nacos -s /sbin/nologin
# 授权目录属主
sudo chown -R nacos:nacos /opt/nacos/
# 给bin目录脚本添加执行权限
sudo chmod +x /opt/nacos/nacos/bin/*6. 启动集群(所有节点执行)
# 进入bin目录
cd /opt/nacos/nacos/bin/
# 停止已有服务(若存在)
sudo ./shutdown.sh
# 启动集群(默认cluster模式,无需加-m参数)
sudo ./startup.sh
# 查看启动日志(验证是否启动成功)
tail -500f /opt/nacos/nacos/logs/start.out- 启动成功标志:日志中显示
Nacos cluster is starting successfully in cluster mode.
7. 防火墙配置(所有节点执行)
# 开放核心端口
firewall-cmd --add-port=8848/tcp --permanent # 核心HTTP端口
firewall-cmd --add-port=9848/tcp --permanent # 客户端gRPC端口
firewall-cmd --add-port=9858/tcp --permanent # 服务端gRPC端口
firewall-cmd --reload四、Nginx代理Nacos(适配Nacos 2.4.3 gRPC端口)
Nacos 2.4.3的gRPC基于HTTP/2协议,需Nginx 1.13.10+版本支持反向代理。
1. 前提条件
- Nginx版本:1.13.10+(支持HTTP/2和gRPC代理)
- Nacos 2.4.3集群已正常运行
- (可选)SSL证书(推荐HTTPS访问,避免兼容性问题)
- 防火墙开放Nginx监听端口
2. Nginx配置
编辑Nginx主配置文件(通常为/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf):
http {
# 其他基础配置(略)
# 配置Nacos gRPC集群 upstream
upstream nacos_grpc_cluster {
server 10.206.0.13:9848; # 节点1 gRPC端口(客户端-服务端)
server 10.206.0.8:9848; # 节点2 gRPC端口
server 10.206.0.13:9858; # 节点1 gRPC端口(服务端-服务端)
server 10.206.0.8:9858; # 节点2 gRPC端口
}
# HTTP/2代理(不推荐生产环境,仅测试用)
server {
listen 80 http2;
server_name nacos-grpc.example.com; # 替换为实际域名/IP
# 提醒:非HTTPS的HTTP/2可能存在客户端兼容性问题
location / {
grpc_pass grpc://nacos_grpc_cluster;
grpc_read_timeout 30s; # 超时配置
grpc_send_timeout 30s;
}
}
# HTTPS+HTTP/2代理(推荐生产环境)
server {
listen 443 ssl http2;
server_name nacos-grpc.example.com; # 替换为实际域名
# SSL证书配置(替换为实际路径)
ssl_certificate /etc/nginx/ssl/nacos.crt;
ssl_certificate_key /etc/nginx/ssl/nacos.key;
# SSL优化配置
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
# gRPC反向代理
location / {
grpc_pass grpcs://nacos_grpc_cluster; # 基于SSL的gRPC
grpc_read_timeout 30s;
grpc_send_timeout 30s;
}
}
}3. 注意事项
- 端口冲突:确保Nginx监听端口(80/443)与Nacos端口不冲突
- SSL证书:生产环境必须使用有效SSL证书,避免安全风险
- Nginx版本:低于1.13.10的版本不支持gRPC代理,需升级
- 日志调试:配置异常时,查看Nginx日志(
/var/log/nginx/error.log)排查问题 - 端口映射:Nacos 2.4.3的gRPC端口对应关系:
- 9848:客户端 → 服务端(请求端口)
- 9858:服务端 → 服务端(集群通信端口)
- 9849:客户端 → 服务端(备用端口)
4. 重启Nginx生效
# 验证配置文件语法
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx五、参考资料
- [centos7部署Nacos(超详细)](https://opens new window)
- [CentOS 7 安装 Nacos(单例模式)](https://opens new window)
- Nacos官方文档 - 集群部署
- Nginx官方文档 - gRPC代理