关闭
Hit
enter
to search or
ESC
to close
May I Suggest ?
#leanote #leanote blog #code #hello world
Okeeper's Blog
Home
Archives
Tags
DevOps
软件笔记
Spring
学习
JVM系列
关于我
Spring Cloud Eureka Server注册服务器高可用配置
无
3254
0
0
zhangyue
# Eureka Server的高可用 Eureka Server除了单点运行之外,还可以通过运行多个实例,并进行互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。 下面我们来构建一个三节点的服务注册中心。 ## 使用yml方式配置 在Eureka Server中配置如下 ``` spring: application: name: eureka-server-clustered profiles: peer1 server: port: 8011 host: localhost eureka: instance: hostname: eureka-peer1 preferIpAddress: true instance-id: ${spring.cloud.client.ipAddress}:${server.port} # 将Instance ID设置成IP:端口的形式 client: registerWithEureka: true fetchRegistry: true serviceUrl: defaultZone: http://${server.host}:8012/eureka/,http://${server.host}:8013/eureka/ --- spring: application: name: eureka-server-clustered profiles: peer2 server: port: 8012 host: localhost eureka: instance: hostname: eureka-peer2 preferIpAddress: true instance-id: ${spring.cloud.client.ipAddress}:${server.port} # 将Instance ID设置成IP:端口的形式 client: registerWithEureka: true fetchRegistry: true serviceUrl: defaultZone: http://${server.host}:8013/eureka/,http://${server.host}:8011/eureka/ --- spring: application: name: eureka-server-clustered profiles: peer3 server: port: 8013 host: localhost eureka: instance: hostname: eureka-peer3 preferIpAddress: true instance-id: ${spring.cloud.client.ipAddress}:${server.port} # 将Instance ID设置成IP:端口的形式 client: registerWithEureka: true fetchRegistry: true serviceUrl: defaultZone: http://${server.host}:8011/eureka/,http://${server.host}:8012/eureka/ ``` 然后分别用`-Dspring.profiles.active`不同的profile启动 在Eureka client同时制定以上三个实例的Eureka地址即可,如: ``` eureka.client.serviceUrl.defaultZone :http://localhost:8011/eureka,http://localhost:8012/eureka,http://localhost:8013/eureka ``` 使用任意一热地址即可访问到Eureka的web界面 ## 使用properties方式配置 创建application-peer1.properties,作为peer1服务中心的配置,并将serviceUrl指向peer2,peer3 ``` spring.application.name=eureka-server info.version=@project.version@ server.port=1001 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://localhost:1002/eureka/,http://localhost:1003/eureka/ ``` 创建application-peer2.properties,作为peer2服务中心的配置,并将serviceUrl指向peer1,peer3 ``` spring.application.name=eureka-server info.version=@project.version@ server.port=1002 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/,http://localhost:1003/eureka/ ``` 创建application-peer3.properties,作为peer3服务中心的配置,并将serviceUrl指向peer1,peer2 ``` spring.application.name=eureka-server info.version=@project.version@ server.port=1003 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/,http://localhost:1002/eureka/ ``` 然后通过spring boot的--spring.profiles.active依次启动服务。 软件开发的一般流程为工程师开发 -> 测试 -> 上线,因此就涉及到三个不同的环境,开发环境、测试环境以及生产环境,通常这三个环境会有很多配置参数不同,例如数据源、文件路径、url等,如果每次上线一个新版本时都手动修改配置会十分繁琐,容易出错。spring 为我们提供了 profile 机制来解决这个问题。 ``` java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1 java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2 java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3 ``` 两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现 ![](https://leanote.com/api/file/getImage?fileId=58d4f220ab64417b810025b4)
觉得不错,点个赞?
Please enable JavaScript to view the
comments powered by Disqus.
comments powered by
Disqus
文章目录