Spring cloud 集成 Nacos集群 Public Key Retrieval is not allowed,集群多出一个节点,服务不注册,服务列表为空等问题踩坑

环境

  • MySQL 8
  • JDK 8
  • centos 7
  • nacos: 1.4.1
  • Spring cloud version:Hoxton.SR8
  • Spring cloud alibaba version2.2.5.RELEASE

1.启动nacos连接mysql报错

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 
Public Key Retrieval is not allowed

传送门 ==> MySQL 8.0 Public Key Retrieval is not allowed解决方案

配置文件里mysql地址这里加上allowPublicKeyRetrieval=true

image-20210624105619443


2.nacos集群多出来一个eth0网卡的节点

我们分别在三台虚拟机里启动nacos,分别是221223225的机器。但是这里为什么会出现一个15的机器?

为什么变成了4个,并且节点元数据点开里面的信息是混乱的,缺失的。

image-20210624104728203

配置三个节点,但是分别启动后却多出来一个节点。经过ifconfig后查看到xxx.xxx.2.15eth0的ip地址,而实际我应该用eth1的地址,那个才是NAT转发的静态ip地址(xxx.xxx.2.221、xxx.xxx.2.223、xxx.xxx.2.225),才可以被其它机器访问。而且导致了nacos的集群中leaderfollower关系混乱

image-20210624105938569

解决方案

  1. 删掉cluster.conf中新写入的xxx.xxx.2.15,保持集群依旧是三个节点

  2. 修改application.properties文件

    每台虚拟机里的这个配置,都改成自己当前虚拟机的可外网访问的ip地址

    nacos.inetutils.ip-address=你的虚拟机外网ip
    

    image-20210624110058418

  3. 停掉nacos并且重启

正常的集群

image-20210624110834922

产生原因

nacos如果不指定本机的地址的话,会选择第一张网卡的ip地址


3.注意服务发现是discovery而不是config

很低级的错误,但是初学者容易忽视这块儿,可能会踩坑

image-20210624110349506

之前的配置:
spring.cloud.nacos.server-addr: xxxx

注意:漏掉了discovey而且这里填写config的话,就是配置中心的地址了,而不是服务注册发现的地址


4.spring cloud 服务启动注册nacos日志无打印,且nacos无服务注册信息

坑!!!

按照nacos的官网案例,这三部曲

  • 添加依赖
  • 配置服务注册发现的地址
  • 开启服务发现@EnableDiscoveryClient

按理说配置地址对的话,至少日志会打印相关nacos的注册信息。但实际上不是

image-20210621115259038


你的服务如果pom依赖仅仅依赖了spring-cloud-starter-alibaba-nacos-discovery

    <dependencies>
        <!-- nacos 客户端服务发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

你会发现启动日志如下:

image-20210621115647903

没有任何注册成功或者失败的日志信息

并且,你去查看nacos,发现服务列表是空的

image-20210621115850639

这一切的根本是,你没有加入springboot的基础依赖!!!比如:web

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

加入后再观察日志

image-20210624111118264

image-20210621120121587

当然实际上,作为一个web服务,你的项目依赖可能并不会丢掉spring-boot-starter-web,所以基本不会遇到这个问题。但是如果是自己新手按照文档一步步学习这个案例,那么很有可能出现这个看起来简单但实际匪夷所思的问题。


5.nacos集群的话,服务注册地址怎么写?

server:
  port: 8001
spring:
  application:
    name: order-service
  cloud:
    nacos:
      discovery:
        server-addr: nacos1的ip:8848,nacos2的ip:8848,nacos3的ip:8848

直接用,分隔即可,和eureka一致

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值