SpringCloud Alibaba——Nacos服务注册与配置中心(三、Nacos持久化配置 & 集群搭建)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: SpringCloud Alibaba——Nacos服务注册与配置中心(三、Nacos持久化配置 & 集群搭建)

1.开篇



前两篇文章分别说到了Nacos作为服务注册中心、服务配置中心的情况,现在我们来聊聊有关Nacos持久化配置以及Nacos的集群搭建。


官方文档:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html,最终搭建出来的Nacos集群应该是下图这样:👇👇👇


最前面是我们发出的请求,这个请求会被Nginx挡下,来做反向代理、负载均衡,平摊到多台Nacos服务器中,最终连接上高可用的MySQL集群。


默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。

2.项目源码


github源码地址:https://github.com/2656307671/SpringCloud-Alibaba-Nacos

gitee源码地址:https://gitee.com/szh-forever-young/SpringCloud-Alibaba-Nacos


由于Nacos默认自带的是嵌入式数据库derby,在搭建集群的时候会出现数据一致性问题。所以这里要进行持久化配置,将Nacos中的默认数据库从derby切换到mysql


首先,需要到github上下载nacoslinux版本,链接:https://github.com/alibaba/nacos/releases/tag/1.1.4,下载完成之后将压缩包上传至linux中,你可以使用Xftp,也可以使用rz 命令。


我这里解压完成之后,将nacos目录下的内容进行了备份,备份到一个mynacos的目录下。避免出错之后没法恢复的情况。


Nacos下载安装完成之后,我们要进行持久化配置,将数据库从derby切换到mysql

nacos的目录下,有一个conf目录,conf目录下有一个sql脚本叫nacos-mysql.sql,我们要做的就是执行这个sql脚本。


source命令执行完成之后,你可以show tables;查看有哪些表。这里我就没有再截图。

下一步找到 mynacos 目录下的confconf目录中有一个application.properties 文件,也是避免出错,先将其拷贝一份,再进行修改。

修改的内容如下,就是将nacos中的数据库从derby切换到mysql,同时设置mysql的相关连接信息。

参考官方文档:https://nacos.io/zh-cn/docs/deployment.html


到此,nacos持久化配置就完成了。下面要做的就是nacos的集群环境搭建了。(预计是 1Nginx + 3Nacos + MySQL

首先梳理出3Nacos的端口号,这里分别设置为333344445555。这个Nacos的集群节点信息需要在conf目录下的cluster.conf.example中进行配置,还是老规矩,先将其备份,然后进行修改。

PS:这里的ip不能写127.0.0.1,因为这是在同一台linux系统中配置了3nacos,写成127.0.0.1了话无法分清到底是哪一台nacos


我们这里将集群节点信息添加完成,一会启动肯定是使用命令 startup.sh -p port ,那么nacos它如何知道你这个-p 参数是什么意思呢?

这就需要到nacos中的bin目录下的startup.sh这个文件中进行修改。老规矩:修改之前先备份。


配置完上述内容之后,我们可以启动3nacos服务器(333344445555)。


可以看到数量为3,就说明3nacos服务器已经成功启动。

下面就要进行nginx的配置了,那必然要找到其配置文件:nginx.conf


修改完成,下面启动nginx


此时,我们的nginx启动完成、nacos启动完成、mysql后台正常运行。

这里一定要将防火墙关掉!!!这里一定要将防火墙关掉!!!这里一定要将防火墙关掉!!!

下面去浏览器中测试就行,因为我们上面配置了nginx的服务监听端口号为1111,而nginx在这里作为反向代理、负载均衡的角色,必然会挡下浏览器发出的请求,来为3nacos服务器进行任务平摊,所以我们访问的url就应该是虚拟机ip + nginx端口号这样的形式。

你要是想直接333344445555肯定不行,因为在它们三个的前面挡着一个nginx呢。

账号密码都是nacos,点击提交,出现nacos的首页,则说明nacos集群、持久化配置已经全部完成。


这里,我再测试一下nacos作为服务配置中心的情况,首先新建一个配置文件,随便写点内容,保存。


然后回到mysql中,查询 config_info 这张表,可以看到我们刚刚添加的 nacos-config-client.yaml 文件。


最后再测试一下nacos作为服务注册中心的情况,因为之前是单机版的nacos,而现在要将9002注册进nacos集群,所以必须要修改9002yml配置文件。然后再启动9002微服务模块(服务提供者)。9002的源码请参考上面给出的git仓库。

启动完成之后,到nacos的服务列表中查看,可以看到我们的9002nacos-payment-provider)已经成功注册进了nacos集群。



以上,就是nacos的持久化配置、集群环境搭建的全部过程!!!

下面这张图是整个nacos集群的轮廓图。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
151 1
Springcloud Alibaba + jdk17+nacos 项目实践
|
2月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
3月前
|
人工智能 前端开发 Java
Spring Cloud Alibaba AI,阿里AI这不得玩一下
🏀闪亮主角: 大家好,我是JavaDog程序狗。今天分享Spring Cloud Alibaba AI,基于Spring AI并提供阿里云通义大模型的Java AI应用。本狗用SpringBoot+uniapp+uview2对接Spring Cloud Alibaba AI,带你打造聊天小AI。 📘故事背景: 🎁获取源码: 关注公众号“JavaDog程序狗”,发送“alibaba-ai”即可获取源码。 🎯主要目标:
103 0
|
3月前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
131 1
|
4月前
|
人工智能 前端开发 Java
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
本文介绍了如何使用 **Spring Cloud Alibaba AI** 构建基于 Spring Boot 和 uni-app 的聊天机器人应用。主要内容包括:Spring Cloud Alibaba AI 的概念与功能,使用前的准备工作(如 JDK 17+、Spring Boot 3.0+ 及通义 API-KEY),详细实操步骤(涵盖前后端开发工具、组件选择、功能分析及关键代码示例)。最终展示了如何成功实现具备基本聊天功能的 AI 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
1426 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
|
5月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
14997 32
|
6月前
|
人工智能 Java Spring
使用 Spring Cloud Alibaba AI 构建 RAG 应用
本文介绍了RAG(Retrieval Augmented Generation)技术,它结合了检索和生成模型以提供更准确的AI响应。示例中,数据集(包含啤酒信息)被加载到Redis矢量数据库,Spring Cloud Alibaba AI Starter用于构建一个Spring项目,演示如何在接收到用户查询时检索相关文档并生成回答。代码示例展示了数据加载到Redis以及RAG应用的工作流程,用户可以通过Web API接口进行交互。
52601 70
|
4月前
|
Java 微服务 Spring
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
文章介绍了如何利用Spring Cloud Alibaba快速构建大型电商系统的分布式微服务,包括服务限流降级等主要功能的实现,并通过注解和配置简化了Spring Cloud应用的接入和搭建过程。
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
|
4月前
|
Dubbo Java 调度
揭秘!Spring Cloud Alibaba的超级力量——如何轻松驾驭分布式定时任务调度?
【8月更文挑战第20天】在现代微服务架构中,Spring Cloud Alibaba通过集成分布式定时任务调度功能解决了一致性和可靠性挑战。它利用TimerX实现任务的分布式编排与调度,并通过`@SchedulerLock`确保任务不被重复执行。示例代码展示了如何配置定时任务及其分布式锁,以实现每5秒仅由一个节点执行任务,适合构建高可用的微服务系统。
72 0