暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

EurekaServer高可用

dalaoyang 2018-07-27
648

前言

之前一篇文章文章《服务注册与发现---eureka》介绍了单点EurekaServer。但是实际环境中,这种单点的的模式可能会有很多隐形的问题。比如EurekaServer发生宕机,或者某些意外情况发生,很可能影响其他服务之间的调用,严重影响到整个系统的可用性,所以,一般会部署一个高可用的EurekaServer集群。

本文简单介绍EurekaServer高可用简单搭建。

配置本地环境

由于本地环境是单台电脑来配置高可用,所以需要修改一下电脑的host文件,本文简单说一下mac修改host文件,其他系统电脑可以自行百度一下,都很简单。

1.进入/private/etc文件夹内

2.打开host文件

3.文件内加入以下两行

  1. 127.0.0.1    server1

  2. 127.0.0.1    server2

复制

本机完整host文件如下:

  1. ##

  2. # Host Database

  3. #

  4. # localhost is used to configure the loopback interface

  5. # when the system is booting.  Do not change this entry.

  6. ##

  7. 127.0.0.1    localhost

  8. 255.255.255.255    broadcasthost

  9. ::1             localhost

  10. 127.0.0.1    server1

  11. 127.0.0.1    server2

复制

新建项目

配置好了host文件之后,新建一个项目,与之前新建eurekaserver完全一致,不过配置文件进行了一下简单的修改(只有配置文件进行了修改),先看一下单机模式下的配置:

  1. server.port=8761


  2. eureka.instance.hostname=localhost

  3. eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/


  4. ##禁止自己向自己注册

  5. eureka.client.register-with-eureka=false

  6. eureka.client.fetch-registry=false

复制

从配置上可以看到,上面最后两行配置是让注册中心不注册自己,而其实eurekaserver就是将自己也当成服务,向其他注册中心注册自己。

新建项目springcloudeurekaserver1(8761),除了配置其余没有任何不同,这里就不一一展示了,配置文件代码如下:

  1. server.port=8761


  2. eureka.instance.hostname=server1

  3. eureka.client.service-url.defaultZone=http://server2:8762/eureka/


  4. spring.application.name=server1

复制

新建项目springcloudeurekaserver2(8762),配置文件代码如下:

  1. server.port=8762


  2. eureka.instance.hostname=server2

  3. eureka.client.service-url.defaultZone=http://server1:8761/eureka/


  4. spring.application.name=server2

复制

以上代码不难理解,springcloudeurekaserver1(8761)将自己注册到server2的eureka上,springcloudeurekaserver2(8762)注册到server1的eureka上。

这时查看一下eureka管理页面,如下图:

观察页面可以看到server1含有了server2的节点,server2有了server1的节点。

应用注册到高可用EurekaServer上

修改之前项目springcloudeurekaclient(8761)配置文件如下:

  1. ##端口号

  2. server.port=8763


  3. spring.application.name=eureka_client


  4. eureka.client.service-url.defaultZone=http://server1:8761/eureka/,http://server2:8762/eureka/

复制

查看一下eureka管理页面,如下:

此时就算断开server1,因为springcloudeurekaclient(8763)也像server2注册了,因此其他server2上的服务依然可以访问springcloudeurekaclient(8763),从而实现了EurekaServer的高可用。

其他测试

我们在做一下修改,springcloudeurekaclient(8763)项目配置文件中只配置一个eurekaserver,代码如下:

  1. ##端口号

  2. server.port=8763


  3. spring.application.name=eureka_client


  4. eureka.client.service-url.defaultZone=http://server1:8761/eureka/

复制

eureka管理页面也是同样的展示了和配置两个服务一样的效果,因为多个eureka之间的数据会同步,但是建议在客户端像第一种方式那样配置。

源码下载 :大老杨码云

个人网站:https://www.dalaoyang.cn

关注作者公众号


文章转载自dalaoyang,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论