以前一篇文章文章《服务注册与发现---eureka》介绍了单点EurekaServer。可是实际环境中,这种单点的的模式可能会有不少隐形的问题。好比EurekaServer发生宕机,或者某些意外状况发生,极可能影响其余服务之间的调用,严重影响到整个系统的可用性,因此,通常会部署一个高可用的EurekaServer集群。git
本文简单介绍EurekaServer高可用简单搭建。spring
因为本地环境是单台电脑来配置高可用,因此须要修改一下电脑的host文件,本文简单说一下mac修改host文件,其余系统电脑能够自行百度一下,都很简单。bash
127.0.0.1 server1
127.0.0.1 server2
复制代码
本机完整host文件以下:app
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 server1
127.0.0.1 server2
复制代码
配置好了host文件以后,新建一个项目,与以前新建eurekaserver彻底一致,不过配置文件进行了一下简单的修改(只有配置文件进行了修改),先看一下单机模式下的配置:oop
server.port=8761
eureka.instance.hostname=localhost
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
##禁止本身向本身注册
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
复制代码
从配置上能够看到,上面最后两行配置是让注册中心不注册本身,而其实eurekaserver就是将本身也当成服务,向其余注册中心注册本身。测试
新建项目springcloud_eureka_server1(8761),除了配置其他没有任何不一样,这里就不一一展现了,配置文件代码以下:fetch
server.port=8761
eureka.instance.hostname=server1
eureka.client.service-url.defaultZone=http://server2:8762/eureka/
spring.application.name=server1
复制代码
新建项目springcloud_eureka_server2(8762),配置文件代码以下:网站
server.port=8762
eureka.instance.hostname=server2
eureka.client.service-url.defaultZone=http://server1:8761/eureka/
spring.application.name=server2
复制代码
以上代码不难理解,springcloud_eureka_server1(8761)将本身注册到server2的eureka上,springcloud_eureka_server2(8762)注册到server1的eureka上。this
这时查看一下eureka管理页面,以下图:url
观察页面能够看到server1含有了server2的节点,server2有了server1的节点。
修改以前项目springcloud_eureka_client(8761)配置文件以下:
##端口号
server.port=8763
spring.application.name=eureka_client
eureka.client.service-url.defaultZone=http://server1:8761/eureka/,http://server2:8762/eureka/
复制代码
查看一下eureka管理页面,以下:
此时就算断开server1,由于springcloud_eureka_client(8763)也像server2注册了,所以其余server2上的服务依然能够访问springcloud_eureka_client(8763),从而实现了EurekaServer的高可用。
咱们在作一下修改,springcloud_eureka_client(8763)项目配置文件中只配置一个eurekaserver,代码以下:
##端口号
server.port=8763
spring.application.name=eureka_client
eureka.client.service-url.defaultZone=http://server1:8761/eureka/
复制代码
eureka管理页面也是一样的展现了和配置两个服务同样的效果,由于多个eureka之间的数据会同步,可是建议在客户端像第一种方式那样配置。
源码下载 :大老杨码云
我的网站:www.dalaoyang.cn