美文网首页
【Spring Cloud】01-Eureka

【Spring Cloud】01-Eureka

作者: Y了个J | 来源:发表于2019-08-27 23:20 被阅读0次

编写Eureka Server

加依赖

<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>
</dependencies>

加注解

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
  public static void main(String[] args) {
    SpringApplication.run(EurekaApplication.class, args);
  }
}

写配置

server:
  port: 8761
eureka:
  client:
    # 是否要注册到其他Eureka Server实例
    register-with-eureka: false
    # 是否要从其他Eureka Server实例获取数据
    fetch-registry: false
    service-url: 
      defaultZone: http://localhost:8761/eureka/

将应用注册到Eureka Server上

加依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

加注解

@EnableDiscoveryClient 
@SpringBootApplication
public class ProviderUserApplication {
  public static void main(String[] args) {
    SpringApplication.run(ProviderUserApplication.class, args);
  }
}

添加配置:

spring:
  application:
    name: springcloud-consumer
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    # 是否注册IP到eureka server,如不指定或设为false,那就会注册主机名到eureka server
    prefer-ip-address: true

Eureka安全

Eureka本身不具备安全认证的能力,Spring Cloud使用Spring Security为Eureka Server进行了增强。
在Eureka Server端,pom添加依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
</dependency>

在bootstrap.yml添加如下配置

spring:
  security:
    user:
      name: admin                # 配置登录的账号是admin
      password: admin         # 配置登录的密码是admin

# 将Eureka Server中的 eureka.client.service-url.defaultZone 修改为为http://{user}:{password}@EUREKA_HOST:EUREKA_PORT/eureka/ 的形式:
eureka:
  client:
    service-url:
      defaultZone: http://admin:admin@localhost:8761/eureka/

启动Eureka Server并访问http://localhost:8761 ,可跳转至登录页面,输入账号admin ,密码admin 后,即可正常访问Eureka Server首页。

Eureka集群

修改host

vim /etc/hosts
# 添加如下内容
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3

配置:

spring:
  application:
    name: @artifactId@
  profiles:
    active: dev
  security:
    user:
      name: admin
      password: admin

---
spring:
  profiles: dev
server:
  port: 8761
eureka:
  instance:
    hostname: springcloud-eureka  #eureka服务端的实例名称
    prefer-ip-address: true
  client:
    register-with-eureka: false   #false表示不向注册中心注册自己。
    fetch-registry: false         #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://admin:admin@${eureka.instance.hostname}:8761/eureka/

---
spring:
  profiles: peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1 #eureka服务端的实例名称
    prefer-ip-address: true
    instance-id: peer1
  client:
    register-with-eureka: false   #false表示不向注册中心注册自己。
    fetch-registry: false         #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://admin:admin@localhost:8762/eureka/,http://admin:admin@localhost:8763/eureka/

---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2 #eureka服务端的实例名称
    prefer-ip-address: true
    instance-id: peer2
  client:
    register-with-eureka: false   #false表示不向注册中心注册自己。
    fetch-registry: false         #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://admin:admin@localhost:8761/eureka/,http://admin:admin@localhost:8763/eureka/

---
spring:
  profiles: peer3
server:
  port: 8763
eureka:
  instance:
    hostname: peer3 #eureka服务端的实例名称
    prefer-ip-address: true
    instance-id: peer3
  client:
    register-with-eureka: false   #false表示不向注册中心注册自己。
    fetch-registry: false         #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://admin:admin@localhost:8761/eureka/,http://admin:admin@localhost:8762/eureka/

启动:

java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

第一个实例会报错,这是正常的,因为它会尝试连接其他两个实例,但第三个实例尚未启动,所以会报连接不上的异常。

对Spring Boot的Profile不熟悉,贴个拓展阅读
SpringBoot - 多Profile使用与切换

将应用注册到Eureka Server集群上

eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/,http://peer2:8763/eureka/

实战项目地址

相关文章

网友评论

      本文标题:【Spring Cloud】01-Eureka

      本文链接:https://www.haomeiwen.com/subject/swtuectx.html