Eureka安全认证及高可用
2017-07-10 本文已影响1439人
二月_春风
最近有些茫然。还是那句话,不积跬步,无以至千里。
Eureka Server的安全认证
Eureka 服务加入安全认证只需要在之前的服务中增加二处步骤即可:
- 在Eureka Server中加入spring-boot-starter-security依赖
其具体的依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
</project>
- 修改配置文件
security:
basic:
enabled: true
user:
name: miaozhihao
password: 123456
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://miaozhihao:123456@${eureka.instance.hostname}:${server.port}/eureka/
发现yml的配置copy过来有些空格就不见了,copy代码的时候会造成不便,在博客的末尾我会加上代码的链接,可以直接复制我的配置文件代码。
启动Eureka服务:
输入配置文件中配置的用户名和密码即可。
附上一份Eureka客户端的配置,
spring:
application:
name: order-service
eureka:
client:
service-url:
defaultZone: http://miaozhihao:123456@localhost:8761/eureka
instance:
instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
server:
port: 9090
user:
service:
url: http://user-service
就改变一处eureka.client.
Eureka Server的高可用
Eureka Server的设计一开始就考虑到了高可用的问题,在Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方,服务注册也不列外。之前的有配置:
eureka:
client:
register-with-eureka: false
fetch-registry: false
让服务注册中心不注册自己。Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。
创建application-peer1.yml文件
security:
basic:
enabled: true
user:
name: miaozhihao
password: 123456
server:
port: 8761
eureka:
instance:
hostname: peer1
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://miaozhihao:123456@peer2:8762/eureka/
spring:
application:
name: eurekasevice-server
向peer2注册自己。
创建application-peer2.yml文件,配置
security:
basic:
enabled: true
user:
name: miaozhihao
password: 123456
server:
port: 8762
eureka:
instance:
hostname: peer2
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://miaozhihao:123456@peer1:8761/eureka/
spring:
application:
name: eurekasevice-server
向peer1注册自己
修改vim /etc/hosts文件配置映射
127.0.0.1 peer1
127.0.0.1 peer2
通过spring.profiles.active属性来启动不同的环境,当然生产上肯定就是二台不同的服务了,这边只是在单机上模拟Eureka Server的高可用。
启动的时候指定不一样的配置文件,
java -jar eurekaservice-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eurekaservice-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer2
8671
8762
服务提供者消费者配置也要做一些修改,这边以服务提供者为例,其实严格意义上一个服务可以做服务提供者也可以做服务消费者
spring:
application:
name: user-service
eureka:
client:
service-url:
defaultZone: http://miaozhihao:123456@peer1:8761/eureka,http://miaozhihao:123456@peer2:8762/eureka/
instance:
instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
server:
port: 8080
此时如果断开peer1,则user-service也会向peer2上注册。所以依然能够访问到user-service服务,从而实现服务注册中心的高可用。