# :-: Nacos生产部署方案
## 一、说明
生产环境中部署`nacos`首先肯定是使用集群模式`cluster`保证高可用,本文主要详细介绍最佳的集群方案怎样搭建,然后`spring cloud`程序怎样集成
## 二、集群方案
下图是官方推荐的集群方案,通过域名 + VIP模式的方式来实现,可读性好,而且换ip方便![](https://img.kancloud.cn/c6/94/c6945149a006b4edb67d837f01d30bf7_1098x476.png)
> 这里的`VIP`直接使用 `Nginx`就可以实现了
## 三、方案实现
`nacos`集群最低配置是至少需要3个实例,因为我在本地搭建只有一台机器所以通过修改端口的方式来部署这3个实例,端口分别为:`8848`、`8849`、`8850`
### 3.1. 修改集群配置
nacos的conf目录下有配置文件cluster.conf,请每行配置成ip:port。
~~~
192.168.28.130:8848
192.168.28.130:8849
192.168.28.130:8850
~~~
> 192.168.28.130是我本机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://192.168.28.131:3306/nacos_config?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`![](https://img.kancloud.cn/1a/17/1a17c69dc6e2ea4c135bcf263851c813_503x107.png)
> 如果是不同机器部署集群的话这步可以忽略
### 3.4. 启动Nacos集群
分别把3个实例都启动起来,执行nacos的bin目录下`startup.sh`,该启动文件默认就是集群模式
### 3.5. 修改Nginx配置
修改`conf/nginx.conf`配置
~~~
upstream nacos {
server 192.168.28.130:8848;
server 192.168.28.130:8849;
server 192.168.28.130:8850;
}
server {
listen 80;
server_name test.nacos.com;
location / {
proxy_pass http://nacos;
}
}
~~~
> 配置域名`test.nacos.com`绑定`VIP`
### 3.6. 程序集成Nacos集群
nacos的地址`server-addr`配置域名`test.nacos.com`![](https://img.kancloud.cn/e9/16/e9161e437d3f8d18752ca2b42c274cb3_697x569.png)
## 四、Nacos集群管理
![](https://img.kancloud.cn/5e/73/5e7359697747efb64401c7fef6f3400d_2036x1073.png)
> **参考资料**:[https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html](https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html)
- 项目介绍
- 项目声明
- 项目简介
- 架构设计
- 项目亮点功能介绍
- 技术栈介绍
- 核心功能
- 运行环境
- 项目更新日志
- 文档更新日志
- F&Q
- 部署教程
- 环境准备
- JDK安装
- JDK1.8,17共存
- maven
- 分布式缓存Redis
- 单机版
- 集群
- 注册&配置中心alibaba/nacos
- 介绍
- Nacos安装
- Nacos配置中心
- Nacos注册发现
- Nacos生产部署方案
- 服务监控-BootAdmin
- 基本介绍
- 如何使用
- 整合Admin-Ui
- 客户端配置
- 链路追踪
- 基本介绍
- SkyWalking-1
- Skywalking-1
- 消息队列
- Kafka
- docker安装kafka
- Linux集群
- Maven私服
- nexus安装部署
- nexus使用介绍
- 全文搜索elasticsearch
- windows集群搭建
- docker安装es
- ElasticHD
- linux集群部署
- 统一日志解决方案
- 日志解决方案设计
- 介绍与相关资料
- ELK安装部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服务监控-Prometheus
- Prometheus安装配置
- Prometheus介绍
- grafana
- 持续集成部署CICD
- 自动化部署Jenkins
- 安装部署win
- 打包发布远程执行
- 安装部署linux
- jenkins+gitlab+docker容器化工程自动化部署
- Git
- CICD说明
- 阿里云效
- CentOS_MYSQL安装
- docker
- 安装
- Docker安装Nginx
- Docker部署启动springboot
- dockerCompose
- harbor
- Docker私有镜像仓库
- Portainer
- Docker远程连接设置
- 打包工程
- 必要启动模块
- 核心模块
- 登录认证
- 缓存功能
- 日志模块
- 分布式锁
- 消息队列
- 异常处理
- 系统接口
- 参数验证
- es检索
- 数据导出
- 系统设计
- 系统总体架构
- 扩展模块(可选)
- 限流熔断alibaba/sentinel
- 使用Sentinel实现gateway网关及服务接口限流
- Sentinel使用Nacos存储规则及同步
- 服务调用Feign
- Feign基本介绍
- 如何使用
- 负载均衡
- 请求超时
- 请求拦截器
- 分布式任务调度
- XXL-JOB
- 分布式事务
- TX-LCN
- Seata
- Seata原理解析
- 数据库分库分表
- swagger文档
- 分布式ID生成器解决方案
- 服务网关CloudGateway
- 基本介绍
- 使用网关
- 路由配置
- 全局过滤器
- 服务认证授权架构设计
- 认证服务流程
- 授权服务流程
- 系统幂等性设计与实践
- 分布式日志链路跟踪
- 实时搜索系统设计
- 应用性能
- 压力测试工具
- Apache JMeter介绍和安装
- ApacheJMeter使用
- JVM
- JVM性能调优
- 常见JVM内存错误及解决方案
- JVM 分析工具详解
- Spring Cloud性能调优
- Linux运维
- Linux 常用命令
- Linux开启端口