美文网首页
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