SpringCloud Eureka 集群

Eureka集群介绍

在一个分布式系统中,服务注册中心是最重要的基础部分,
理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。
Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。

开发环境

  • JDK:1.8
  • SpringBoot:2.1.16.RELEASE
  • SpringCloud:Greenwich.RELEASE

项目结构

  • halo-cloud-parent 父工程
  • halo-cloud-server:9090(默认) 注册中心
  • halo-cloud-provider:7070 服务提供者
  • halo-cloud-consumer:8080 服务消费者

修改hosts 文件

C:\Windows\System32\drivers\etc

127.0.0.1       cloud9091.com
127.0.0.1       cloud9092.com
127.0.0.1       cloud9093.com

halo-cloud-parent

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-commons</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


    <dependencyManagement>
        <!--引入springcloud依赖的-->
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

halo-cloud-server

   <parent>
        <groupId>com.cloud</groupId>
        <artifactId>parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <!--eureka server 依赖座标-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
@EnableEurekaServer
@SpringBootApplication
public class ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class, args);
    }

}

采用不同的配置文件启动三个不同的注册中心服务

  • application-peer1.yml
server:  # 服务端口
  port: 9090
spring:
  application:  # 应用名字,eureka 会根据它作为服务id
    name: cloud9090Server


#  eureka配置
eureka:
  instance:
    hostname: cloud9090.com
  client:
    register-with-eureka: false # 不向eureka server 注册自己
    fetch-registry: false # 不向eureka server 获取服务列表
    service-url:   #  eureka server 的地址
      # 单机情况  http://${eureka.instance.hostname}:${server.port}/eureka
      # 集群 http://cloud9091.com/eureka
      defaultZone: http://cloud9091.com:9091/eureka/,http://cloud9092.com:9092/eureka/
  • application-peer2.yml
server:  # 服务端口
  port: 9091
spring:
  application:  # 应用名字,eureka 会根据它作为服务id
    name: cloud9091Server


#  eureka配置
eureka:
  instance:
    hostname: cloud9091.com
  client:
    register-with-eureka: false # 不向eureka server 注册自己
    fetch-registry: false # 服务发现 不向eureka server 获取服务列表 表示自己端就是注册中心 我的职责就是维护服务实例 false  自己不获取注册信息
    service-url:   #  eureka server 的地址
      # 单机情况  http://${eureka.instance.hostname}:${server.port}/eureka
      # 集群 http://cloud9090.com/eureka
      defaultZone: http://cloud9090.com:9090/eureka/,http://cloud9092.com:9092/eureka/
  • application-peer3.yml
server:  # 服务端口
  port: 9092
spring:
  application:  # 应用名字,eureka 会根据它作为服务id
    name: cloud9092Server


#  eureka配置
eureka:
  instance:
    hostname: cloud9092.com
  client:
    register-with-eureka: false # 不向eureka server 注册自己
    fetch-registry: false # 服务发现 不向eureka server 获取服务列表 表示自己端就是注册中心 我的职责就是维护服务实例 false  自己不获取注册信息
    service-url:   #  eureka server 的地址
      # 单机情况  http://${eureka.instance.hostname}:${server.port}/eureka
      # 集群 http://cloud9090.com/eureka
      defaultZone: http://cloud9090.com:9090/eureka/,http://cloud9091.com:9091/eureka/

分别启动三个注册中心服务
剩下两个跟这个配置一样

测试

  • localhost:9090


  • localhost:9091


  • localhost:9092


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章