nacos集群部署

278 阅读2分钟
# nacos集群部署
## 使用nacos的原因
1.目前consul有一些问题,比如注册与发现比较慢,注册错误服务不能自动删除,集群服务不同步等问题

2.目前流行nacos,他拥有配置中心功能,会解决后面k8s配置、或者当前本地配置的问题

3.配合Sentinel做接口限流。

*本文档只说nacos集群环境如何搭建,其他功能后续上线

## 扩展服务
部署1个数据库(内置集群,高可用),部署3个nacos服务。

## 版本选择 
nacos服务端选择版本 :nacos-server-2.1.0.tar.gz

nacos客户端选择版本(目前线上代码已内置)
```
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.7.RELEASE</version>
</dependency>
```

## nacos集群部署准备内容
### 准备高可用的mysql数据库,创建nacos数据库,执行/conf/nacos-mysql.

### 配置服务器host
```
nacos专用的中间数据库
mysqlmiddle.ruipos
三台nacos
nacosv31.ruipos
nacosv32.ruipos
nacosv32.ruipos
```
### 解压服务端,需要修改两个配置文件做准备 application.properties,cluster.conf

#### application.properties 配置数据库
```
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://mysqlmiddle.ruipos:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=hyy
db.password.0=hyyuser
```

#### 创建文件cluster.conf 添加nacos集群集群,默认端口号8848
不能使用域名,使用域名会多自动多出一条本机ip地址
```
192.168.1.191:8848
192.168.1.76:8848
192.168.1.185:8848
```

### 启动
默认集群启动方式,启动命令:/opt/nacos/nacos/bin/bin/startup.sh

### 关闭
关闭命令:/bin/shutdown.sh

### 进入一台nacos(ip:8848/nacos),增加命名空间(表示环境)

命名空间ID(不填则自动生成) (请同名称):dev

命名空间名:dev

描述:dev
```
开发环境dev 测试环境cs 集成环境jc 正式环境rls
```

## 客户端
当前服务已经集成nacos包

新增修改配置文件:outside-app.properties、outside.properties、outside-stat.properties、outside-control.properties、 outside-paymen.yml
```
#命名空间 开发环境dev 测试环境cs 集成环境jc 正式环境rls
spring.cloud.nacos.discovery.namespace=dev
#组 命名空间+数字
spring.cloud.nacos.discovery.group=dev2
#nacos集群地址 可配置域名
spring.cloud.nacos.discovery.server-addr=nacosv31.ruipos:8848,nacosv32.ruipos:8848,nacosv33.ruipos:8848

# 配置切换
spring.cloud.consul.enabled=false
spring.cloud.nacos.discovery.enabled=true

    consul:
      #是否启用 consul 
      enabled: false
    nacos:
      discovery:
        #是否启用 nacos 
        enabled: true
        #Consul代理主机名
        server-addr: nacosv31.ruipos:8848,nacosv32.ruipos:8848,nacosv33.ruipos:8848
        namespace: dev
        group: dev2
```


## 注意事项
·nacos服务启动默认2g内存,配置见/bin/startup.sh

·2.0版本注册不同步,可能原下的是开发版本,改用2.1正式版本

·nacos机器域名不能使用“_”符号

·nacos除了开放8848 http端口,还要开放9848、9849两个tcp端口。

·cluster.conf文件错误会导致集群数据不同步
·正常情况下,单台服务只有一个nacos进程,出现这个情况kill全部机器再启动。


## 切换consul与nacos
修改配置文件重启服务outside-app.properties、outside.properties、outside-stat.properties、outside-control.properties、 outside-paymen.yml
```
# 配置切换
spring.cloud.consul.enabled=true
spring.cloud.nacos.discovery.enabled=false


    consul:
      #是否启用 consul 
      enabled: true
    nacos:
      discovery:
        #是否启用 false 
```