小型企业,个人觉得没必要给ADFS专门搞一个数据库,但当你的客户用户数是上千的,后期还有其他系统要跟ADFS对接,那么还是不要用Windows内置数据库,上SQL吧。

SQL Server的高可用,大体分为群集、镜像、alwayson

镜像是比较简单的,但是是一个过渡产品很鸡肋

群集是一个比较成熟的但是要求会比较高,需要共享存储

alwayson是基于群集,但又没有群集要求那么高,稳定性也还不错,但是配的不好SQL日志分分钟让SQL服务停下来休息。

最终我还是选择了alwayson来实现SQL的高可用。

由于POC中我并未进行此部分的配置,因为alwayson是一个比较成熟的部署,所有在客户生产环境中都是直接部署的。

说下大体部署过程吧:

安装windows故障转移群集

将两台sql server作为群集节点添加到群集中

安装两台sql server

在sql server中启用alwayson功能。

大家都知道alwayson是针对数据库来做的,虽然我们的前置条件都OK了,但是没有数据库。这时候我们就需要先在ADFS中去创建第一个ADFS场,然后让系统自动创建ADFS的数据库,然后再对这个数据库来做alwayson。

image.png

接下来对这个数据库进行一次完整备份,然后再针对ADFS的数据库进行alwayson的配置。

配置好alwayson后,我们需要在ADFS场中重新指定数据库为alwayson的FQDN

打开第一台 ADFS 服务器上的 powershell 分别执行下面三条命令来更改数据库 

$temp=Get-WmiObject -namespace root/ADFS -class SecurityTokenService   

$temp.ConfigurationdatabaseConnectionstring=”data source=#alwayson的侦听器FQDN#; initial 

catalog=adfsconfiguration;integrated security=true”   

$temp.put() 

image.png

使用Get-WmiObject -namespace root/ADFS -class SecurityTokenService 命令来验证是否已经将 ADFS 服务场的 SQL 更改为 alwayson 的侦听器 FQDN

image.png

接下来执行以下命令更新策略数据 

Set-AdfsProperties –artifactdbconnection ”Data source=#alwayson侦听器FQDN#;Initial Catalog=AdfsArtifactStore;Integrated Security=True”

image.png



小总结:

alwayson部署很成熟,百度可以搜出来很多很标准的做法,只是在配合ADFS使用的时候,一定要先创建第一个ADFS场让ADFS自动去创建数据库,然后再对这个数据库来做alwayson,配置好alwayson后再去更新ADFS的数据库,然后再部署第二台ADFS,第二台ADFS填写数据库FQDN的时候就需要填alwayson的侦听器FQDN哦。所以ADFS的高可用部署要前后端兼顾实施是比较麻烦一点的。

关于alwayson的日志截断请一定要做好完整备份。