老大说新的平台要把微服务的注册服务集群搭建起来,提高平台的稳定性。我一想之前我们的阳欧巴以及搭过一遍了,照着他写的文档来就行了,万万没想到,自己还是踩了不少坑。
基本配置
首先得先建两个注册服务,因为同一份代码,所以就采用了不同分支。
在不同的环境配置信息里面配置
端口为8766的配置,注册地址为8767的端口
---
server:
port: 8766
spring:
profiles: default
cloud:
config:
enabled: false
client:
registerWithEureka: true
fetchRegistry: false
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_DEFAULT_ZONE:http://localhost:8767/eureka/}
端口为8767的配置,注册地址为8766的端口
server:
port: 8767
spring:
profiles: default
cloud:
config:
enabled: false
client:
registerWithEureka: true
fetchRegistry: false
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_DEFAULT_ZONE:http://localhost:8766/eureka/}
是否向服务注册中心注册自己,默认为true
client:
registerWithEureka: true
是否检索服务
client:
fetchRegistry: false
其它配置含义执行搜索哈
此时运行出来的第一个坑,一个注册服务可以访问,另一个不行
8766端口的注册服务
8767端口的注册服务,可以访问,并且发现端口为8766的注册服务已经注册到端口为8767的注册服务
查找原因
看到第一个截图,怃然以为是注册服务添加了安全机制,需要输入用户名和密码才可以访问,但从配置中我没有安全机制的配置信息(可以看我上一篇的文章,来了解注册服务的安全机制配置)。全局检索配置信息,只发现只有一个正式环境的配置我添加了安全机制的,但又细想spring boot里面的配置信息不回窜了吧,而后检查后发现不存在。怎么办呢?又问了问阳欧巴,阳欧巴也说可能窜环境了,自己又开始检查。果不其然,由于之前项目给正式环境的注册服务加了安全机制,导致我双向注册时,其中一个需要验证,并且用户名和密码是不知道的,也就无法查看注册信息。
验证猜想
我将之前引入的安全机制的maven包去掉,重新启动服务,发现可以了。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
另一种解决方法
在当前环境中同样的添加安全机制的配置
spring:
profiles: default
security:
basic:
enabled: true
user:
name: 888888 # 用户名
password: 888888 # 用户密码
cloud:
config:
enabled: false
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_DEFAULT_ZONE:http://888888: 888888@localhost:8767/eureka/}
spring:
profiles: default
security:
basic:
enabled: true
user:
name: 888888 # 用户名
password: 888888 # 用户密码
cloud:
config:
enabled: false
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_DEFAULT_ZONE:http://888888: 888888@localhost:8766/eureka/}
这样也能够实现注册服务双实例,从而达到集群的概念
结束,明天将继续完善相关微服务的集群工作,希望老大看到这篇文章,不要闲我干活慢,因为今天后端就我和阳欧巴,今天忙的要不要不要的,基本没时间弄了,明天继续哈。
所有评论(0)