美文网首页
Eureka集群部署

Eureka集群部署

作者: 我菠菜今天就是要为所欲为 | 来源:发表于2020-10-15 17:49 被阅读0次

    Eureka是SpringCloud应用中的注册中心,用来提供服务注册与发现功能。在实际生产活动中,如果单机部署的Eureka服务发生宕机,虽然已注册到Eureka的微服务可以被其客户端记录并保留,但无法再提供故障节点的剔除与新服务节点的发现功能。

    Eureka集群则可以创建多个Eureka应用,互相之间同步客户端注册信息,又可以独立提供服务发现与注册服务。

    其实Eureka本身就是为集群部署而设计的,所以部署Eureka集群需要修改的配置项并不多。

    首先我们搭建Eureka服务,使用Maven下载依赖:

        <artifactId>eureka</artifactId>
        <packaging>jar</packaging>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-netflix-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    

    编写启动类Application.java

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

    调整配置文件application.yml

    server.port: 8761
    spring.application.name: eureka
    eureka:
      server.enable-self-preservation: false
      instance.instance-id: ${spring.cloud.client.ip-address}:${server.port}
      client:
        register-with-eureka: true     #false表示不向注册中心注册自己。
        fetch-registry: true
        serviceUrl.defaultZone: http://${spring.cloud.client.ip-address}:${server.port}/eureka
    
    
    ---
    spring:
      profiles: zone1
    eureka:
      instance.hostname: eureka
      client.service-url.defaultZone: http://eureka2:${server.port}/eureka/,http://eureka:${server.port}/eureka/
    
    
    ---
    spring:
      profiles: zone2
    eureka:
      instance.hostname: eureka2
      client.service-url.defaultZone: http://eureka:${server.port}/eureka/,http://eureka2:${server.port}/eureka/
    

    修改主机hosts文件

    vi /etc/hosts
    

    在结尾添加两行

    eureka这样改:

    192.168.4.11 eureka2
    127.0.0.1 eureka
    

    eureka2这样改:

    127.0.0.1 eureka2
    192.168.4.10 eureka
    

    启动命令:
    eureka这样启动

    java -jar eureka.jar --spring.profiles.active=zone1
    

    eureka2这样启动

    java -jar eureka.jar --spring.profiles.active=zone2
    

    项目截图:


    项目截图

    以下是几个需要注意的地方:
    server.enable-self-preservation: false关闭自我保护模式,Eureka的自我保护模式是用于防止网络问题导致Eureka本身与其他服务断开连接而开发的,默认在90秒内发生大量(85%)的实例异常,就不会再对异常的服务进行移除。这项功能对于注册有几十上百台服务的Eureka来说很有用,但对于只有几个实例的Eureka来说很容易就能引发不能及时移除错误实例的问题,所以在这里我们将其关闭

    instance.prefer-ip-address: false(默认)因为这种注册的方式使用主机名进行相互查找,所以不能使用实例ip注册

    register-with-eureka: true(本身也进行注册) 与 fetch-registry: true(获取实例列表) 在集群部署中,Eureka服务既是服务端又是客户端,需要从其他实例中获取服务列表,所以需要将这两项配置打开。

    instance.instance-id: ${spring.cloud.client.ip-address}:${server.port}将实例的id配置为ip地址+端口,只是为了好看

    instance.hostname: eureka配置实例的主机名

    启动后截图:


    eureka eureka2

    相关文章

      网友评论

          本文标题:Eureka集群部署

          本文链接:https://www.haomeiwen.com/subject/jvsopktx.html