证书服务器如何实现高可用,如何设计统一身份认证高可用

为什么统一身份认证系统需要考虑高可用?

通过建设一套统一认证的系统,将用户的登录入口进行统一。用户只需要知道一个地址,一套用户名口令,进行一次认证,即可实现所有应用访问,可大大的提升用户的使用体验。

32654747ca71c5bda7b93ef8bd91a7d7.png

那么我们回过头来想一想

既然用户的访问入口进行了统一,那么从架构上来看,要是这个统一的入口白旗高高挂起,歇菜了,那岂不是所有的用户都访问不了?

facb5a6d5cb8bdcee7e9ba8baaf2ecdf.png

统一身份认证系统高可用的实现方式

基本部署架构

我们先看一下统一身份认证系统作为一个典型的B/S应用系统,所需要的组件:

1、中间件:把统一身份认证的应用运行起来

2、数据库:进行数据的存储

以上即可完成最基本的部署。

而最简单的部署、应用程序、数据库都部署在一台服务器上,即可运行起来:

4a8fe98f3aa42e08a33d30bf8d9b4fb3.png

应用、数据分离架构

随着业务的扩展,一台服务器已经不能满足性能需求,同时,考虑数据的安全性,所以将应用程序、数据库各自部署在独立的服务器上,显得很有必要。

并且根据服务器的用途配置不同的硬件,可以达到较好的性能效果。

4e098be4cfc12adaa7ce0f58d4723370.png

应用服务集群部署架构

统一身份认证系统作为用户的统一且唯一的认证入口,同时还会承担所有用户的大量请求。

为解决应用服务器的单点故障问题,我们可以通过增加应用服务器,进行集群部署。

同时,多台服务器同时提供服务,可以降低单台应用服务器所承受的服务压力,提高系统的服务性能,提升用户的访问速度。

fd757d3e055eaa6283bfa7ef0b73d16d.png

应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。

当系统的性能达到瓶颈时,也可以采用横向扩展应用服务器的方式进行性能扩容。

常用的负载均衡的选择上,通常有硬件及软件两种方案:

硬件方案:价格比较昂贵,通常有F5、Redware等硬件产品;

软件方案:通常使用LVS(Linux Virtual Server)、HAProxy、Nginx等方式,其中LVS工作于四层网络,HAProxy可工作于四层及七层网络,Nginx工作于七层网络,最新版的Nginx(1.9版本后)加入了四层网络的支持;

另外,最近Nginx被F5重金收购,在IT界也算闹了个大新闻。

7b5e5edda3b66bd7eed068e6e5819e0e.png

负载HA部署架构

从以上应用服务集群部署架构上来看,虽然统一认证应用服务已实现了集群部署,多台服务器提供服务避免了单点故障的问题。但是负载均衡服务同样面临着单点故障的问题,如负载均衡服务出现问题,所有用户依然无法正常访问。

所以,对负载均衡设备进行HA高可用部署,同样显得很有必要:

47dadd98061cf624b20349d53c521c15.png

通过将负载均衡服务进行HA高可用部署,当当前提供服务的负载均衡服务出现故障时,可自动将服务切换到热备的均衡负载设备上,保障系统不间断的提供服务。

在这里,所涉及到的HA高可用部署方案实现主备服务间的自动切换,根据负载设备的硬件、软件方案的不同,同时也会有不同的HA高可用部署方案:

负载设备采用硬件方案(F5、Redware等)时,可使用硬件厂商自身提供的HA方案;

负载设备采用软件方案(LVS、HAproxy、Nginx等)时,通常可供选择的方案有Heartbeat、Keepalived等选择。

数据服务集群部署架构

最后来到部署架构中最关键的一环,我们的数据库依然是单点提供服务,这也是必须需要解决的一环:

296bdfa7a45168277e1da640e9475a3c.png

对数据库服务进行集群部署,即可解决数据服务单点故障的问题。

在数据库的集群部署上,根据不同的数据库产品,同样有着不同的集群技术方案,以下列举以下主流的几种数据库的集群方案:

Oracle,采用共享存储实现RAC集群方案,数据存放在一个共享存储中,多个数据节点同时操作数据;

MySQL,可采用主主复制、主备复制模式,数据放在各自服务器上,通过配置的主主复制、主备复制模式实现数据文件的同步;

DB2,可提供HADR、pureScale等部署技术,其中HADR技术为双活节点的部署模式,通过数据库日志复制的方式实现节点间的数据同步,pureScale技术则为多服务节点+共享存储的部署模式;

故障会话保持部署架构

通过将统一认证服务进行集群部署、均衡负载设备进行HA高可用部署、数据库采用集群架构部署后,已经可以满足绝大部分用户使用的业务场景的不间断服务了。

为什么说是满足了绝大部分用户呢?

在这里需要重温一下http web会话的知识,一个完整的web会话,由浏览器+web服务组成,以java应用部署在tomcat上为例:

从这里可以看出,web会话其实是基于cookie-session这样的机制来确认用户是谁,否则一万个用户同时访问了web应用,服务端无法定位哪个浏览器过来的请求是哪个用户的。

577d493abd34a7bacd34ae1de4c0d748.png

那么,统一认证的服务运行在中间件服务器上,也就是说最终还是依赖于cookie-session这样的会话机制。

再回到我们的架构上,虽然统一认证的服务(IAM)采用了集群的部署架构,同时也可以通过前端的负载均衡的设备配置会话保持的访问策略,使每个用户的请求通过均衡负载的服务后,固定的分发到一台服务器上,从而保障用户最终访问到的统一认证的服务器上存在该用户的session会话,从而获知用户的身份。

但是,如果用户访问到的IAM服务器出现故障,负载均衡设备将用户的会话通过故障转移到另外的服务器上时,另外的服务器的内存中因为没有该用户的session记录,无法获知用户是谁,将会导致用户需要再次登录的情况发生:

1b405a6f0ecbde90ea3afb496bd298a1.png

为避免这种情况发生,需要将统一认证服务的session会话进行同步即可得到解决,在这里简单的列举一下常用的处理方案:

通过中间件自身的会话复制(会话共享)技术,实现会话的复制;

通过第三方的缓存服务器进行会话的共享,如Memcached、Redis等

微服务部署架构

从架构上来看,以上讨论都是基于传统的部署方案进行架构设计。当需要对统一身份进行版本发布时,往往是动一发牵全身,每次发布都需要需要发布的时间窗口,并提前对用户进行通知。

这个问题可通过最新的微服务架构得到缓解:

fee916dcf575d6f2d6b289d1817a42e5.png

首先,通过对统一身份认证的服务模块分拆为不同的微服务,包括:

SSO模块:提供统一认证服务

Self模块:提供用户自助服务

IdM模块:提供身份管理服务

Audit模块:提供安全审计服务

Admin Console模块:提供后台管理服务

同时,后端的身份认证服务,通过API网关对外发布,并在API网关上实现身份认证服务相关API的权限管控,保证系统安全性。

举报/反馈

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程是一门具有很强实践性质的“项目实战”课程,即“企业中台系统实战”,其中主要包含三大块核心内容,如下图所示(右键可以在新标签页中打开图片放大查看): 即主要包含以下三大块内容: ① 企业内部应用系统菜单资源和操作权限的统一管理; ② 分布式应用系统通信时的统一授权,即基于AccessToken的授权与认证; ③ 分布式服务/系统通信时的两大方式(基于dubbo rpc协议和基于http协议的restful api实战)。   值得一提的是,这套中台系统由于讲解了如何统一管理企业内部各大应用系统的“菜单资源列表”、“操作权限”,故而本门课程的“代码实战”是建立在之前debug录制的“企业权限管理平台”这套课程的基础之上的,故而在这里debug建议没有项目开发基础的小伙伴可以先去学习我的那套“企业权限管理平台”的实战课程,之后再来学习我的这套中台系统的实战才不会很吃力(课程链接:)   本课程的课程大纲如下图所示(右键可以在新标签页中打开图片放大查看):   除此之外,这套“中台系统”由于统一管理了企业内部各大应用系统的“菜单资源和操作权限”以及“应用系统之间通信时的统一授权”,故而难免需要涉及到“中台系统”与“中台子系统”、“中台子系统”与“中台子系统”之间的通信(即分布式服务之间的通信),在这里我们是采用“dubbo + zookeeper”的方式加以落地实现的,详情如下图所示(右键可以在新标签页中打开图片放大查看):   而众所周知,作为一款知名以及相当流行的分布式服务调度中间件,dubbo现如今已经晋升为Apache顶级的开源项目,未来也仍将成为“分布式系统”开发实战的一大利器,如下图所示为dubbo底层核心系统架构图(右键可以在新标签页中打开图片放大查看): 而在这门“中台系统实战”的课程中,我们也将始终贯彻、落地dubbo的这一核心系统架构图,即如何将中台系统开发的服务注册/发布到注册中心zookeeper,中台子系统如何订阅/消费/调度中台系统发布在zookeeper的接口服务,中台子系统在走http协议调度通信时dubbo如何进行拦截、基于token认证接口的调用者等等,这些内容我们在课程中将一一得到代码层面的实战落地!   下图为本课程中涉及到的分布式系统/服务之间 采用“http协议restfulapi”方式通信时的Token授权、认证的流程图(右键可以在新标签页中打开图片放大查看): 而不夸张地说,基于AccessToken的授权、认证方式在现如今微服务、分布式时代系统与系统在通信期间最为常用的“授权方式”了,可想而知,掌握其中的流程思想是多么的重要!   以下为本门课程的部分截图(右键可以在新标签页中打开图片放大查看):     核心技术列表: 值得一提的是,由于本门课程是一门真正介绍“中台思想”以及将“中台思想”和“分布式系统开发实战”相结合落地的课程,故而在学完本门课程之后,可以掌握到的核心技术自然是相当多的。主要由SpringBoot2.0、SpringMVC、Mybatis、Dubbo、ZooKeeper、Redis、OkHttp3、Guava-Retrying重试机制、JWT(Json Web Token)、Shiro、分布式集群session共享、Lombok、StreamAPI、Dubbo-Filter以及ServiceBean等等。如下图所示(右键可以在新标签页中打开图片放大查看):

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值