前面我们介绍了Spring Cloud Eureka的简单使用。
但前面的例子中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境。服务注册中心是服务的中心位置,如果服务注册中心崩了,显然是灾难性的,不符合微服务架构的高可用性特点。
那么如何搭建高可用的服务注册中心集群呢?
我们可以通过Eureka Server互相注册的方式来实现高可用的部署。所以我们仅仅需要在配置文件中配置defaultZone为其他的注册中心即可。
我们创建三台机器的集群:
peer1:loaclhost:8761
peer2:loaclhost:8762
peer2:loaclhost:8763
一:集群环境搭建
创建配置文件application.yml:
security:
basic:
enabled: true
user:
name: admin
password: admin123
spring:
application:
name: EUREKA-HA
---
server:
port: 8761
spring:
profiles: peer1
eureka:
instance:
hostname: peer1
client:
service-url:
defaultZone: http://admin:admin123@peer2:8762/eureka/,http://admin:admin123@peer3:8763/eureka/
---
server:
port: 8762
spring:
profiles: peer2
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://admin:admin123@peer1:8761/eureka/,http://admin:admin123@peer3:8763/eureka/
---
server:
port: 8763
spring:
profiles: peer3
eureka:
instance:
hostname: peer3
client:
serviceUrl:
defaultZone: http://admin:admin123@peer1:8761/eureka/,http://admin:admin123@peer2:8762/eureka/
显然这里的url中的peer1,peer2,peer3我们是无法访问的,所以需要在hosts文件中添加:
127.0.0.1 peer1 peer2 peer3
二、启动
如果是STS,可以使用Spring Boot App启动:
Profile分别可以设置,peer1,peer2,peer3
如果通过eclipse点击,右键Run As 启动,需要加入参数如下图:
如果通过jar命令启动,
java -jar eureka_register_service-1.0.0.jar --spring.profiles.active=peer1
java -jar eureka_register_service-1.0.0.jar --spring.profiles.active=peer2
java -jar eureka_register_service-1.0.0.jar --spring.profiles.active=peer3
三、查看
分别打开http://127.0.0.1:8761/ , http://127.0.0.1:8762/和http://127.0.0.1:8763/ 如下图
###四:服务端注册
设置了多个注册中心后,我们的服务配置不需要太多改动只需将biz-service-0工程的application.properties的serviceUrl修改下
eureka.client.serviceUrl.defaultZone=http://peer1:8761/eureka/,http://peer2:8762/eureka/,http://peer3:8763/eureka/,
当然也可以绑定一个地址,eureka.client.serviceUrl.defaultZone=http://peer1:8761/eureka/
这两种绑定都可以
五:集群理解
虽然上面我们以双节点作为例子,但是实际上因负载等原因,我们往往可能需要在生产环境构建多于两个的Eureka Server节点。那么对于如何配置serviceUrl来让集群中的服务进行同步,需要我们更深入的理解节点间的同步机制来做出决策。我们通过一张图来理解集群