Spring Cloud集成ZooKeeper注册中心绑定指定ip,解决UnknownHostException

Spring Cloud集成Zookeeper作为注册中心,从网关Spring Cloud GateWay转发给微服务里,在微服务里看到发送请求过来是以主机别名为url,如主机别名是server1.cluster,那么访问的地址是http://server.cluster/xxx。在GateWay有时会导致找不到服务。报类似如下的错误:

500 Server Error for HTTP GET "/users/10/profile"
java.net.UnknownHostException: server.cluster
at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[?:1.8.0_151]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
|_ checkpoint 鈬org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
|_ checkpoint 鈬com.ubtech.security.gateway.filter.GatewayMainFilter [DefaultWebFilterChain]
|_ checkpoint 鈬com.ubtech.security.gateway.filter.CacheBodyGlobalFilter [DefaultWebFilterChain]
|_ checkpoint 鈬HTTP GET "/users/10/profile" [ExceptionHandlingWebHandler]
Stack trace:
at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[?:1.8.0_151]
at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[?:1.8.0_151]
at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[?:1.8.0_151]
at java.net.InetAddress.getByName(InetAddress.java:1076) ~[?:1.8.0_151]
at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:148) ~[netty-all-4.1.45.Final.jar!/:4.1.45.Final]

解决方法是向zookeeper注册服务时,指定服务的地址,示例:

spring.cloud.zookeeper.connectString=192.168.1.110:2181    #zookeeper地址
spring.cloud.zookeeper.discovery.instanceHost=192.168.2.11 #绑定的ip
spring.cloud.zookeeper.discovery.instancePort=8888 #绑定的端口

版权声明:著作权归作者所有。

相关推荐

SpringCloud集成Zookeeper

Spring Cloud介绍Spring Cloud是一个基于SpringBoot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式,基于http协议开发的开箱即用的微服务架构注册中心Spring Cloud 早期版本的注册中心主要使用Eureka,但在2.0过后,Netf

Java判断ip是否属于指定的ip网段

同一网段的ip是有相同的网络标识。ip地址和子网掩码做“与”运算的到的结果为网络标识比如两个IP:172.16.1.100(子网掩码:255.255.0.0)和172.16.2.100(子网掩码:255.255.0.0)。首先把ip地址和子网掩码转换为二进制,做与运算,然后转换为十进制,得到的结果为:172.16.0.0。所以可以说这两个ip是属于172.16.0.0网段。网段表示方式172.16

Spring Cloud Stream集成Kafka

这里演示使用Spring Boot ,Spring Cloud集成Kafka来实现一个简单的实时流系统。添加依赖可以在https://start.spring.io创建一个基于spring boot的maven项目。需要添加的主要依赖:spring-cloud-stream以及spring-cloud-starter-stream-kafka,如下:<

Spring Boot 集成RabbitMQ

此处假设已经安装好了RabbitMQ,主要讲述使用Spring Boot如何集成RabbitMQ。添加依赖在Maven的pom.xml添加rabbitmq的starter依赖,内容如下:<?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo

Spring Boot集成kafka

Spring Boot对kafka提供了自动配置(auto configuration)。使用用Spring Boot只需要做很少的配置即可集成对kafka的访问。pom配置1、继承spring-boot-starter-parent<parent>   <groupId>org.springframework.boot&l

Spring Boot:日志集成

Java日志框架Java有好几个日志框架,我们有时在选择Java日志框架时会有点迷惑。下面几个是常用的日志框架Common Logging:Apache最早提供的日志的门面接口。避免和具体的日志方案直接耦合。SLF4J(Simple Logging Facade for JAVA):和Common Logging一样,是一个门面框架,是对