SpringCloud-Eureka服务注册与发现(集群版)

771 阅读3分钟

Eureka集群原理说明

image.png Eureka集群原理:互相注册,相互守望

image.png

EurekaServer集群环境构建步骤

新建一个cloud-eureka-server7002模块
1.  新建一个cloud-eureka-server7002模块
pom依赖
2.  pom依赖同cloud-eureka-server7001
修改两个EurekaServer的yml配置
4.  yml
    
    现在有多台Eureka服务器,所以没台Eureka服务器都要有自己的主机名。
    
    同时Eureka7001和Eureka7002要互相注册。
    
    我们先修改映射配置文件:第3步
    
    1.  Eureka7001的yml
    server:
      port: 7001
    
    eureka:
      instance:
        hostname: eureka7001.com  #eureka服务端的实例名称
      client:
        # false表示不向注册中心注册自己(中介不用注册了)
        register-with-eureka: false
        # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        fetch-registry: false
    
        service-url:
          # 以7001作为服务提供者,向该指定的服务注册中心的位置注册7001服务
          defaultZone: http://eureka7002.com:7002/eureka/
    2.  Eureka7002的yml
        server:
          port: 7002
        
        eureka:
          instance:
            hostname: eureka7002.com  #eureka服务端的实例名称
          client:
            # false表示不向注册中心注册自己(中介不用注册了)
            register-with-eureka: false
            # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
            fetch-registry: false
        
            service-url:
              # 以7002作为服务提供者,向该指定的服务注册中心的位置注册7002服务
              defaultZone: http://eureka7001.com:7001/eureka/
修改域名映射配置文件
3.  修改映射配置文件

    修改:C:\Windows\System32\drivers\etc 路径下的host文件
    
    受限于我们只有一台物理机器,我们用不同的端口号来映射同一个地址。

image.png

   这样修改是是什么意思:
        由于我只有一台电脑,而且将这台电脑也作为服务器。每次我们发送localhost,就会被域名解析器
    解析成127.0.0.1,也就是我们本机的ip回送地址,访问我们本机。
        
        现在我们将eureka7001.com和eureka7002.com作为域名映射到127.0.0.1,那么我们就可以
    模拟请求不同的服务器名。实际上都会解析到我们本机。
    
    注意这个映射修改了不意味着localhost 127.0.0.1之间的映射关系没有,还有。
    即localhost/eureka7001.com/eureka7002.com 都会被域名解析器解析成127.0.0.1
        
    例子1:
        之前的单机的EurekaServer的yml配置:
        server.port=7001
        eureka.instance.hostname=localhost
        eureka.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
        
        那么我通过发送http://localhost:7001/eureka能访问到服务器在本地主机的EurekaServer。
        
    例子2:以两个集群为例
        现在集群的EurekaServer的yml配置
        server.port=7001
        eureka.instance.hostname=eureka7001.com
        eureka.service-url.defaultZone=http://eureka7002.com:7002/eureka/
        
        server.port=7002
        eureka.instance.hostname=eureka7002.com
        eureka.service-url.defaultZone=http://eureka7001.com:7001/eureka/ 
        
        那么这样配置后,我们就可以通过:
            http://eureka7001.com:7001和http://eureka7002.com:7002来
            分别访问这两个EurekaServer。
            同时这两个EurekaServer实现了互相注册。
主配置类
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaMain7002 {
        public static void main(String[] args) {
            SpringApplication.run(EurekaMain7002.class, args);
        }
    }
测试
开启eureka7002 和 eureka7001 这两个服务

测试:  http://localhost:7001/ 和 http://localhost:7002/ 
        
        都成功连接。        

image.png

image.png

image.png

我又测试一个eureka7003

server: port: 7003

eureka: instance: hostname: eureka7003.com #eureka服务端的实例名称 client: # false表示不向注册中心注册自己(中介不用注册了) register-with-eureka: false # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 fetch-registry: false

service-url:
  # 以7001作为服务提供者,向该指定的服务注册中心的位置注册7001服务
  defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/

将其注册到eureka7002和eureka7001中。

image.png

注册提供者微服务和消费者微服务

 将提供者服务8001微服务发布到上面的3台Eureka集群配置中

1.  修改yml
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

将消费者服务80微服务发布到上面的3台Eureka集群配置中

1.  修改yml
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

测试

1.  启动顺序
    先启动Eureka 7001/7002/7003
    在启动payment8001,order80
    
2.  测试:http://eureka7003.com:7003/  成功

image.png

3.  测试:http://eureka7001.com:7001/和http://eureka7002.com:7002/
    
    略...

4.  测试order80微服务

image.png