前端时间只简单介绍了下springcloud的高可用方案(springcloud高可用方案),今天详细介绍下如何实施springcloud的高可用部署。
(1)Gateway访问地址:
http://10.192.168.11:9000/client/(2)Client地址:
http://10.192.168.14:9001,http://10.192.168.14:9002/,http://10.192.168.15:9003/,http://10.192.168.15:9004/(3)Eureka地址:
http://10.192.168.12:8761/,http://10.192.168.13:8761/(1)从springcloud架构中,可以了解到,注册中心和网关会成为单点故障率比较高的点,有可能会成为瓶颈。
(2)高可用方案大概思路是:部署多个注册中心和多个应用,实现单点故障后自动切换,无须人工干预。(网关高可用最后有说明)
需修改配置文件:application.yml。
(1)注册中心1(10.192.168.12)
spring: application: name: registry server: port: 8761 eureka: client: register-with-eureka: false service-url: defaultZone: http://10.192.168.13:8761/eureka(2)注册中心2(10.192.168.13)
spring: application: name: registry server: port: 8761 eureka: client: register-with-eureka: false service-url: defaultZone: http://10.192.168.12:8761/eureka重点是defaultZone这个配置,注册中心1要作为客户端配置注册中心2的服务地址,注册中心2要作为客户端配置注册中心1的服务地址,这样就实现了互为注册,并且还有最重要的一点,注册的客户端也会在注册中心之间相互同步。
需修改配置文件:application.yml
eureka: client: service-url: defaultZone: http://10.66.211.12:8761/eureka/,http://10.66.211.13:8761/eureka/ healthcheck: enabled: true instance: lease-expiration-duration-in-seconds: 30 lease-renewal-interval-in-seconds: 10 registry-fetch-interval-seconds: 5 server: port: 9001 spring: application: name: client说明:
重点还是defaultZone这项配置,这里要写成两个注册中心的地址,以逗号分开,这样一台出现单点故障的话,另一台还能正常访问,并且故障注册中心恢复后,会自动从另一台注册中心同步注册客户端信息。
(1)将注册服务客户端在多台服务器部署,同一台服务器的话,以端口号区分下,只部署一台的话,可以使用默认端口号。
(2)本项目是使用了在10.192.168.14和10.192.168.15服务器上都部署了两个应用实例。
其中项目配置文件application.yml如上,重点说明:
spring: application: name: client其中:client是注册的名称,部署的实例都要是这个,路由会根据名称来查找应用,例如本项目部署了4个应用实例,默认实行轮询访问的方式。
访问地址(路由地址):
http://10.192.168.11:9000/client/请求会在四个应用实例(9001-9004)之间进行轮询访问,这样就实现了注册中心与应用客户端的高可用。
关于网关的高可用,我们没有实际部署,不过可以参看greenplum的高可用方案(Greenplum高可用真的高吗?),结合keepalived来实现网关的高可用,参考架构图:
更多知识请关注公众号:「软件老王」,IT技术与相关干货分享,回复关键字获取对应干货,java,送必看的10本“武功秘籍”;图片,送100多万张可商用高清图片;面试,送刚毕业就能月薪“20k”的java面试题,后续不断更新中,比如“软考”、“工具”等,已经在整理中。
软件老王 认证博客专家 博客专家 正经人 软件老王和他的IT朋友们,分享他们的技术见解和生活故事,喜欢的可以主页扫描「软件老王」二维码,关注不迷路,公号内回复关键字获取对应干货!