Fork me on GitHub

Eureka集群配置

Eureka集群配置

Eureka集群配置图
  1. 问题:微服务RPC远程服务调用最核心的是什么
    高可用,试想你的注册中心只有一个only one, 它出故障了那就会导致整个为服务环境不可用,所以解决办法:搭建Eureka注册中心集群 ,实现负载均衡+故障容错

  2. eureka-serve集群搭建步骤

  1. 构建cloud-eureka-server7001和cloud-eureka-server7002模块,参考前一篇文章

  2. 找到C:\Windows\System32\drivers\etc路径下的hosts文件

    127.0.0.1	eureka7001.com
    127.0.0.1	eureka7002.com
    
  3. 修改YML文件

    • cloud-eureka-server700下的application.yml
    server:
      port: 7001
    eureka:
      instance:
        hostname: eureka7001.com
      client:
        #表示是否将自己注册进EurekaServer默认为true。false表示不向注册中心注册自己
        register-with-eureka: false
        #false表示自己端就是注册中心,职责就是维护服务实例,并不需要去检索服务
        fetchRegistry: false
        service-url:
          defaultZone: http://eureka7002.com:7002/eureka/ #7001的要指向7002
    
    
    • cloud-eureka-server700下的application.yml
    server:
      port: 7002
    eureka:
      instance:
        hostname: eureka7002.com
      client:
        #表示是否将自己注册进EurekaServer默认为true。false表示不向注册中心注册自己
        register-with-eureka: false
        #false表示自己端就是注册中心,职责就是维护服务实例,并不需要去检索服务
        fetchRegistry: false
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka/#7002的要指向7001
    
  4. 将cloud-consumer-order80、cloud-provider-payment8001、cloud-provider-payment8002添加到2天Eureka集群配置中。

    #分别在三个模块中的application.yml中添加下面的eureka配置
    eureka:
      client:
        #表示是否将自己注册进EurekaServer默认为true。false表示不向注册中心注册自己
        register-with-eureka: true
        #false表示自己端就是注册中心,职责就是维护服务实例,并不需要去检索服务
        #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
        fetchRegistry: true
        service-url:
          defaultZone: http://eureka7002.com:7002/eureka,http://eureka7001.com:7001/eureka
    
  5. 测试

    #启动顺序
    1.先要启动EurekaServer,7001/7002服务
    2.再要启动服务提供者provider,8001
    3.再要启动消费者,80
    4.分别访问
    http://eureka7002.com:7002/
    http://eureka7001.com:7001/
    可以看到80 8001 8002已经注册到Eureka中了
    
 ![](https://img2022.cnblogs.com/blog/1291730/202203/1291730-20220315175502040-1546075037.png)
  1. 负载均衡问题

    由于支付服务提供者集群环境中存在8001 和 8002两个服务提供者,当用户访问服务的时候,选择那台服务就是个问题,通过负载均衡配置就能解决该问题,具体配置如下:

    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.client.RestTemplate;
    /**
    * @Author: hcx
    * @Description: RestTemplate模板配置:RestTemplate提供了多种便捷访问远程Http服务的方法, 
    是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集
    * @Date: 2021/12/16 11:10
    * @Param: 
    * @return: 
    **/
    
    @Configuration
    public class ApplicationContextConfig {
        
        @Bean
        @LoadBalanced//负载均衡注解
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }
    

    配置成功后,访问其中一个接口,8001/8002端口交替出现,就表明负载均衡配置成功。

posted @ 2022-03-15 17:59  壶小旭  阅读(288)  评论(0编辑  收藏  举报