# Nacos 部署与使用指南

# Nacos 部署与使用指南

Nacos 是阿里巴巴开源的服务发现和配置管理平台，支持服务注册、配置管理、服务健康监测等功能。以下是 Nacos 的完整部署与使用手册。

## 一、Nacos 部署方案

### 1. 单机模式（开发环境）

#### 1.1 下载与启动

```bash
# 下载最新稳定版
wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
tar -zxvf nacos-server-2.2.3.tar.gz
cd nacos/bin

# 启动（Linux/Mac）
sh startup.sh -m standalone

# Windows
startup.cmd -m standalone
```

访问 `http://localhost:8848/nacos` (默认账号 nacos/nacos)

#### 1.2 Docker 方式

```bash
docker run --name nacos-standalone -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:v2.2.3
```

### 2. 集群模式（生产环境）

#### 2.1 准备3台服务器

```bash
# 每台服务器修改配置文件 conf/cluster.conf
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848
```

#### 2.2 配置数据库（MySQL）

```sql
# 创建数据库
CREATE DATABASE nacos_config CHARACTER SET utf8mb4;

# 初始化表结构
USE nacos_config;
SOURCE conf/nacos-mysql.sql
```

#### 2.3 修改配置文件

```properties
# conf/application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=yourpassword
```

#### 2.4 启动集群

```bash
# 每台服务器执行
sh startup.sh
```

## 二、核心功能使用

### 1. 服务注册与发现

#### 1.1 Spring Cloud 集成

```xml
<!-- pom.xml -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2022.0.0.0</version>
</dependency>
```

```yaml
# application.yml
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
```

#### 1.2 手动注册服务

```bash
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example-service&ip=192.168.1.100&port=8080'
```

### 2. 配置管理

#### 2.1 创建配置

1. 登录控制台 → 配置管理 → 配置列表
2. 新建配置：
   - Data ID: example.properties
   - Group: DEFAULT_GROUP
   - 配置格式: Properties
   - 内容: 
     ```properties
     server.port=8080
     spring.datasource.url=jdbc:mysql://localhost:3306/test
     ```

#### 2.2 Spring Boot 获取配置

```java
@RefreshScope
@RestController
public class ConfigController {
    
    @Value("${server.port}")
    private String port;
    
    @GetMapping("/config")
    public String getConfig() {
        return port;
    }
}
```

### 3. 命名空间与分组

#### 3.1 创建命名空间

1. 控制台 → 命名空间 → 新建
2. 填写命名空间ID和名称

#### 3.2 使用命名空间

```yaml
spring:
  cloud:
    nacos:
      config:
        namespace: your-namespace-id
        group: YOUR_GROUP
```

## 三、生产环境最佳实践

1. **高可用架构**：
   - 至少3节点集群
   - 使用独立MySQL集群

2. **安全配置**：
   ```properties
   # conf/application.properties
   nacos.core.auth.enabled=true
   nacos.core.auth.system.type=nacos
   nacos.core.auth.server.identity.key=yourkey
   nacos.core.auth.server.identity.value=yourvalue
   ```

3. **监控告警**：
   - 集成Prometheus
   - 配置健康检查告警规则

4. **备份策略**：
   - 定期备份MySQL数据
   - 导出重要配置

## 四、常见问题排查

1. **服务注册失败**：
   ```bash
   # 检查Nacos服务状态
   curl http://127.0.0.1:8848/nacos/v1/ns/service/list
   
   # 查看日志
   tail -f logs/nacos.log
   ```

2. **配置不生效**：
   - 检查namespace和group是否匹配
   - 确认配置已发布
   - 检查客户端是否有@RefreshScope注解

3. **性能优化**：
   ```properties
   # 调整JVM参数
   JAVA_OPT="${JAVA_OPT} -Xms2g -Xmx2g -Xmn1g"
   ```

## 五、版本升级

```bash
# 1. 备份数据和配置
# 2. 停止旧版本
sh shutdown.sh
# 3. 替换新版本
# 4. 启动新版本
sh startup.sh
```

---

通过本指南，您可以快速部署Nacos服务并应用于生产环境。Nacos作为微服务架构的核心组件，能够有效管理服务发现和配置中心，提高系统可靠性和可维护性。