- 微服务系列:Spring Cloud Alibaba 之 Nacos 注册中心
- 微服务系列:Spring Cloud Alibaba 之 Nacos 配置中心
Nacos
基础知识我们已经算是学习完了。Nacos
支持三种部署模式- 单机模式 - 用于测试和单机使用。
- 集群模式 - 用于生产环境,确保高可用。
- 多集群模式 - 用于多数据中心场景。
Nacos
集群。话不多说,开始今天的学习。什么是集群 集群是将应用复制成多个相同的应用,一起来工作,从而提高工作能力。即将多个应用程序分散在不同的服务器,每个服务器都独立运行相同的代码。可以分散服务器压力解决高并发的问题,同时也能预防单节点故障,即一台服务器故障不影响其他服务器正常运行。
集群部署架构 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
文章图片
2、修改复制出来的两份
Nacos
端口在
/conf/application.properties
文件中修改 server.port
为 18848 或 28848server.port=18848 或 server.port=288483、修改
cluster.conf
文件在三个
Nacos
目录下的 conf 目录下有 cluster.conf.example 文件,复制出来一份把扩展名 .example 都去掉。文章图片
修改
cluster.conf
文件文章图片
这里的 ip 是我自己电脑的ip,我发现使用 127.0.0.1 有问题。
4、配置使用外部
MySQL
数据源【微服务系列|微服务系列(Spring Cloud Alibaba 之 Nacos 集群搭建)】修改
conf/application.properties
文件微服务系列:Spring Cloud Alibaba 之 Nacos 配置中心 一文中有详细说明。
你可能会问为什么要使用外部
MySQL
数据源,使用内嵌的数据库不可以吗?这个还真的不可以,因为使用嵌入式数据库实现数据的存储,集群中的每一个
Nacos
服务都有一个自己单独的内嵌数据库,这样数据存储是存在一致性问题的。为了解决这个问题,
Nacos
采用了集中式存储的方式来支持集群化部署,目前只支持 MySQL 存储
。我本次模拟集群环境的时候也发现了问题,本次单机部署的伪集群导致数据存储路径冲突,会启动失败,会一直显示 starting… 查看启动日志确实是报错了。这篇文章给出了详细的解释:集群模式内置数据源单机多实例部署问题解决
集群部署最好还是使用外部存储。
文章图片
5、启动 3 个
Nacos
服务startup.cmd
文章图片
查看 3 个控制台集群管理下的节点列表
文章图片
测试 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
文章图片
没有问题!
此时我们手动关掉一个
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:都看到这里了,点个赞吧,彦祖!
推荐阅读
- 分布式|SpringCloud Netflix-Eureka使用
- springcloud|springcloud-02-eureka(服务注册与发现)
- docker|docker和k8s面试题总结(未完待续)
- 前端面试题|【牛客网-公司真题-前端入门篇】——2021牛客模考-卷1
- Spring的解耦语法糖Event你还不知道吗()
- 后端|GitHub 又爆新作!2 份 PDF+1 个插件算法刷题三件套!面试进阶双飞
- servlet|vue3验证码倒计时60秒(自用)
- Java|基于Vue的仿小米商城
- 数据库|使用 Apache Superset 可视化 ClickHouse 数据