动态构建Eureka集群

747 阅读2分钟

以下示例使用一个项目,开启3个eureka-server做为集群,扩展同理

3个端口分别为 7001、7002、7003

1. 新建一个SpringBoot项目,添加eureka-server依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

在启动类中添加 @EnableEurekaServer 注解开启 eureka-serve 功能

@SpringBootApplication
@EnableEurekaServer
public class Application {

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

}

2. 在 resouces/application.yml 配置文件中进行集群配置


# eureka注册中心
# web访问端口号  此处设置为:7001-7003
server:
  port: ${port:7001}
  tomcat:
    uri-encoding: UTF-8

# 配置项目信息
spring:
  application:
    name: spring-cloud-eureka-cluster


# eureka 配置信息
eureka:
  instance:
    hostname: eureka-cluster-${server.port}
  other-node-port2: ${p2:7002}
  other-node-port3: ${p3:7003}
  client:
    register-with-eureka: false
    fetch-registry: false
    # 单实例配置自己的服务地址,集群则配置多个地址
    service-url:
      defaultZone: http://eureka-cluster-${eureka.other-node-port2}:${eureka.other-node-port2}/eureka/,http://eureka-cluster-${eureka.other-node-port3}:${eureka.other-node-port3}/eureka/

注:other-node-port2 为自定义的名称,不是 eureka 自带的,所以写的时候idea编辑器是没联想。

关键点1:server.port 使用传参方式定义端口,而非直接写死;

关键点2:other-node-port 其它节点的端口,也是使用传参方式定义端口的;

关键点3:eureka.instance.hostname 也是通过占位符形式读取上面定义的端口号 ${server.port}

关键点4:service-url.defaultZone 配置多个集群地址,是不包含当前 7001 的,应该写其它两个 7002、7003

这个地址 http://eureka-cluster-7001:7001 我配置了 hosts了,如下:

127.0.0.1 eureka-cluster-7001
127.0.0.1 eureka-cluster-7002
127.0.0.1 eureka-cluster-7002

配置完成后先启动项目

点击 Edit Configurations...

第一次启动 7001 的 name 应该默认是 Application,为了区分我修改成了 eureka-cluster-7001

选中eureka-cluster-7001,点击上面的复制按钮,然后将复制出来的那个 Name 修改成 eureka-cluster-7002

VM options 上填写启动参数 -DPORT=7002 -DP2=7001 -DP3=7003

重复上面操作,再复制一个,修改 Name 为 eureka-cluster-7003

VM options 上填写启动参数 -DPORT=7003 -DP2=7001 -DP3=7002

注意启动参数别写错了!

操作完成后点击 OK。

7001、7002、7003分别设置如下:

启动这三个服务,三个都能访问说明配置成功

http://eureka-cluster-7001:7001/

http://eureka-cluster-7002:7002/

http://eureka-cluster-7003:7003/