Spring Cloud Eureka——注册中心集群
2017-04-12 19:40
519 查看
前面我们介绍了Spring Cloud Eureka的简单使用。
但前面的例子中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境。服务注册中心是服务的中心位置,如果服务注册中心崩了,显然是灾难性的,不符合微服务架构的高可用性特点。
那么如何搭建高可用的服务注册中心集群呢?
我们可以通过Eureka Server互相注册的方式来实现高可用的部署。所以我们仅仅需要在配置文件中配置defaultZone为其他的注册中心即可。
服务注册中心Eureka Server:
使用前面的示例。
创建配置文件:application-peer1.properties
内容:
spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/创建另外一个配置文件:application-peer2.properties
内容:
spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
显然这里的url中的peer1和peer2我们是无法访问的,所以需要在hosts文件中添加:
127.0.0.1 peer1
127.0.0.1 peer2
配置defaultZone相互注册。注意:这里的url需要使用对方的hostname,即http://peer1:1111/eureka/中,需要使用peer1,而不能使用localhost或者127.0.0.1,否则Eureka注册中心会认为另外一个注册中心是unavailable的。这里的原因笔者认为是通过hostname来进行判断的,并没有深入了解。不过如果不这样使用,的确会出现问题。
最后application.properties:
spring.profiles.active=peer2通过profiles.active来分别使peer1和peer2生效。
两个配置对应的服务注册中心启动之后,可以看到:
可以看到,在下面的Info中,另外一个注册中心分片的信息,是registered和available的。注:如果前面的defaultZone注册的配置,不是用hostname,这里就会变成unavailable,显然这是不符合实际情况的,影响我们的判断。
当其中一个服务注册中心关闭之后,可以看到,信息从available变成了unavailable。
服务Eureka Service:
还是使用前面的实例。
配置文件:
spring.application.name=service-B
server.port=3333
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/注意,这里我们只向其中一个注册中心peer1中注册服务,我们会看到什么呢?
当我们访问另外一个注册中心peer2的时候,发现,在这个注册中心中,也有这个服务的信息!!
而当我们将peer1关闭了之后,我们发现,在peer2中仍然是可以访问到这个服务的。这就实现了服务注册中心的高可用。
不过这里的缺点就是,如果peer1被关闭了,虽然peer2可以访问到peer1上的服务,但是却是不能实时监控的,因为这个毕竟不是向peer2中注册的服务,所以当服务down之后,peer2中仍然会认为是up的。
深入:
在实际开发中,服务注册中心旺旺不单单只有2个节点,而是存在多个节点。但从上面的例子当中,我们可以知道:
Eureka Server的同步遵循着一个非常简单的原则:只要有一条边将节点连接,就可以进行信息传播与同步。
所以,如果存在多个节点,我们只需要将节点之间两两连接起来,形成通路,那么他们之间的所有服务都可以共享。
我们的服务只需要向集群中的任意一个注册中心中注册,即可被所有注册中心所共享,任意一个注册中心崩溃,都不会影响这个服务被调用。
实现了注册中心集群的高可用。
但前面的例子中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境。服务注册中心是服务的中心位置,如果服务注册中心崩了,显然是灾难性的,不符合微服务架构的高可用性特点。
那么如何搭建高可用的服务注册中心集群呢?
我们可以通过Eureka Server互相注册的方式来实现高可用的部署。所以我们仅仅需要在配置文件中配置defaultZone为其他的注册中心即可。
服务注册中心Eureka Server:
使用前面的示例。
创建配置文件:application-peer1.properties
内容:
spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/创建另外一个配置文件:application-peer2.properties
内容:
spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
显然这里的url中的peer1和peer2我们是无法访问的,所以需要在hosts文件中添加:
127.0.0.1 peer1
127.0.0.1 peer2
配置defaultZone相互注册。注意:这里的url需要使用对方的hostname,即http://peer1:1111/eureka/中,需要使用peer1,而不能使用localhost或者127.0.0.1,否则Eureka注册中心会认为另外一个注册中心是unavailable的。这里的原因笔者认为是通过hostname来进行判断的,并没有深入了解。不过如果不这样使用,的确会出现问题。
最后application.properties:
spring.profiles.active=peer2通过profiles.active来分别使peer1和peer2生效。
两个配置对应的服务注册中心启动之后,可以看到:
可以看到,在下面的Info中,另外一个注册中心分片的信息,是registered和available的。注:如果前面的defaultZone注册的配置,不是用hostname,这里就会变成unavailable,显然这是不符合实际情况的,影响我们的判断。
当其中一个服务注册中心关闭之后,可以看到,信息从available变成了unavailable。
服务Eureka Service:
还是使用前面的实例。
配置文件:
spring.application.name=service-B
server.port=3333
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/注意,这里我们只向其中一个注册中心peer1中注册服务,我们会看到什么呢?
当我们访问另外一个注册中心peer2的时候,发现,在这个注册中心中,也有这个服务的信息!!
而当我们将peer1关闭了之后,我们发现,在peer2中仍然是可以访问到这个服务的。这就实现了服务注册中心的高可用。
不过这里的缺点就是,如果peer1被关闭了,虽然peer2可以访问到peer1上的服务,但是却是不能实时监控的,因为这个毕竟不是向peer2中注册的服务,所以当服务down之后,peer2中仍然会认为是up的。
深入:
在实际开发中,服务注册中心旺旺不单单只有2个节点,而是存在多个节点。但从上面的例子当中,我们可以知道:
Eureka Server的同步遵循着一个非常简单的原则:只要有一条边将节点连接,就可以进行信息传播与同步。
所以,如果存在多个节点,我们只需要将节点之间两两连接起来,形成通路,那么他们之间的所有服务都可以共享。
我们的服务只需要向集群中的任意一个注册中心中注册,即可被所有注册中心所共享,任意一个注册中心崩溃,都不会影响这个服务被调用。
实现了注册中心集群的高可用。
相关文章推荐
- 四、Spring Cloud - Netflix(Eureka注册中心集群构建代码层面)
- Spring cloud系列四 Eureka 之概述和服务注册中心集群
- 【微服务架构】SpringCloud之Eureka(注册中心集群篇)(三)
- springcloud实战之3 高可用服务注册中心(eureka集群)
- 【微服务架构】SpringCloud之Eureka(注册中心集群篇)(三)
- 【微服务架构】SpringCloud之Eureka(注册中心集群篇)(三)
- 【微服务架构】SpringCloud之Eureka(注册中心集群篇)(三)
- Spring Cloud之Eureka注册中心及集群
- 【微服务架构】SpringCloud之Eureka(注册中心集群篇)(三)
- 微服务架构 SpringCloud(三)Eureka(注册中心集群篇)
- SpringCloud (一)Eureka注册中心搭建
- 【Spring Cloud】Eureka服务注册中心搭建
- 【Spring Cloud】Eureka服务注册中心搭建
- 【Spring Cloud】Eureka服务注册中心搭建
- SpringCloud之高可用的服务注册中心(Eureka) |第八章 -yellowcong
- Spring Cloud Eureka 入门 (一)服务注册中心详解
- SpringCloud | 注册中心Eureka(二)
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
- Spring Cloud(6)——注册中心高可用集群