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: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/
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来实现网关的高可用,参考架构图:


I'm 软件老王,如果觉得还可以的话,关注下呗!如有不准确或疑问的地方,可通过讨论区、QQ沟通,多谢!

springcloud-高可用部署的更多相关文章

  1. kubernetes1.7.6 ha高可用部署

    写在前面:  1. 该文章部署方式为二进制部署. 2. 版本信息 k8s 1.7.6,etcd 3.2.9 3. 高可用部分 etcd做高可用集群.kube-apiserver 为无状态服务使用hap ...

  2. NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署

    NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MongoDB 是一个基于分布式文件存储的数据库.由 C ...

  3. LVS+Keepalived高可用部署

    一.LVS+Keepalived高可用部署 一.keepalived节点部署 1.安装keepalived yum install keepalived ipvsadm -y mkdir -p /op ...

  4. Rancher Server HA的高可用部署实验-学习笔记

    转载于https://blog.csdn.net/csdn_duomaomao/article/details/78771731 Rancher Server HA的高可用部署实验-学习笔记 一.机器 ...

  5. eql高可用部署方案

    运行环境 服务器两台(后面的所有配置案例都是以10.96.0.64和10.96.0.66为例) 操作系统CentOS release 6.2 必须要有共同的局域网网段 两台服务器都要安装keepali ...

  6. MooseFS及其高可用部署

    MooseFS的工作原理分析 MooseFS(下面统一称为MFS)由波兰公司Gemius SA于2008年5月30日正式推出的一款Linux下的开源存储系统,是OpenStack开源云计算项目的子项目 ...

  7. Redis高可用部署及监控

    Redis高可用部署及监控 目录                        一.Redis Sentinel简介 二.硬件需求 三.拓扑结构 .单M-S结构 .双M-S结构 .优劣对比 四.配置部 ...

  8. 006.SQLServer AlwaysOn可用性组高可用部署

    一 数据库镜像部署准备 1.1 数据库镜像支持 有关对 SQL Server 2012 中的数据库镜像的支持的信息,请参考:https://docs.microsoft.com/zh-cn/previ ...

  9. kubernetes 1.15.1 高可用部署 -- 从零开始

    这是一本书!!! 一本写我在容器生态圈的所学!!! 重点先知: 1. centos 7.6安装优化 2. k8s 1.15.1 高可用部署 3. 网络插件calico 4. dashboard 插件 ...

  10. Centos7.2 下DNS+NamedManager高可用部署方案完整记录

    Centos7.2 下DNS+NamedManager高可用部署方案完整记录 之前说到了NamedManager单机版的配置,下面说下DNS+NamedManager双机高可用的配置方案: 1)机器环 ...

随机推荐

  1. linux自动挂载远程网盘到本地

    sudo vim /etc/fstab  添加如下内容 //192.168.1.110/MyFiles /path/to/mount cifs username=adminz,password=pas ...

  2. 写给非专业人士看的 *** 简介(同时也解释了GFW )

    写给非专业人士看的 *** 简介 这个文章来源于一个朋友在***的过程中,搞不清楚 *** 的配置问题,在这里我想按照我对 *** 的理解简单梳理一下,以便一些非专业人士也能了解 long long ...

  3. SignalR的简单实现(一)

    原文:SignalR的简单实现(一) ASP.NET SignalR是ASP.NET开发人员的一个新库,它使您的应用程序添加实时Web功能变得非常简单.什么是"实时网络"功能?能够 ...

  4. 获取UWP配置文件中的版本信息

    原文:获取UWP配置文件中的版本信息 在一般的软件中,我们都会显示当前软件的版本信息.以前作者都是在发版的时候修改一下UWP的配置文件中的版本信息和软件中的版本信息.但是每次这样很麻烦,有时间忘记修改 ...

  5. Qt5---ftp上传功能(可直接克隆某个小模块,查看QT下FTP的socket原理)

    http://blog.csdn.net/freeape/article/details/52802163

  6. 教你如何在 Visual Studio 2013 上使用 Github

    介绍 我承认越是能将事情变简单的工具我越会更多地使用它.尽管我已经知道了足够的命令来使用Github,但我宁愿它被集成到IDE中.在本教程中,我会告诉你使用Visual Studio 2013如何实现 ...

  7. ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用

    在前面几篇随笔介绍了我对ABP框架的改造,包括对ABP总体的介绍,以及对各个业务分层的简化,Web API 客户端封装层的设计,使得我们基于ABP框架的整体方案越来越清晰化, 也越来越接近实际的项目开 ...

  8. hgoi#20190519

    更好的阅读体验 来我的博客观看 T1-求余问题 Abu Tahun很喜欢回文. 一个数组若是回文的,那么它从前往后读和从后往前读都是一样的,比如数组{1},{1,1,1},{1,2,1},{1,3,2 ...

  9. spring boot + druid + mybatis + atomikos 多数据源配置 并支持分布式事务

    文章目录 一.综述 1.1 项目说明 1.2 项目结构 二.配置多数据源并支持分布式事务 2.1 导入基本依赖 2.2 在yml中配置多数据源信息 2.3 进行多数据源的配置 三.整合结果测试 3.1 ...

  10. (Demo分享)利用JavaScript(JS)实现一个九宫格拖拽功能

    利用JavaScript(JS)实现一个九宫格拖拽功能   Demo实现了对任意方格进行拖拽,可以交换位置,其中Demo-1利用了勾股定理判断距离! Demo-1整体思路: 1.首先div实现自由移动 ...