美文网首页
Eureka集群

Eureka集群

作者: 沁园Yann | 来源:发表于2020-07-16 15:30 被阅读0次

一、Eureka Server 集群

现在已经成功的实现了一个Eureka服务器,但是现在属于单节点的服务运行过程,如果说现在单节点的Eureka出现了错误,导致无法使用,那么对于所有的微服务架构就将出现整体的瘫痪,这样就需要进行Eureka集群搭建,同时利用集群可以有效的实现HA的处理机制,如果要进行集群的搭建一定要选择两台或以上的电脑完成。

1、参照https://www.jianshu.com/p/39ab9515b1c3,创建多一个Eureka服务器

image.png

2、修改Eureka服务器1的配置文件 application.yml,将 Eureka Server 1 指向 Eureka Server 2

eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #设置与 Eureka Server 交互的服务地址
      #单机就是7001自己
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

      #集群指向其它Eureka Server
      defaultZone: http://eureka7002.com:7002/eureka/

3、修改Eureka服务器2的配置文件 application.yml,Eureka Server 2 指向 Eureka Server 1

eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #设置与 Eureka Server 交互的服务地址
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

      #集群指向其它Eureka Server
      defaultZone: http://eureka7001.com:7001/eureka/
  instance:
      instance-id: payment8002    #修改主机显示名称
      prefer-ip-address: true     #访问路径可以显示IP地址

4、将服务同时注册到Eureka Server 1 和Eureka Server 2

eureka:
  client:
    #表示是否将自己注册进EurekaServer默认为true。
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      #单机
#      defaultZone: http://localhost:7001/eureka
      # 集群
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  # 集群版
  instance:
      instance-id: payment8001    #修改主机显示名称
      prefer-ip-address: true     #访问路径可以显示IP地址

5、先启动Eureka Server,再启动Eureka Client,然后打开Eureka Server后台管理端,可以看到Eureka Server间相互指向,并且Eureka Client也注册到两个Eureka Server中


image.png image.png

二、Eureka Client 集群
1、只需要创建一个一模一样的服务,并且修改端口号


image.png

运行项目后可以看到服务“CLOUD-PAYMENT-SERVICE”指向两个不同的域名


image.png

2、修改服务请求地址,用Eureka显示的服务名代替

@RestController
@Slf4j
public class OrderController {
    public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
    
    @Resource
    private RestTemplate restTemplate;
    @GetMapping("/consumer/payment/create")
    public CommonResult<Payment> create(Payment payment)
    {
        return restTemplate.postForObject(PAYMENT_URL +"/payment/create",payment,CommonResult.class);
    }

    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult<Payment> getPayment(@PathVariable("id") Long id)
    {
        return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
    }
}

3、在配置类 ApplicationContextConfig.java 中,使用 @LoadBalanced 注解赋予 RestTemplate 负载均衡的能力

@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced //赋予 RestTemplate 负载均衡的能力
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

相关文章

网友评论

      本文标题:Eureka集群

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