springcloud-高可用部署

简介: springcloud-高可用部署1.场景描述前端时间只简单介绍了下springcloud的高可用方案(springcloud高可用方案),今天详细介绍下如何实施springcloud的高可用部署。2.

springcloud-高可用部署
1.场景描述
前端时间只简单介绍了下springcloud的高可用方案(springcloud高可用方案),今天详细介绍下如何实施springcloud的高可用部署。

2.解决方案
2.1 架构方案
2.1.1 架构图

2.1.2 访问地址
(1)Gateway访问地址:

http://10.192.168.11:9000/client/
(2)Client地址:

http://10.192.168.14:9001http://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/
2.1.3 方案说明
(1)从springcloud架构中,可以了解到,注册中心和网关会成为单点故障率比较高的点,有可能会成为瓶颈。

(2)高可用方案大概思路是:部署多个注册中心和多个应用,实现单点故障后自动切换,无须人工干预。(网关高可用最后有说明)

2.2 注册中心部署
需修改配置文件:application.yml。

2.2.1 注册中心配置
(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

2.2.2 说明
重点是defaultZone这个配置,注册中心1要作为客户端配置注册中心2的服务地址,注册中心2要作为客户端配置注册中心1的服务地址,这样就实现了互为注册,并且还有最重要的一点,注册的客户端也会在注册中心之间相互同步。

2.3 应用部署
2.3.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这项配置,这里要写成两个注册中心的地址,以逗号分开,这样一台出现单点故障的话,另一台还能正常访问,并且故障注册中心恢复后,会自动从另一台注册中心同步注册客户端信息。

2.3.2 应用部署
(1)将注册服务客户端在多台服务器部署,同一台服务器的话,以端口号区分下,只部署一台的话,可以使用默认端口号。

(2)本项目是使用了在10.192.168.14和10.192.168.15服务器上都部署了两个应用实例。

其中项目配置文件application.yml如上,重点说明:

spring:

application:
     name: client

其中:client是注册的名称,部署的实例都要是这个,路由会根据名称来查找应用,例如本项目部署了4个应用实例,默认实行轮询访问的方式。

2.4 高可用访问
访问地址(路由地址):

http://10.192.168.11:9000/client/
请求会在四个应用实例(9001-9004)之间进行轮询访问,这样就实现了注册中心与应用客户端的高可用。

2.5 关于网关高可用
关于网关的高可用,我们没有实际部署,不过可以参看greenplum的高可用方案(Greenplum高可用真的高吗?),结合keepalived来实现网关的高可用,参考架构图
原文地址https://www.cnblogs.com/ruanjianlaowang/p/11211052.html

相关文章
|
3月前
|
存储 Dubbo API
SpringCloud工程部署启动
本节笔者带领大家完成了SpringCloud工程从0->1的搭建,当然你不想搭建也可以直接采用方案一,二者等效,至此读者们完成了一个微服务工程的搭建、部署、访问。同时在本节最后一章,笔者基于RestTemplate发起的http请求实现远程调用,实现当A系统想要获取B系统数据时的跨系统数据交互。然而RESTful API访问并不是微服务的唯一解决方案,如Dubbo的交互一样可以实现,希望读者们能不限于此。
|
1月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
37 0
|
3月前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
3月前
|
Java 开发工具 Maven
docker-compose部署SpringCloud
docker-compose部署SpringCloud
42 1
|
4月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
498 15
|
3月前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
3月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
3月前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
4月前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
111 3
|
3月前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known