SpringBoot应用集成微服务组件Nacos
第一篇基础篇,可在博客园,个人公众号以及站内搜索:MySQL数据库与Nacos搭建监控服务。
本篇是个人nacos系列文章第二篇springboot项目集成微服务组件nacos。
前情提要
当你看到此篇文章时,nacos目前最新稳定版本为:2.2.2 (Apr 11, 2023) Latest
版本不在于有多新,在于与当前场景环境匹配正常,稳中求快。万一你用了比较新的版本,遇到问题怎么办?有问题,那就找李元芳吧!开个玩笑。你可以去 nacos 的github仓库issues提问、追问选择解决方案,促进开源社区的和谐发展。
整体思路,个人nacos系列博文一共分为三篇:
- 基础篇:《MySQL数据库与Nacos搭建监控服务》,Nacos与MySQL基本介绍。
- 开发篇:《开发篇:springboot与微服务组件nacos》,从代码开始构建,集成微服务组件。
- 运维篇:《运维篇:nacos prometheus grafana》,服务监控篇,主要以Linux发行版为主。
骚话环节
一入编程深似海,从此节操是路人。脱发已是常态,致富还需绝顶。
那天我听说程序员之间还相互鄙视,其中不能忍的终极鄙视:有女朋友的程序员鄙视没有女朋友的程序员。这不能忍,打不过怎么办,问就是加入吧。
由于是测试环境,使用版本比较新,学当然要学新知识吸收精华,羽化成仙,做那万人敬仰韩天尊。啊,不好意思,扯远了。开个玩笑,我们依旧使用稳定版本。此次在Linux发行版操作系统中全程使用root用户进行测试避免权限问题带来的干扰,如果使用普通用户请自行测试提权赋予所有者或者所属组权限。
骚话不多说,直接进入今天的主题springboot项目集成微服务组件nacos。
springboot与微服务组件nacos
必备环境,前置条件尽量保持一致:
- JDK版本: JDK17
- 开发工具和项目构建工具:STS4 & Maven3.6
- Springboot版本:Springboot2.7.x
- 服务监控三件套:Nacos2.x、Prometheus2.3.x、Grafana9.3.x
- 开发测试环境:Linux(centos-stream-9)云服务器或者VMware搭建环境
你可以了解到的知识:从项目开发构建到线上测试发布,不过,需要具备一点点Java或者其它编程语言基础知识。
tips:做实验时请检查是否关安装防火墙管理工具,关闭防火墙服务或者开启相应端口,或者放通云服务器安全组。
企业中生产环境,唯稳,稳中求快。
Nacos服务快速启动
关于nacos2.2.0相关配置说明以及数据源说明,遇到问题总结,可以参考如下文章:
https://blog.cnwangk.top/2023/03/30/MySQL数据库与Nacos搭建监控服务/
使用hexo搭建静态博客网站,感兴趣可以自己搭建一个,利用github pages和cloudflare pages等进行同步。之所以给出上面的链接,因为一篇优质的教程,会持续更新迭代。当然,在个人公众号里面同样可以搜索到相关教程。
根据个人或者团队开发环境,可以选择框架开发环境:spring、springboot以及springcloud集成nacos。
值得注意的地方
服务器部署nacos服务支持多种场景:
- Nacos原生形式部署。
- Nacos Docker形式部署。
- Nacos Kubernetes形式部署。
至于用哪种方式,根据实际业务场景分析,选择符合个人或者公司业务场景的最佳方式。
Nacos支持三种部署模式
- 单机模式:用于测试和单机试用。
- 集群模式:用于生产环境,确保高可用。
- 多集群模式:用于多数据中心场景。
高可用环境准备
- 建议支撑环境:部署JDK,需要 1.8 及其以上版本
- 建议硬件配置:2核 CPU / 4G 内存 及其以上
- 建议软件配置:生产环境 3 个节点 及其以上
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
1、预备环境准备
64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
64 bit JDK 1.8+ 。
Maven 3.2.x+ 。
2、下载源码或者安装包
你可以通过源码和发行包两种方式来获取 Nacos。
个人推荐:下载发行包。关于版本,使用稳定版本(通常有GA标识),个人习惯使用官方推荐的上一个小版本。有特殊需求可以下载源码包,修改源码重新编译。
从 Github 获取源码方式,使用git clone
命令,值得注意的是你需要部署Git环境:
1 | git clone https://github.com/alibaba/nacos.git |
nacos发行包下载地址:
https://github.com/alibaba/nacos/releases
https://github.com/alibaba/nacos/releases/tag/2.1.1
下载编译后压缩包方式,您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。
1 | unzip nacos-server-$version.zip 或者 tar -zxvf nacos-server-$version.tar.gz |
$version指具体nacos版本号,比如具体版本:nacos-server-2.1.1。
Windows平台建议下载以 .zip结尾的压缩包:nacos-server-2.1.1.zip。
Linux平台建议下载以 .tar.gz 结尾的压缩包:nacos-server-2.1.1.tar.gz。
3、修改配置文件
注意:修改conf
目录下的application.properties
文件。设置其中的nacos.core.auth.plugin.nacos.token.secret.key
值,详情可查看鉴权-自定义密钥:
https://nacos.io/zh-cn/docs/v2/plugin/auth-plugin.html
注意,文档中的默认值
SecretKey012345678901234567890123456789012345678901234567890123456789
和VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
为公开默认值,可用于临时测试,实际使用时请务必更换为自定义的其他有效值。
4、启动服务器
Linux/Unix/Mac:执行startup.sh脚本
启动命令(standalone代表着单机模式运行,非集群模式):
1 | sh startup.sh -m standalone |
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
1 | bash startup.sh -m standalone |
Windows平台:执行startup.cmd脚本
启动命令(standalone代表着单机模式运行,非集群模式):
1 | startup.cmd -m standalone |
5、关闭服务器
Linux/Unix/Mac:执行shutdown.sh脚本
1 | sh shutdown.sh |
Windows平台:执行shutdown.cmd脚本
1 | shutdown.cmd |
可以在Windows中使用terminal或者cmd命令行运行shutdown.cmd命令,也可以双击shutdown.cmd运行文件。
以下为个人实战总结,仅供参考
个人开发以及测试环境:
- Spring Tool Suite4
- JDK17
- Maven3.6
- Springboot2.7.6
- VMware16 & Linux(Centos-9-Stream)
关于IDE的选择:
有人喜欢使用 IntelliJ IDEA ,有人喜欢用 Vim,有人喜欢用VSCode,还有人就偏爱 eclipse 。开发工具 IDE 的选择,不一定非要和我保持一致。个人开发者可以根据自己的喜好选择,怎么顺手怎么来,主打一个用的舒心。如果是团队开发,最优质的方案是与团队保持一致。
可能是入坑最开始接触的 IDE 是eclipse,习惯了。个人小项目偶尔会用VSCode,大型项目更趋向于 eclipse 或者 IntelliJ IDEA。
STS4 开发工具
支持OS版本,彼时最新版本是4.17.1
- Linux X86_64、Linux ARM_64
- MACOS X86_64、MACOS ARM_64
- WINDOWS X86_64
官网:https://spring.io/tools
下载地址:https://download.springsource.com/release/STS4/4.16.1.RELEASE/dist/e4.25/spring-tool-suite-4-4.16.1.RELEASE-e4.25.0-win32.win32.x86_64.self-extracting.jar
Maven 环境配置
STS4开发工具引入Maven配置
依次找到顶部菜单栏:Window—> Preferences—> Maven—>User Settings—>Global Settings & User Settings—>Apply
配置完记得点击Apply或者Apply and Close
Maven Repo配置阿里云镜像源
本地maven环境配置conf\settings.xml(使用阿里云镜像地址),maven版本:apache-maven-3.6.3
配置本地repo仓库存储目录
1 | <localRepository>D:\Maven\repo</localRepository> |
配置mirrors
1 | <mirrors> |
阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库,帮助研发人员提高研发生产效率,使用阿里云Maven中央仓库作为下载源,速度更快更稳定。
仓库名称 | 阿里云仓库地址 | 阿里云仓库地址(老版) | 源地址 |
---|---|---|---|
central | https://maven.aliyun.com/repository/central | https://maven.aliyun.com/nexus/content/repositories/central | https://repo1.maven.org/maven2/ |
jcenter | https://maven.aliyun.com/repository/public | https://maven.aliyun.com/nexus/content/repositories/jcenter | http://jcenter.bintray.com/ |
public | https://maven.aliyun.com/repository/public | https://maven.aliyun.com/nexus/content/groups/public | central仓和jcenter仓的聚合仓 |
https://maven.aliyun.com/repository/google | https://maven.aliyun.com/nexus/content/repositories/google | https://maven.google.com/ | |
gradle-plugin | https://maven.aliyun.com/repository/gradle-plugin | https://maven.aliyun.com/nexus/content/repositories/gradle-plugin | https://plugins.gradle.org/m2/ |
spring | https://maven.aliyun.com/repository/spring | https://maven.aliyun.com/nexus/content/repositories/spring | http://repo.spring.io/libs-milestone/ |
spring-plugin | https://maven.aliyun.com/repository/spring-plugin | https://maven.aliyun.com/nexus/content/repositories/spring-plugin | http://repo.spring.io/plugins-release/ |
grails-core | https://maven.aliyun.com/repository/grails-core | https://maven.aliyun.com/nexus/content/repositories/grails-core | https://repo.grails.org/grails/core |
apache snapshots | https://maven.aliyun.com/repository/apache-snapshots | https://maven.aliyun.com/nexus/content/repositories/apache-snapshots | https://repository.apache.org/snapshots/ |
在线搜索jar包依赖:https://developer.aliyun.com/mvn/search
Springboot集成nacos服务
主要介绍Springboot项目以微服务形式集成nacos,如果使用springmvc或者是普通springboot项目集成nacos服务,可以参考官方文档。关于版本问题,我将官方部分(个人感觉初次使用可能用得上,并非全部)文档引入到本次教程。
tips:sts个性化注解设置,Window—> Preferences—>Java—>Code Style—>Code Templates—>Comments:Types method
在集成nacos服务之前,一步一步来,从构建第一个springboot项目开始。
springboot项目构建
可能你有疑问,springboot版本如何选择,下图支持最后维护时间可供参考:
目前Springboot官网最新稳定版本是Springboot3.0.5,实际工作中个人使用2.7.x版本,未来主流可能是3.X版本。目前主流依旧是Springboot2.x,更倾向于2.6.x或者2.7.x作为开发构建版本,当然也是以spring官网显示维护时间作为参考。
项目构建方式有多种,总体上分官网脚手架构建和开发工具构建,此处以官网和STS4为示例。不必纠结,怎么顺手怎么来。
- 官网构建:https://start.spring.io/
- STS4开发工具构建
- VSCode 开发工具构建
- IntelliJ IDEA工具构建
如果官网访问速度缓慢,你还可以通过阿里云脚手架网站构建:https://start.aliyun.com/
springboot项目之官网构建
访问:https://start.spring.io/
第一步
- Project:选择Maven作为项目构建方式
- Language:选择Java作为开发语言
- Spring Boot:选择springboot2.7.6稳定版本作为构建版本
- Dependencies:选择pom依赖的jar包
第二步
- Project Metadata:项目元数据,Group组名、Artifact工程名、Name项目名称、Description项目描述、Package name包名。
- Packaging:选择Jar作为默认打包方式。
- Java:选择JDK17作为Java项目默认构建版本。
- GENERATE:生成构建项目demo并下载。
- EXPLORE:展示出构建项目结构清单以及文件具体内容。
以下展示Project Metadata截图以及EXPLORE截图。
EXPLORE:展示项目层次结构
springboot项目之STS4工具构建
依次选择File–>new–>Spring Starter Project,或者使用快捷键ALT+SHIFT+N。
配置Project步骤一
具体含义参考上面官网构建时说明。
配置Project步骤二
选择springboot版本,以及配置所需要的pom.xml依赖。
如下图所示,Spring Boot Version个人选择的是springboot2.7.6稳定版本作为演示,目前最新稳定版本可选为springboot3.0.5。Frequently Used表示官方建议使用到的一些工具,讲几个个人使用过的。
Lombok用于简化实体类(bean、entity、repository)get、set方法以及log日志打印,个人开发很实用,团队中慎重使用。
MariaDB Driver是MariaDB数据库驱动,可以看做是MySQL替代产品。Spring Data JPA是对ORM持久化框架Hibernate近一步封装,简化了SQL操作。Spring Data MongoDB是nosql数据库中的一种,其它有Redis,主要用于做缓存使用。Spring Data Redis是nosql数据库中的一种,前面刚好介绍到了。
搜索框Type to search dependencies,可以进行检索需要的依赖,也可以展开下面小箭头选择依赖。比如展开下图上的SQL选项,有多种数据库驱动依赖可供选择使用。
springboot集成微服务nacos
正式搭建之前,注意项目环境:使用Spring如何集成nacos?使用springboot如何集成nacos?使用springcloud微服务组件如何集成nacos?此处发出了三连问,也许你在使用时也会遇到。不同的环境,可能得到的结果不一样。
**下面将演示 springboot 项目集成微服务组件 nacos 过程 **。
1、启动示例
本地正常启动场景,使用127.0.0.1或者localhost,默认端口:8080。特殊情况在配置文件指定了固定IP地址。例如在application.properties 或者 application.yml 指定IP和端口,两种配置方式保留一种即可。
示例:application.properties
1 | server.port=8081 |
示例:application.yml
1 | server: |
springboot启动过程:
1 | . ____ _ __ _ _ |
2、配置pom.xml
springbot版本简要说明:springboot GA(General Availability 表示稳定版本),各分支最新稳定版本2.3.12、2.4.13、2.5.14、2.6.14、2.7.10、3.0.5
1 | <!-- springboot GA(最新稳定版本):2.3.12、2.4.13、2.5.14、2.6.14、2.7.10、3.0.5 --> |
统一版本管理:JDK版本:17,spring-cloud-dependencies版本采用2021.0.4,spring-cloud-alibaba-dependencies版本采用:2021.0.4.0,和我保持一致,可以采用springboot2.7.x进行测试使用。目前,如果使用阿里云脚手架构建,springboot版本推荐不高于2.6.13。在nacos系列博文第一篇《MySQL数据库与Nacos搭建监控服务》中有写到如何构建,这里不在赘述。
1 | <properties> |
pom依赖管理:dependency
主要注意版本对应:
- 微服务:spring cloud依赖
- 微服务:spring cloud alibaba依赖
- 微服务:nacos config依赖、nacos discovery依赖、bootstrap依赖
1 | <!-- 总包管理 --> |
3、配置application.properties & application.yml & bootstrap.properties
如果使用开发环境多配置文件设置,可以使用:dev、prod、test进行区分,使用参数 spring.profiles.active=dev 进行指定为开发环境。
1 | # api port |
bootstrap.properties
1 | #bootstrap.properties基础配置 |
4、springboot入口:配置Application.java
- @SpringBootApplication:sringboot启动必备注解
- @EnableDiscoveryClient:用于nacos发现客户端注解
1 | //sringboot启动必备注解 |
TestController类引入测试代码:使用 Spring Cloud 原生注解,开启自动更新。
单一配置场景,通过@Value注解,配置动态配置获取测试。
多属性配置场景,可以通过@Autowired 注解注入自定义配置类。
1 |
|
可以根据业务情况而定,将多个配置封装到一个类里面,如下所示,新建CustomConf类:
1 | /** |
使用到注解:
- @Value :通常情况,使用注解取值。
- @Component :加入注解,便于被扫描到。
- @ConfigurationProperties:引入配置,通过prefix指定配置前缀。
在项目中注入:
1 |
|
nacos 控制台:新建配置:springboot-test.properties
nacos 控制台:配置详情:配置的比较随意,参考看看就行
运行服务:
- nohup:代表脱离终端运行
- &:代表放入后台
- -Dspring.profiles.active=prod:指定为生产环境
1 | [root@Centos9-Stream test]# nohup java -jar -Dspring.profiles.active=prod /opt/workspace/test/springboot-nacos-cloud-0.0.1-SNAPSHOT.jar > /opt/ |
测试接口:
1 | http://192.168.245.132:8082/t/getConfig |
你也可以使用curl命令请求:
1 | curl -X GET http://192.168.245.132:8082/t/getConfig |
得到输出结果:
getConfig>>>>>>>>>>>>发现:配置>>>服务名称:nacos服务
查看日志验证:
1 | tail -n 5 springboot-nacos.log |
验证成功,getConfig日志打印出来了。
至此,springboot集成微服务组件nacos联动完成,详细说明可以参考上一篇文章,文初有说明,这里不在赘述。
实际使用过程中,难免会遇到各种问题,此时不用慌,有详细官方文档可供参考。如下引入了nacos部分文档,解决搭建过程中遇到的问题,提供参考。
nacos版本问题
如果你使用nacos 1.x升级到nacos 2.x版本,建议参考官方兼容性说明与升级文档。
nacos2.0.0版本兼容性说明
兼容性说明:https://nacos.io/zh-cn/docs/v2/upgrading/2.0.0-compatibility.html
目前官网推荐使用nacos2.1.1稳定版,推荐的上一个稳定版本是2.0.3。
Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。
端口 | 与主端口的偏移量 | 描述 |
---|---|---|
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |
使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。
客户端拥有相同的计算逻辑,用户如同1.X的使用方式,配置主端口(默认8848),通过相同的偏移量,计算对应gRPC端口(默认9848)。
因此如果客户端和服务端之前存在端口转发或防火墙时,需要对端口转发配置和防火墙配置做相应的调整。
nacos升级文档
升级文档:https://nacos.io/zh-cn/docs/v2/upgrading/2.0.0-upgrading.html
nacos版本与spring cloud对应关系
由于 Spring Boot 3.0,Spring Boot 2.7~2.4 和 2.4 以下版本之间变化较大,目前企业级客户老项目相关 Spring Boot 版本仍停留在 Spring Boot 2.4 以下,为了同时满足存量用户和新用户不同需求,社区以 Spring Boot 3.0 和 2.4 分别为分界线,同时维护 2022.x、2021.x、2.2.x 三个分支迭代。 为了规避相关构建过程中的依赖冲突问题,我们建议可以通过 云原生应用脚手架 进行项目创建。
2022.x 分支
适配 Spring Boot 3.0,Spring Cloud 2022.x 版本及以上的 Spring Cloud Alibaba 版本按从新到旧排列如下表(最新版本用*标记): (注意,该分支 Spring Cloud Alibaba 版本命名方式进行了调整,未来将对应 Spring Cloud 版本,前三位为 Spring Cloud 版本,最后一位为扩展版本,比如适配 Spring Cloud 2022.0.0 版本对应的 Spring Cloud Alibaba 第一个版本为:2022.0.0.0,第个二版本为:2022.0.0.1,依此类推)
Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
---|---|---|
2022.0.0.0-RC* | Spring Cloud 2022.0.0 | 3.0.0 |
2021.x 分支
适配 Spring Boot 2.4,Spring Cloud 2021.x 版本及以上的 Spring Cloud Alibaba 版本按从新到旧排列如下表(最新版本用*标记): (注意,该分支 Spring Cloud Alibaba 版本命名方式进行了调整,未来将对应 Spring Cloud 版本,前三位为 Spring Cloud 版本,最后一位为扩展版本,比如适配 Spring Cloud 2021.0.1 版本对应的 Spring Cloud Alibaba 第一个版本为:2021.0.1.0,第个二版本为:2021.0.1.1,依此类推)
Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
---|---|---|
2021.0.5.0* | Spring Cloud 2021.0.5 | 2.6.13 |
2021.0.4.0* | Spring Cloud 2021.0.4 | 2.6.11 |
2021.0.1.0 | Spring Cloud 2021.0.1 | 2.6.3 |
2021.1 | Spring Cloud 2020.0.1 | 2.4.2 |
2.2.x 分支
适配 Spring Boot 为 2.4,Spring Cloud Hoxton 版本及以下的 Spring Cloud Alibaba 版本按从新到旧排列如下表(最新版本用*标记):
Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
---|---|---|
2.2.10-RC1* | Spring Cloud Hoxton.SR12 | 2.3.12.RELEASE |
2.2.9.RELEASE* | Spring Cloud Hoxton.SR12 | 2.3.12.RELEASE |
2.2.8.RELEASE | Spring Cloud Hoxton.SR12 | 2.3.12.RELEASE |
2.2.7.RELEASE | Spring Cloud Hoxton.SR12 | 2.3.12.RELEASE |
2.2.6.RELEASE | Spring Cloud Hoxton.SR9 | 2.3.2.RELEASE |
2.2.1.RELEASE | Spring Cloud Hoxton.SR3 | 2.2.5.RELEASE |
2.2.0.RELEASE | Spring Cloud Hoxton.RELEASE | 2.2.X.RELEASE |
2.1.4.RELEASE | Spring Cloud Greenwich.SR6 | 2.1.13.RELEASE |
2.1.2.RELEASE | Spring Cloud Greenwich | 2.1.X.RELEASE |
2.0.4.RELEASE(停止维护,建议升级) | Spring Cloud Finchley | 2.0.X.RELEASE |
1.5.1.RELEASE(停止维护,建议升级) | Spring Cloud Edgware | 1.5.X.RELEASE |
组件版本关系
版本说明:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明
每个 Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本如下表所示(注意,Spring Cloud Dubbo 从 2021.0.1.0 起已被移除出主干,不再随主干演进):
Spring Cloud Alibaba Version | Sentinel Version | Nacos Version | RocketMQ Version | Dubbo Version | Seata Version |
---|---|---|---|---|---|
2021.0.5.0 | 1.8.6 | 2.2.0 | 4.9.4 | ~ | 1.6.1 |
2.2.10-RC1 | 1.8.6 | 2.2.0 | 4.9.4 | ~ | 1.6.1 |
2022.0.0.0-RC1 | 1.8.6 | 2.2.1-RC | 4.9.4 | ~ | 1.6.1 |
2.2.9.RELEASE | 1.8.5 | 2.1.0 | 4.9.4 | ~ | 1.5.2 |
2021.0.4.0 | 1.8.5 | 2.0.4 | 4.9.4 | ~ | 1.5.2 |
2.2.8.RELEASE | 1.8.4 | 2.1.0 | 4.9.3 | ~ | 1.5.1 |
2021.0.1.0 | 1.8.3 | 1.4.2 | 4.9.2 | ~ | 1.4.2 |
2.2.7.RELEASE | 1.8.1 | 2.0.3 | 4.6.1 | 2.7.13 | 1.3.0 |
2.2.6.RELEASE | 1.8.1 | 1.4.2 | 4.4.0 | 2.7.8 | 1.3.0 |
2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE | 1.8.0 | 1.4.1 | 4.4.0 | 2.7.8 | 1.3.0 |
2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE | 1.8.0 | 1.3.3 | 4.4.0 | 2.7.8 | 1.3.0 |
2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE | 1.7.1 | 1.2.1 | 4.4.0 | 2.7.6 | 1.2.0 |
2.2.0.RELEASE | 1.7.1 | 1.1.4 | 4.4.0 | 2.7.4.1 | 1.0.0 |
2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE | 1.7.0 | 1.1.4 | 4.4.0 | 2.7.3 | 0.9.0 |
2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE | 1.6.3 | 1.1.1 | 4.4.0 | 2.7.3 | 0.7.1 |
排查错误
启动时报错Connection is unregistered.
或Client not connected,current status:STARTING
.
原因是客户端gRPC无法和服务端创建连接,请先使用telnet ${nacos.server.address}:${nacos.server.grpc.port}
进行测试,查看网络是否畅通,服务端端口是否已经正确监听。
Nacos2.0增加了9848,9849端口来进行GRPC通信,我需要在application.properties中额外配置吗?
不需要,这两个端口在Nacos2.0内部是通过8848+1000以及8848+1001这种偏移量方式计算出来的,不需要用户额外在配置文件中配置。但如果使用的是docker或存在端口转发方式启动,需要把这两个端口进行配置。
启动nacos2.0时希望用nginx 代理,9848这个端口怎样处理,要通过nginx暴露出来么?以及docker是否需要映射?
如果存在防火墙或者nginx端口转发问题,需要进行相应的端口暴露配置。如在nginx中,在已经暴露8848(x)的基础上,需要额外暴露9848(x+1000)。
解决版本冲突问题时遇到端口未开放
1 | 2022-12-07 20:08:13.792 INFO 17152 --- [t.remote.worker] com.alibaba.nacos.common.remote.client : [236c02fe-157b-475e-9540-b11bf110f49e_config-0] Fail to connect server, after trying 2 times, last try server is {serverIp = '192.168.245.132', server main port = 8858}, error = unknown |
分析问题:检查192.168.245.132服务器的端口9858是否可用。如果参考了上面文档,你会发现我默认端口为8858,nacos2.x使用gRPC通信方式,+1000偏移量检测9858是否可用,由于防火墙或端口转发等原因,需要开发相应端口。
开放相应端口
1 | firewall-cmd --zone=public --add-port=9858/tcp --permanent |
重载firewall-cmd服务
1 | firewall-cmd --reload |
查看开放的端口
1 | [root@Centos9-Stream nacos-2.0.4]# firewall-cmd --list-all |
启动多个nacos server服务导致nacos-server.jar占用 PID 问题
定位问题:查看nacos.log日志文件
1 | 2022-12-07 20:19:02,601 INFO Starting Nacos v2.0.3 on Centos9-Stream with PID 34970 (/usr/local/nacos/target/nacos-server.jar started by root in /usr/local/nacos-2.0.4) |
参考资料:
- springboot2.7.x官方文档:https://docs.spring.io/spring-boot/docs/2.7.10/reference/pdf/spring-boot-reference.pdf
- nacos2.x官方文档:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
- prometheus官方文档:https://prometheus.io/docs/prometheus/2.37/getting_started/
- grafana官方文档:https://grafana.com/docs/grafana/latest/getting-started/
切记切记,以上总结,仅供参考!别人提供的是思考方向,具体实践还需亲自测试印证。
END—-
静下心来,才发现原来不会的还有很多。
一分耕耘,一分收获。
多总结,你会发现,自己的知识宝库越来越丰富。