pursue wind pursue wind
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
  • mybatis

  • mybatis-plus

  • Spring

  • SpringBoot

  • SpringSecurity

  • SpringCloud

    • 文档

      • SpringCloud-广告系统实战(七)----广告检索系统(加载全量索引)
      • SpringCloud-广告系统实战(三)---通用模块的开发
      • SpringCloud-广告系统实战(二)---搭建脚手架
      • SpringCloud-广告系统实战(五)---广告检索系统(微服务调用)
      • SpringCloud-广告系统实战(六)----广告检索系统(广告数据索引的设计与实现)
      • SpringCloud-广告系统实战(四)---投放系统的开发
      • SpringCloud-广告系统设计与实现(一)---概述
      • SpringCloud微服务实战(一)-简介
      • SpringCloud微服务实战(七)-异步和消息
      • SpringCloud微服务实战(七)-消息服务在电商中的实践
      • SpringCloud微服务实战(三)-服务注册与发现
      • SpringCloud微服务实战(二)-微服务介绍
      • SpringCloud微服务实战(六)-统一配置中心
      • SpringCloud微服务实战(十)-Hystrix
      • SpringCloud微服务实战(四)-微服务中的服务拆分
    • Gateway

    • Spring Cloud Stream

    • Alibaba Sentinel 规则参数总结
    • Alibaba Sentinel规则持久化-拉模式-手把手教程【基于文件】
    • Feign常见问题总结
    • SentinelResource注解 属性总结
    • Spring Cloud Alibaba Sentienl相关配置项
    • SpringCloudAlibaba
    • SpringCloud入门
    • 使用Spring Cloud Feign上传文件
    • 如何使用Feign构造多参数的请求
    • 实用技巧:Hystrix传播ThreadLocal对象(两种方案)
    • 扩展Ribbon支持Nacos权重的三种方式
    • 扩展Ribbon支持基于元数据的版本管理
    • 搭建生产可用的Nacos集群
      • 一、部署架构图
      • 二、安装MySQL数据库
        • 2.1 导入初始化脚本
        • 2.2 配置数据库连接
        • 2.3 对于MySQL 8.0
      • 三、主机规划
      • 四、开始搭建
      • 五、配置代理服务器
        • 5.1 安装NGINX
        • 5.2 配置NGINX
      • 六、测试
      • 七、优化&最佳实践
  • 单元测试框架Mockito
  • 框架
  • SpringCloud
pursuewind
2020-11-23
目录

搭建生产可用的Nacos集群

# 搭建生产可用的Nacos集群

注:本文使用Nacos 1.0.1 + MySQL 8.0

前面部署的是单机版的Nacos Server,这一般不适用于生产。

本节详细探讨如何搭建一个生产可用的Nacos集群。讨论的内容主要包括:使用MySQL作为存储持久化数据,以及如何搭建Nacos集群。

# 一、部署架构图

部署架构图如下:

Nacos HA

# 二、安装MySQL数据库

生产环境需使用MySQL作为后端存储,因此需要搭建MySQL。生产中,MySQL建议至少主备模式,高可用MySQL更佳。

  • 高可用MySQL搭建方案有很多(例如MMM、MHA、Galera Cluster (opens new window)、MySQL NDB Cluster (opens new window)、MySQL InnoDB Cluster (opens new window) 以及 Group Replication (opens new window)等),不同方案搭建方式不同。所以MySQL集群的搭建本文就不赘述了,请同学们自行百度。
  • 常见高可用方案对比可参考 《MySQL高可用方案选型参考》 (opens new window)

注:建议使用MySQL 5.6.5+

# 2.1 导入初始化脚本

找到 conf/nacos-mysql.sql ,将其导入到数据库中。

# 2.2 配置数据库连接

找到 conf/application.properties ,添加如下内容:

# 表明用MySQL作为后端存储
spring.datasource.platform=mysql

# 有几个数据库实例
db.num=2

# 第1个实例的地址
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# 第2个实例的地址
db.url.1=jdbc:mysql://11.163.152.9:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=nacos
1
2
3
4
5
6
7
8
9
10
11
12

# 2.3 对于MySQL 8.0

Nacos 1.0.1内置的connector是 mysql-connector-java-5.1.34 ,该connector无法连MySQL 8.0。还好Nacos提供了插件机制,可以支持MySQL 8.0+。方法如下:

  • 在上面操作的基础上,下载支持MySQL 8.0的connector,例如:mysql-connector-java-8.0.16 。下载地址:点我下载 (opens new window)
  • 在Nacos的 plugins 目录下创建 mysql 目录,并将下载的connector扔到该目录即可。

# 三、主机规划

节点 端口
127.0.0.1 8848
127.0.0.1 8849
127.0.0.1 8850

复制三份Nacos安装包,将 conf/application.properties 中的

server.port=8848
1

分别改为:

server.port=8848
server.port=8849
server.port=8850
1
2
3

# 四、开始搭建

  • 找到 conf/cluster.conf.example ,将其改名为 conf/cluster.conf ,并将内容改为类似如下,即:以ip:端口 的形式列出Nacos集群中所有实例的地址:

    # ip:port
    127.0.0.1:8848
    127.0.0.1:8849
    127.0.0.1:8850
    
    1
    2
    3
    4
  • 启动所有Nacos实例

    sh startup.sh
    
    1

# 五、配置代理服务器

# 5.1 安装NGINX

  • NGINX各系统安装说明详见 官方文档 (opens new window)
  • NGINX高可用搭建说明详见 官方文档 (opens new window)

# 5.2 配置NGINX

为NGINX添加如下配置(对于Linux操作系统,如在安装NGINX时未自定义目录,则可在 /etc/nginx/conf.d 新建文件,命名为 nacos.conf ,内容如下;同时删除 default.conf即可):

upstream nacos {
  server 127.0.0.1:8848;
  server 127.0.0.1:8849;
  server 127.0.0.1:8850;
}

server {
  listen 80;
  server_name  localhost;
  location /nacos/ {
    proxy_pass http://nacos/nacos/;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 六、测试

访问 http://localhost/nacos 可看到Nacos的登录页,登录后即可正常使用Nacos。

# 七、优化&最佳实践

  • 实际项目中,建议为Nacos绑定一个域名(域名解析 & 修改NGINX配置的server_name),这样即使未来Nacos Server需要迁移,也无需修改Nacos Client端的配置;
  • 本文为了演示方便,将所有实例部署在了一台机器中;实际项目中,请将Nacos部署在不同机器中,从而实现更好的容灾与隔离
Last Updated: 2023/02/14, 18:02:00
扩展Ribbon支持基于元数据的版本管理
单元测试框架Mockito

← 扩展Ribbon支持基于元数据的版本管理 单元测试框架Mockito→

Theme by Vdoing | Copyright © 2019-2023 pursue-wind | 粤ICP备2022093130号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜
  • 网络DJ