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: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-高可用部署的更多相关文章
- kubernetes1.7.6 ha高可用部署
写在前面: 1. 该文章部署方式为二进制部署. 2. 版本信息 k8s 1.7.6,etcd 3.2.9 3. 高可用部分 etcd做高可用集群.kube-apiserver 为无状态服务使用hap ...
- NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署
NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MongoDB 是一个基于分布式文件存储的数据库.由 C ...
- LVS+Keepalived高可用部署
一.LVS+Keepalived高可用部署 一.keepalived节点部署 1.安装keepalived yum install keepalived ipvsadm -y mkdir -p /op ...
- Rancher Server HA的高可用部署实验-学习笔记
转载于https://blog.csdn.net/csdn_duomaomao/article/details/78771731 Rancher Server HA的高可用部署实验-学习笔记 一.机器 ...
- eql高可用部署方案
运行环境 服务器两台(后面的所有配置案例都是以10.96.0.64和10.96.0.66为例) 操作系统CentOS release 6.2 必须要有共同的局域网网段 两台服务器都要安装keepali ...
- MooseFS及其高可用部署
MooseFS的工作原理分析 MooseFS(下面统一称为MFS)由波兰公司Gemius SA于2008年5月30日正式推出的一款Linux下的开源存储系统,是OpenStack开源云计算项目的子项目 ...
- Redis高可用部署及监控
Redis高可用部署及监控 目录 一.Redis Sentinel简介 二.硬件需求 三.拓扑结构 .单M-S结构 .双M-S结构 .优劣对比 四.配置部 ...
- 006.SQLServer AlwaysOn可用性组高可用部署
一 数据库镜像部署准备 1.1 数据库镜像支持 有关对 SQL Server 2012 中的数据库镜像的支持的信息,请参考:https://docs.microsoft.com/zh-cn/previ ...
- kubernetes 1.15.1 高可用部署 -- 从零开始
这是一本书!!! 一本写我在容器生态圈的所学!!! 重点先知: 1. centos 7.6安装优化 2. k8s 1.15.1 高可用部署 3. 网络插件calico 4. dashboard 插件 ...
- Centos7.2 下DNS+NamedManager高可用部署方案完整记录
Centos7.2 下DNS+NamedManager高可用部署方案完整记录 之前说到了NamedManager单机版的配置,下面说下DNS+NamedManager双机高可用的配置方案: 1)机器环 ...
随机推荐
- mysql的命令行安装,忘记密码,密码重置问题
1.下载,安装msi 2.在MYSQL安装目录下,新建data目录 3.进入MYSQL的安装目录下,新建一个默认配置文件my.ini [mysql] # 设置mysql客户端默认字符集 default ...
- 程序定义了多个入口点。使用 /main (指定包含入口点的类型)进行编译
原文:请使用/main进行编译,以指定包含入口点类型 在使用VS工具初学C#的时候需要不停的写小程序,觉得每次都新建项目太过麻烦,所以试着把程序写在一个项目下面,结果编译的时候出错了,因为我每个小程序 ...
- win10 uwp 获得Slider拖动结束的值
原文:win10 uwp 获得Slider拖动结束的值 本文讲的是如何获得Slider移动结束的值,也就是触发移动后的值.如果我们监听ValueChanged,在我们鼠标放开之前,只要拖动不放,那么就 ...
- Spring之bean后处理器
Bean后处理器是一种特殊的Bean,容器中所有的Bean在初始化时,均会自动执行该类的两个方法.由于该Bean是由其它Bean自动调用执行,不是程序员手工调用,故此Bean无须id属性.需要做的是, ...
- UI-grid 表格内容可编辑(enableCellEdit可指定列编辑)
在网上搜索了很多关于UI-Grid的问题 很遗憾好少啊啊啊 不过有API还是比较欣慰的 官方API:UI Grid 还有一位大佬的翻译的中文API:angularjs ui-grid中文api 行编辑 ...
- Powerdesigner 从Oracle到mssql2008
database->update model for database> ->系统数据源->选择用户,选择表,确定... 1.database->change Curre ...
- Mui a 链接失效的解决办法
方法一: mui('body').on('tap', 'a', function() { if(this.href){ //判断链接是否存在 location.href = this.href; ...
- Mac 简单切换jdk版本
https://www.cnblogs.com/c-xiaohai/p/6985018.html dmg安装包安装 vim ~/.bash_profile_jdk export JAVA_8_HOME ...
- Codeforces Round #568 (Div. 2)A
A. Ropewalkers 题目链接:http://codeforces.com/contest/1185/problem/A 题目: Polycarp decided to relax on hi ...
- docker命令总结
用 docker pull 拉取镜像 root@lishichao-virtual-machine:~# docker pull hello-world Using default tag: late ...