>[info] **参考资料:**[https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html](https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html)
[TOC]
## 一、说明
生产环境中部署`nacos`首先肯定是使用集群模式`cluster`保证高可用,本文主要详细介绍最佳的集群方案怎样搭建,然后`spring cloud`程序怎样集成
## 二、集群方案
下图是官方推荐的集群方案

因此开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面
http://ip1/:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。
http://vip/:port/openAPI 挂载VIP模式,直连vip即可,下面挂server真实ip,可读性不好。
http://nacos.com/:port/openAPI 域名 + VIP模式,可读性好,而且换ip方便,推荐模式
> 这里的`VIP`直接使用`Nginx`就可以实现了
## 三、方案实现
`nacos`集群最低配置是至少需要3个实例,因为我在本地搭建只有一台机器所以通过修改端口的方式来部署这3个实例,端口分别为:`8848`、`8849`、`8850`
### 3.1 修改集群配置
nacos的conf目录下有配置文件cluster.conf,请每行配置成ip:port。
~~~
10.80.98.110:8848
10.80.98.110:8849
10.80.98.110:8850
~~~
> 10.80.98.110是我本机ip,三个nacos实例都配置一样即可
### 3.2 配置 MySQL 数据库
集群模式必须使用`MySQL`数据库,生产使用建议至少主备模式,或者采用高可用数据库
#### 3.2.1 初始化 MySQL 数据库
脚本在nacos的conf目录下有配置文件nacos-mysql.sql,直接执行即可
#### 3.2.2 修改 application.properties 添加数据库配置
配置文件在nacos的conf目录下,添加以下配置
~~~
db.num=1
db.url.0=jdbc:mysql://10.80.98.111:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
~~~
> db.num 为数据库实例数量
> 如果有多个数据库实例通过 db.url.0、db.url.1..... 指定不同的数据库链接
### 3.3 其他实例修改Nacos端口
修改nacos的conf目录下`application.properties`下的`server.port`变量,三个实例分别为:`8848`、`8849`、`8850`
> 如果是不同机器部署集群的话这步可以忽略
### 3.4 启动Nacos集群
分别把3个实例都启动起来,执行nacos的bin目录下`startup.sh`,该启动文件默认就是集群模式
### 3.5 修改Nginx配置域名`nacos.dopan.net`绑定`VIP`
修改`conf/nginx.conf`配置
~~~
upstream nacos {
server 10.80.98.110:8848;
server 10.80.98.110:8849;
server 10.80.98.110:8850;
}
server {
listen 80;
server_name nacos.dopan.net;
location / {
proxy_pass http://nacos;
}
}
~~~
### 3.6 程序集成Nacos集群
nacos的地址`server-addr`配置域名`nacos.dopan.net`

## 四、Nacos集群管理

- 微服务介绍
- 软件架构设计
- 系统简介
- 运行环境
- 模块介绍
- 启动部署命令参数
- 打包说明
- 开发说明
- Java8
- 认证理论
- 有网络隔离
- 无网络隔离
- token自动续签设计
- url级权限控制
- 单点登录
- 登录
- 用户名密码(+验证码)登录
- 通过openId获取token
- 通过手机号获取token
- 第三方系统接口对接
- 第三方系统单点登录
- 通用刷新token
- 账号登出接口
- 统一异常处理
- 日志埋点工具
- 审计日志
- yml自定义配置自动提示
- Redis使用
- CacheManager集成
- 搜索中心
- 网关zuul动态路由
- swagger
- 解决开发环境的服务冲突和实例乱窜
- 多租户理论
- 多租户实现
- 分布式锁
- 分布式id生成器
- 分布式事务
- 分库分表sharding-sphere
- 消息队列
- 系统幂等性
- X 实时搜索系统设计
- Spring Cloud性能调优
- 链路跟踪
- JWT的RSA非对称密钥生成
- jdk
- Oracle
- OpenJDK
- Dragonwell
- JVM介绍
- 常见JVM内存错误及解决方案
- JVM分析工具详解
- nexus
- docker
- 安装
- docker-compose安装
- 私有仓库搭建
- 指定数据储存目录
- 添加私有仓库
- 提交拉取镜像
- X 免Dockerfile文件构建项目镜像
- 持续集成部署CI/CD
- Confluence知识管理
- JIRA事务与项目跟踪软件
- Gitlab代码仓库
- Jenkins自动化部署
- SonarQube代码检测
- Rancher容器管理平台
- nacos
- 部署
- Rancher部署nacos
- 注册中心
- 配置中心
- 多环境
- 生产部署方案
- X 通过Nginx来实现环境隔离
- Sentinel详解
- 动态规则扩展
- 在生产环境中使用 Sentinel
- 启动配置项
- X 网关流控
- ELK日志系统和慢查询SQL
- docker安装
- 普通安装
- Filebeat安装部署
- ES数据定期删除
- 没数据问题排查思路
- X Logstash的grok语法调试
- 慢查询sql
- 审计日志
- Elasticsearch性能优化
- APM监控
- SkyWalking介绍
- Zipkin,Pinpoint,SkyWalking三种服务链路监控组件分析
- 服务端部署
- 客户端部署
- 日志清理
- Metrics监控
- 二进制包部署
- docker部署
- docker安装各组件监控
- Grafana仪表盘和告警配置
- JMeter压力测试工具
- 使用说明
- 分布式事务
- TX-LCN(同步)
- X SEATA(同步)
- X RocketMQ(异步)
- 消息队列
- RocketMQ
- RocketMQ安装部署
- RocketMQ常见异常处理
- SpringCloud-Stream
- RabbitMQ
- Redis
- 单机安装
- 主从复制
- 主从复制+哨兵
- cluster集群
- 持久化方案
- MySQL
- 单机安装
- 主从复制
- 主从切换
- 主主复制
- 高可用
- 分表分库
- Canal数据库日志解析消费
- Canal安装
- 实时同步数据到ElasticSearch
- FastDFS
- docker安装
- centos安装
- 项目管理系统
- 禅道
- 111