微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)

  • 微服务系列:Spring Cloud Alibaba 之 Nacos 注册中心
  • 微服务系列:Spring Cloud Alibaba 之 Nacos 配置中心
在上面两篇文章中 Nacos 基础知识我们已经算是学习完了。
Nacos 支持三种部署模式
  • 单机模式 - 用于测试和单机使用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。
今天我们就开始来搭建一下 Nacos 集群。话不多说,开始今天的学习。
什么是集群 集群是将应用复制成多个相同的应用,一起来工作,从而提高工作能力。即将多个应用程序分散在不同的服务器,每个服务器都独立运行相同的代码。可以分散服务器压力解决高并发的问题,同时也能预防单节点故障,即一台服务器故障不影响其他服务器正常运行。
集群部署架构 nacos官方文档集群结构示意图如下:
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

其中的服务器负载均衡 SLB,我们可以使用 Nginx,本文只是为了学习,所以我们使用 ip 直连的方式
# Spring spring: application: # 应用名称 name: cloud-nacos-provider profiles: # 环境配置 active: dev cloud: nacos: discovery: # 服务注册地址 server-addr: 192.168.0.109:8848,192.168.0.109:18848,192.168.0.109:28848

集群搭建 本文为了方便采用我自己电脑来启动不同端口的 Nacos 实例来模拟 Nacos 集群(PS:但其实还不如多机部署方便)。
1、首先复制两份 Nacos
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

2、修改复制出来的两份 Nacos 端口
/conf/application.properties文件中修改 server.port 为 18848 或 28848
server.port=18848 或 server.port=28848
3、修改 cluster.conf 文件
在三个 Nacos 目录下的 conf 目录下有 cluster.conf.example 文件,复制出来一份把扩展名 .example 都去掉。
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

修改 cluster.conf 文件
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

这里的 ip 是我自己电脑的ip,我发现使用 127.0.0.1 有问题。
4、配置使用外部 MySQL 数据源
【微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)】修改 conf/application.properties 文件
微服务系列:Spring Cloud Alibaba 之 Nacos 配置中心 一文中有详细说明。
你可能会问为什么要使用外部 MySQL 数据源,使用内嵌的数据库不可以吗?
这个还真的不可以,因为使用嵌入式数据库实现数据的存储,集群中的每一个 Nacos 服务都有一个自己单独的内嵌数据库,这样数据存储是存在一致性问题的。
为了解决这个问题,Nacos 采用了集中式存储的方式来支持集群化部署,目前只支持 MySQL 存储
我本次模拟集群环境的时候也发现了问题,本次单机部署的伪集群导致数据存储路径冲突,会启动失败,会一直显示 starting… 查看启动日志确实是报错了。这篇文章给出了详细的解释:集群模式内置数据源单机多实例部署问题解决
集群部署最好还是使用外部存储。
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

5、启动 3 个 Nacos 服务
startup.cmd
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

查看 3 个控制台集群管理下的节点列表
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

测试 1、直连 ip 模式
server: port: 9201# Spring spring: application: # 应用名称 name: cloud-nacos-provider profiles: # 环境配置 active: dev cloud: nacos: discovery: # 服务注册地址 server-addr: 192.168.0.109:8848,192.168.0.109:18848,192.168.0.109:28848 config: # 配置中心地址 server-addr: 192.168.0.109:8848,192.168.0.109:18848,192.168.0.109:28848 # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

还是使用之前文章的那个项目,启动后访问 http://localhost:9201/config/get
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

没有问题!
此时我们手动关掉一个 Nacos 服务,模拟下其中一个服务宕机
微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)
文章图片

再次访问 http://localhost:9201/config/get,没有问题!
2、Nginx 转发
启动一台服务器 192.168.10.100,安装 Nginx,配置代理转发规则。
#gzip on; upstream nacos { server 192.168.0.109:8848; server 192.168.0.109:18848; server 192.168.0.109:28848; }server { listen80; server_namelocalhost; location / { proxy_pass http://nacos; } }

bootstrap.yml
spring: application: # 应用名称 name: cloud-nacos-provider profiles: # 环境配置 active: dev cloud: nacos: discovery: # 服务注册地址 server-addr: 192.168.10.100:80# Nacos 服务器地址,集群版 Nginx 转发 config: # 配置中心地址 server-addr: 192.168.10.100:80# Nacos 服务器地址,集群版 Nginx 转发 # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

访问 http://192.168.10.100:80/nacos/index.html 进入 Nacos 控制台。
至此,本文结束。同时我们的 Nacos 系列也结束了,下一篇开始学习新的内容。
PS:都看到这里了,点个赞吧,彦祖!

    推荐阅读