zoukankan      html  css  js  c++  java
  • Eureka集群试验的一点总结

    先简单描述一下试验:

    试验在一台机器上进行,假设有host文件中配置了以下内容

    127.0.0.1 left
    127.0.0.1 center
    127.0.0.1 right

    试验中搭建三个注册中心实例分别命名为left(1111端口)、center(1110端口)、right(1112端口),构成集群,他们的 spring.application.name均为eureka-server,但是端口不同。

    为了方便说明,再定义个名词:“注册到”

    假如本文提及A注册到了B,那就是在说服务A的eureka.client.service-url.defaultZone里写上了注册中心B的地址。

    试验也证明了一旦某个服务A注册到了某个注册中心B,那么A会把自己的相关信息报给B。

    试验得到的结论:

    1、任意两个节点A和B想要构成真正的集群,必须互相注册对方的主机名(或者ip)地址,即A注册到了B,且B也同时注册到了A。

    2、使用ip注册会在eureka管理页面上显示 unavailable-replicas,但这并不妨碍使用,属于误报

    3、如果left注册到了center,而center 没有注册到left,那么注册到left的服务,会同步到center上,而注册到center的服务不会同步到left上。

    4、想在eureka的管理页面上不显示 unavailable-replicas,则注册中心的地址必须使用主机名而非ip地址,即hosts文件中配置的left、center、right之类。

    5、服务的信息的同步不会链式传递,只能同步一个节点。即:如果left注册到了center,center注册到了right,那么如果某个服务A只注册到了left上,left会同步A服务的信息给center,但是center不会同步给right

    6、一个服务无法同时注册到多个未做集群的注册中心上的

    7、如果【eureka.client.service-url.defaultZone】中的地址直接用的IP,那么一定不要配【eureka.instance.prefer-ip-address=true】,不然你的Eureka集群将无法正常工作。

    8、第七条主要时因为在多网卡环境中eureka无法正确的选择网络环境(网卡),在使用docker之后才发现。

    #在docker中运行的时候,为了控制网络环境,除了使用host外还需要指定网络,可以通过忽略网卡或者选择网段的方式进行
    #忽略网卡spring.cloud.inetutils.ignored-interfaces[0]=eth0 # 正则表达式
    #选择网络spring.cloud.inetutils.preferredNetworks[0]=^192.168

    测试使用的版本:Dalston.SR1

  • 相关阅读:
    jQuery禁用或启用
    ASP.NET MVC一次删除多笔记录
    在你的ASP.NET MVC中使用查找功能
    Get radio selected value
    绑定一个值给radio
    ASP.NET MVC实现权限控制
    为Guid数据类型的属性(property)赋值
    Razor语法中绑定一个值给checkbox
    判断IEnumerable<T>集合中是否包含有T对象
    SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
  • 原文地址:https://www.cnblogs.com/flying607/p/8317128.html
Copyright © 2011-2022 走看看