eureka server注册中心高可用及安全认证

注册中心单点肯定是不牢靠的,可以参考下面的方案做成注册中心集群:

弄成3个节点,每个节点向其它节点注册,这样只要集群中有一个节点正常工作即可。为了方便在本机弄出这种效果,我们先修改下host文件

127.0.0.1  localhost server1 server2 server3

相当于给本机ip绑了3个hostname。然后在项目中,创建3个profile,参考下图:

application.yml:

1
2
3
4
5
spring:
   application:
     name: eureka-server-cluster
   profiles:
     active: server1

application-server1.yml:

1
2
3
4
5
6
7
8
9
10
server:
   port: 8100
 
eureka:
   instance:
     hostname: server1
     instance-id: ${spring.application.name}:${server.port}
   client:
     service-url:
       defaultZone: http: //server2:8200/eureka,http://server3:8300/eureka

application-server2.yml:

1
2
3
4
5
6
7
8
9
10
server:
   port: 8200
 
eureka:
   instance:
     hostname: server2
     instance-id: ${spring.application.name}:${server.port}
   client:
     service-url:
       defaultZone: http: //server1:8100/eureka,http://server3:8300/eureka

application-server3.yml:

其它不用改,idea中启用时,指定3个不同的profile,参考下图:

启用3个实例,分别应对server1,server2,server3 这三个profile后,看下UI

可以看到,每个eureka server都向其它节点注册了。

其它服务向eureka server集群注册时,参考下面的配置:

1
2
3
4
5
6
7
8
9
10
11
12
server:
   port: 8001
 
spring:
   application:
     name: "service-provider-demo"
eureka:
   instance:
     prefer-ip-address: true
   client:
     service-url:
       defaultZone: http: //localhost:8100/eureka/,http://localhost:8200/eureka/,http://localhost:8300/eureka/

 

再来看另一个问题:

注册中心的管理界面以及服务注册时,没有任何认证机制,安全性比较差,如果其它服务恶意注册一个同名服务,但是实现不同,可能就有风险了,可以参考下面的配置改进:

先添加:compile 'org.springframework.boot:spring-boot-starter-security' 依赖,然后在eureka server的application.yml中增加

1
2
3
4
5
6
security:
   basic:
     enabled: true
   user:
     name: yjmyzz #用户名
     password: 123456 #密码

这样就添加了1个用户名及密码(注:其原理就是spring-security,熟悉spring-security的朋友,也可以改成把用户名/密码存储在数据库中)

启动后,再浏览eureka server就用输入用户名,密码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值