美文网首页
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