容器多机部署eureka及相关集群服务出现 Request execution failed with message: AuthScheme is null

devtools/2024/10/15 5:48:07/

预期部署方案:两个eureka+三个相关应用

注册时应用出现:Request execution failed with message: Cannot invoke “Object.getClass()” because “authScheme” is null,一开始认为未正确传递eureka配置的账户+密码,例:defaultZone: http://username:password@dev.bab.cn:8761/eureka/,检查后发现一切正常,后续排查后得出结论 hostname不能是127.0.0.1,必须为容器内ip(本次直接配置的是外部转发域名),调整为hostname: ${POD_IP},当然也可能是受多个因素影响,如集群网络不通、端口或eureka启动端口配置不争气等:

spring:security:basic:enabled: trueuser:name: eurekapassword: abc123456eureka:datacenter: user-serverenvironment: prodinstance:hostname: ${POD_IP}  # 容器部署必须填写docker容器的ipinstance-id: ${random.uuid}client:#    For stand-alone deployment, the following is false 单机部署的话以下为falseregister-with-eureka: ${IS_CLUSTERED:false}fetch-registry: ${IS_CLUSTERED:false}service-url:defaultZone: http://eureka:abc123456@bab.com/eureka/

网上其他说法总结:

  • 降级jdk到8(本次是openjdk17)
  • 升级spring core(本次spring boot3.0,core已经达到6.0)
  • 添加禁用csrf:
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception 			{http.csrf().disable().httpBasic();return http.build();
    }
    
  • 禁用csrf方案2(来自stack overflow):
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.csrf(AbstractHttpConfigurer::disable).authorizeHttpRequests(authConfig -> authConfig.anyRequest().authenticated()).httpBasic(httpBasic -> {}).logout(logout -> {logout.logoutUrl("/logout");logout.addLogoutHandler((request, response, authentication) -> authentication.setAuthenticated(false));});return http.build();
    }
    
  • 禁用csrf方案3:
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.csrf().disable().authorizeHttpRequests().anyRequest().authenticated() // 任何请求都不需要认证:.anyRequest().permitAll().and().httpBasic();return http.build();
    }
    

以上办法都没有成功,而且还导致额外出现Root name ‘timestamp’ does not match expected错误。

遇到的其他问题:eureka存在两个实例时相关服务注册完成后自动断开,排查后因为两个eureka没有将register-with-eureka和etch-registry同时设置为true,且defaultZone的地址不是相互注册状态eureka1填写eureka2的ip、eureka2填写eureka1的ip,可减少为1台或重新配置defaultZone的ip


http://www.ppmy.cn/devtools/44935.html

相关文章

视觉盛宴:探索大屏UI设计的卓越美学

视觉盛宴:探索大屏UI设计的卓越美学 在数字时代,用户界面(UI)设计不仅仅是功能性的体现,更是美学与技术融合的艺术。大屏UI设计,以其独特的视觉冲击力和交互体验,为用户带来了前所未有的视觉盛…

【Leetcode每日一题】 综合练习 - 组合(难度⭐⭐)(78)

1. 题目解析 题目链接:77. 组合 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 题目要求我们从 1 到 n 的整数集合中选择 k 个数的所有组合,且组合中的元素不考虑顺序。这意味着集合 [1, 2] 和…

ubuntu 22.04 appearance设置没有dock选项

1、问题描述 解决办法可以直接跳到后面见2 下图是我同学电脑的appearance界面选项,她有Dock的界面显示。 下面是我的界面, 没有Dock: 然后各种app的界面都在最底下,而且每次只能点击左上角的activities才能显示。 但是如果不打开某…

【wiki知识库】02.wiki知识库SpringBoot后端的准备

📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂打开SpringBoot项目 2.1 导入所需依赖 2.2修改application.yml配置文件 2.3导入MybatisPlus逆向工程工具 2.4创建一个公用的返回值 2.5创建CopyUtil工具类 2.6创建…

学习 SSH Key 生成方法

SSH Key 是用于身份验证的一对密钥,包括公钥和私钥。公钥可以放在需要访问的服务器上,私钥则保留在本地。当你使用SSH连接到支持SSH Key认证的服务器时,服务器会用公钥来加密一个随机生成的字符串发送给客户端,客户端用私钥解密并…

安卓获取内部存储信息

目录 前言获取存储容量 前言 原生系统设置里的存储容量到底是怎么计算的,跟踪源码,涉及到VolumeInfo、StorageManagerVolumeProvider、PrivateStorageInfo、StorageStatsManager......等等,java上层没有办法使用简单的api获取到吗&#xff1f…

艾体宝洞察 | Redis Enterprise对比ElastiCache

选择缓存数据库时,如何在Amazon ElastiCache和Redis Enterprise之间做出选择,应当考虑哪些标准? ElastiCache 通常可以满足基本的缓存需求,因此是一种适合初始阶段的解决方案。但随着使用量的增加,ElastiCache很快会变…

elasticsearch有什么用

Elasticsearch是一个开源的分布式搜索和分析引擎,它被广泛用于构建实时的、可扩展的搜索和分析应用程序。以下是Elasticsearch的主要用途和功能:12 全文搜索:Elasticsearch提供强大的全文搜索功能,可以处理大量的文本数据&…