当前位置: 首页 > 知识库问答 >
问题:

Spring云负载均衡器-带有健康检查/重试的模拟SimpleDiscoveryClient

冉丰茂
2023-03-14

升级了Spring云版本后,我很难从Ribbon切换到Spring云负载平衡器。使用Feign设置SimpleDiscoveryClient很容易。但是simplediscovery客户端“太简单了”。我想至少添加一个healthcheck,这样它就不会使用可能停机的实例

https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#instance-health-check-for-loadbalancer我找到了这个健康检查的自定义配置示例,但它不起作用。

public class CustomLoadBalancerConfiguration {

@Bean
public ServiceInstanceListSupplier discoveryClientServiceInstanceListSupplier(
        ConfigurableApplicationContext context) {
    return ServiceInstanceListSupplier.builder()
                .withDiscoveryClient()
                .withHealthChecks()
                .build(context);
    }
}

如果按原样运行,它会抛出以下缺少的bean错误:XXX中的方法discoveryClientServiceInstanceListSupplier。CustomLoadBalancerConfig需要“org”类型的bean。springframework。网状物客户找不到RestTemplate“”。

有谁能给我一些关于如何使其工作或如何复制ribbon行为的建议吗?

共有2个答案

戚哲
2023-03-14

尝试将以下内容添加到应用程序类

@LoadBalancerClients(defaultConfiguration = LoadBalancerClientConfiguration.class)
public class GatewayApplication {

  public static void main(String[] args) {
    SpringApplication.run(GatewayApplication.class, args);
  }
}

这将允许创建DiscoveryClientServiceInstanceListSupplier(请注意,该类本身在上下文中不可用,因此您不能将其自动关联以进行测试)。

冉锋
2023-03-14

在您的配置中添加下面的RestTemboard Bean。

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}
 类似资料:
  • 根据以下官方文件,我在GKE上安装了Kubernetes入口控制器。 入口控制器运行良好。 它自动创建TCP负载平衡器、健康检查和防火墙规则。我的kubernetes群集有3个节点。有趣的是,有两次健康检查失败。它传递给入口控制器正在运行的实例。我调试了它,但没有找到任何线索。谁能帮我一下吗。

  • 我试图在谷歌云上设置网络负载均衡器,但健康检查总是返回不健康的结果。 我给你我遵循的步骤 > 我创建了两个windows Server 2012 R2实例 我检查了端口80在这两个实例上是否对公众开放 我创建了转发规则,谷歌云给了我一个外部IP 我在两个服务器实例的网络环回接口中设置了外部IP 我创建了一个网络路由,用于转发两个实例上的流量(路由菜单) 我为169.254.169.254/32(网

  • 我在GCP中建立了自己的Elasticsearch集群。群集已启动并运行良好。 集群包含两个客户端节点,我可以使用它们在内部访问并通过运行状况检查http://IP:9200/和

  • 我有一个ECS集群,它有多个节点(任务定义),由应用程序负载平衡器前置。在负载平衡器和容器级别(在任务定义内)配置健康检查有意义吗? 负载平衡器对每个注册的目标运行配置的健康检查,以便注销故障节点。在容器级别设置健康检查可以完成相同的事情:ECS将注销任何未通过健康检查的容器(根据您的配置)。ECS将始终实例化更多任务定义实例,以满足您所需的计数。 对我来说,如果任务定义只有一个容器,那么只在负载

  • Google容器引擎(kubernetes) 使用我的Web服务器应用程序(Torando/python)部署/pod kubernetes中Web服务器服务的入口-它在GCP中创建了负载均衡器 负载均衡器中的后端服务,后端是Web服务器 指向后端服务器的前端 将自定义域和子域引导到相关后端的主机和路径规则 防火墙规则设置为由入口创建 当我创建上述所有内容时,我使用正确的端口和所有内容创建了一个新

  • 我正在将包含divolte的库伯内特斯集群从一个GCP(Google Cloud Platform)项目复制到另一个项目。我在已经运行的项目中的配置与目标项目完全相同。在我的新项目中,我没有通过正确的健康检查运行负载均衡器,当我尝试从负载均衡器连接到te静态IP时,我收到502服务器错误。 我遵循了与原始项目相同的步骤: 在GCP上创建群集 部署文件: 服务文件: 入口文件: 我预计负载平衡器会像