在eureka中使用ip注册服务
在将微服务放入docker部署在多个云服务器上的时候,发现eureka里显示的是机器名,然后弄了个spring boot admin监控平台,发现它就找不到各个微服务对应的主机了。在网上查得eureka.instance.prefer-ip-address=true,使用这条配置eureka里显示的就是ip地址了,但是依然不够的,在监控平台里面还是连接不上。还需要配置instance-和h...
在将微服务放入docker部署在多个云服务器上的时候,发现eureka里显示的是机器名,然后弄了个spring boot admin监控平台,发现它就找不到各个微服务对应的主机了。
在网上查得eureka.instance.prefer-ip-address=true,使用这条配置eureka里显示的就是ip地址了,但是依然不够的,在监控平台里面还是连接不上。
还需要配置instance-和hostname才能使客户端访问到实例
效果应该是这样,点击ip后能访问到相应内容
eureka服务端配置:
server.port=8666
spring.application.name=eureka-server
#服务注册中心实例的主机名
eureka.instance.hostname=xxx.xxx.xxx.67
#留存的服务示例低于多少比例进入保护模式
eureka.server.renewal-percent-threshold=0.5
#是否开启保护模式
eureka.server.enable-self-preservation=true
#是否向服务注册中心注册自己
eureka.client.register-with-eureka=false
#是否启用获取服务注册信息,因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false
eureka.client.fetch-registry=false
#注册和查询都需要依赖该地址,多个以逗号分隔
eureka.client.serviceUrl.defaultZone=http://admin:password@xxx.xxx.xxx.67:8666/eureka/
#使用ip替代实例名
eureka.instance.prefer-ip-address=true
#设置实例的ID为ip:port
eureka.instance.instance-id=xxx.xxx.xxx.67:${server.port}
#这里使用spring security对注册中心做一个基础的用户名密码登录
security.basic.enabled=true
security.user.name=admin
security.user.password=password
注意到:
eureka.instance.hostname=xxx.xxx.xxx.67
eureka.instance.instance-id=xxx.xxx.xxx.67:${server.port}
这里我直接手工指定了ip,而不是通过${spring.cloud.client.ipAddress}来获取本机的ip,因为使用docker后,发现获取的ip是docker0这张网卡上分配的ip,以172.16.xxx.xxx开头的ip,要使docker绑定外网ip网上也有很多资料,这里先简化操作,就直接手工指定ip了哈。。
客户端配置:
eureka.client.service-url.defaultZone=http://admin:password@xxx.xxx.xxx.67:8666/eureka/
eureka.instance.lease-renewal-interval-in-seconds=5
eureka.instance.lease-expiration-duration-in-seconds=10
eureka.client.healthcheck.enable=true
eureka.instance.hostname=xxx.xxx.xxx.67
#设置实例的ID为ip:port
eureka.instance.instance-id=xxx.xxx.xxx.67:${server.port}
注意客户端也要写上eureka.instance.instance-id和eureka.instance.hostname
这样在eureka上就显示的是ip地址了
要使spring boot admin正常工作,还需在spring boot admin上配置
admin服务端配置
spring.application.name=admin-monitor
server.port=7001
#为了安全,以后可以把管理端口设置一下
#management.port=7002
#现在测试环境就关闭了身份认证,真实环境还是需要它的
management.security.enabled=false
客户端配置
#关闭身份认证,以免发生401错误
management.security.enabled=false
#admin监控配置,连接到服务端
spring.boot.admin.url=http://xxx.xxx.xxx.96:7001
#在spring boot admin里以ip的形式注册显示
spring.boot.admin.client.prefer-ip=true
这里比较关键的一步就是在客户端里配置spring.boot.admin.client.prefer-ip=true,这样spring boot admin就能通过ip来访问各个微服务端点,然后收集它们的信息,从而来监控各个微服务了
更多推荐
所有评论(0)