spring cloudspringcloud学习

Eureka安全认证及高可用

2017-07-10  本文已影响1439人  二月_春风

最近有些茫然。还是那句话,不积跬步,无以至千里。

Eureka Server的安全认证

Eureka Server的安全认证官网链接

Eureka 服务加入安全认证只需要在之前的服务中增加二处步骤即可:

其具体的依赖如下:

    <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

访问http://localhost:8761/

8671

访问http://localhost:8762/

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服务,从而实现服务注册中心的高可用。

上一篇 下一篇

猜你喜欢

热点阅读