标签:Azure SQL

您是否在Sitecore环境中获得了Azure SQL的好处?

您是否在Sitecore环境中获得了Azure SQL的好处?

Sitecore现在支持微软的Azure SQL,从Sitecore 8.2和以上。在这篇文章中,ixwebhosting中文指南将为大家深入介绍Azure SQL的两种风格,以及它们如何帮助您降低成本。

这是在我之前的文章中提到的,这篇文章讨论了支付SQL Server企业许可的难题,以获得Sitecore的高可用性SQL配置的官方支持。

您是否在Sitecore环境中获得了Azure SQL的好处?
您是否在Sitecore环境中获得了Azure SQL的好处?

Azure SQL有两种风格:单实例和弹性池,我将在下面详细介绍。

单实例

微软为Azure SQL提供了四种定价层:基本的、标准的、高级的和高级的RS,每一层都包含一个特性集,通常以最大数据库大小的形式提供,以及每个层的性能范围。在性能方面,微软提出了一个称为数据库事务单元的概念,它是IOPS、RAM和CPU使用的集合。

]对于单个实例,让我们看一下标准层,它的大小是S0-S3。如您所见,从10个DTUs到100,最大数据库大小为250GB。在表底部的高端P1大小只有25个DTUs,价格是其价格的3倍以上,但是它将最大数据库的大小移动到500GB。还有一个P系列我没有展示,但是你们可以看到P系列很快就变得昂贵了。

SQL Sitecore 1

您可以在Azure SQL定价页面上阅读更多的内容。

有趣的是,在99.99%的标准和高级版中,SLA是相同的。这是因为,在后台,SQL总是运行一个主服务器和四个辅助服务器(副本)。对Sitecore来说,我们至少需要四个单一的实例,至少他们应该是S1s。Sitecore在谈到他们的新管理的云产品拓扑时,也说了很多。

美国东部地区的4个S1s每月只有119.99美元!

SQL Sitecore 2

与上个月的SQL高可用性配置相比,在使用SQL 服务器标准许可的情况下,使用SQL服务器标准许可的镜像配置,以及使用SQL server企业许可证配置的SQL,使用SQL 服务器$3099.50$3099.50,这似乎是项件很便宜的工作。实际上,我们现在在Azure SQL中有4个辅助(副本),而不仅仅是主服务器和辅助服务器。

那么,交易是什么呢?简单地说,它的性能是:4个S1总共得到了80个DTU。我还没有看到有人在SQL Server vs Azure SQL中找到max DTU,但是基于我自己的测试,我将会说它超过了1000,即使是使用Azure D v2 VM和P10 SSD的最低规格的环境。

这一性能如何限制Sitecore的影响?视情况而定。如果您的站点有一个较小的、低流量的站点,且内容有限,那么当CDs和CMS有一个IIS重置时,预缓存机制将尽可能地缓存web、主和核心DBs。一旦完成,Sitecore是一个操作,这个启动周期可能会在使用S1实例的Azure SQL中缓慢。但要慢多少取决于您的内容数量和您的缓存设置。

随着Sitecore现在的操作,当新的非缓存页面被请求时,Sitecore连接到Azure SQL,并检索它们。如果我们遇到了足够多的未缓存的内容,我们将最大限度地减少20个DTU限制,页面响应时间将会增加,用户可能会遇到超时。当然,如果最常见的内容被缓存,则不会发生这种情况。因此,这为Sitecore、CDN和热身脚本的缓存优化提供了一个很好的理由。

或者,您也可以将每个DB基础上的大小增加到一个S2,一直到S3。

我有一些实际的数据可以在这里分享,这样您就可以看到S1和S3之间的实际差异。我在2016年为Sitecore研讨会创建了一个测试设置,我在Sitecore IaaS、Sitecore上使用了PaaS,还测试了一个混合选项,在IaaS上托管Sitecore,但使用了Azure SQL作为数据库层。

使项目Guttnberg和filldb.aspx页Sitecore Filldb(https://community.sitecore.net/technical_blogs/b/sitecore_7_development_team/posts/filldb-updates)。aspx最终创建了一个1.2 GB的主DB和700MB的web DB。我注意到,如果使用默认的缓存设置,如果使用Sitecore 8.2升级1,CD将完成预缓存,并在3分钟后重启IIS。切换到WebDB的S1,Sitecore将会超时,而且永远不会转变成操作,因为S1实例已经被它的DTUs所使用。切换到S2,同样的问题也出现了,但是在将SQL超时更改为一个小时后,我就开始工作了。事实上,在45分钟后,Sitecore将会运作。切换到S3,IIS重启时间减少到15分钟。

现在,您可以禁用预缓存,并将此时间进一步缩短。但老实说,500k文本内容丰富的内容是很多文本。我也很关注资产/丰富的媒体。

我还使用jMeter进行了一些基准测试,将一个Azure SQL S3和一个运行SQL Std的DS3 v2进行比较,负载明智的我应用了250个并发连接。

配置吞吐量(每秒页面)平均页面延迟(ms)页面延迟99个百分点(ms)页面延迟最大(ms)错误

SQL Azure。S3 Web-xDB正常-共享会话状态InProc 67.2 415418610021 0

SQL Server DS3 v2与P20 SSD-xDB正常-共享会话状态InProc 70.2 22716087676 0

正如您可以看到的,Azure SQL配置每秒处理的页面数量类似,但页面延迟要高得多。在稍微低一点的负载下,我们可以得到2000毫秒以下的99个百分点,我认为对于大多数。com站点来说,这是一个最小的页面响应时间。为什么延迟如此之高?我当时研究了它,我可以看到,DTU的Web DB是周期性的,这导致了更高的延迟。

我开始思考这个问题,在很多情况下,仅仅是碰到S3可能是将问题最小化的最简单的方法。然而,我也注意到,在这段时间内,核心和master的DTUs非常低。只有分析具有真正的DTU利用率,这是合理的,因为xDB同时也在运行。

如果我们可以使用这些未使用的DTUs……也许我们可以,使用第二种类型的Azure SQL风格。

ElasticPools

与每个数据库都有自己的固定DTU不同,弹性池将所有数据库放在一个共享的DTUs池中。还有一些机制限制了数据库可以使用的池的数量,因此您可以保留一些DTUs,以表示核心和主操作成功。

这是标准弹性池的定价结构

SQL Sitecore 3

最接近的匹配与80年4 x单一实例S1的导航系统是100年eDTU池成本几乎是每月224.75美元的两倍,有小100 GB max对于每一个DB,然而现在每个数据库都可以访问到的权衡满100 EDTUs。如果我们需要为应用程序定制数据库,我们可以在池中添加它们,而不需要额外花费。

SQL Sitecore 4

因此,这是一种决定,在灵活性和性能上多花一些钱,而在单个实例上,则是更低的成本和性能限制。您知道,保险费更贵,但是有弹性的RS有什么用呢?

SQL Sitecore 5

微软提到了一个较低的SLA,但并没有真正定义它。这个技术在预览版中,所以我预计当它是GA的时候,一个SLA将被公布。但是,如果它低于99.9%,我就会感到惊讶,因为在大多数情况下,我认为这是可以接受的。

那么,125个eDTU池究竟花了多少钱呢?

SQL Sitecore 6

每个月55美元以上,但我们现在有了更多的性能,主要的交易是我们现在有一个一级和一个二级,而不是其他的四个二级副本。在很大程度上,我想说我们有了一个取胜之本。

我用Sitecore的250个eDTU弹性池进行了测试,发现了2倍的DS3 v2 VM,在很大的负载下,Sitecore的表现类似于使用S3的Web和Master,但成本更低,潜伏期也更低。我甚至在CD上的一个jMeter加载过程中开始了一个完整的智能发布,发现我在所有的4个DB的245个eDTU中都被刷爆了。网络的运行时间大约是125 eDTU的峰值,大约40 eDTU的数据分析,大约80个eDTU的最终核心大部分都在0左右,但峰值达到了10个eDTU。

注意:我的笔记本电脑最近去坏了,我丢失了我的桌面文件夹的基准(我知道,我应该把它们复制到云存储中),所以我要从内存中解释这最后一部分。

正如您可能猜到的,我非常喜欢高级RS,所以让我们来讨论一下如何估计您需要的DTU的数量。值得庆幸的是,微软的工程师JUSTIN HENRIKSEN已经为你找到了很多困难的工作。只是遵循流程制定了http://dtucalculator.azurewebsites.net,它将解释您的平均和峰值差的从自己的Sitecore环境。

我将用一些小问题结束。如果在标准层中使用Azure SQL单实例,不要使用Azure SQL进行会话状态,那么只能使用600个并发连接。溢价将这个上限提高到30k,但我个人认为,坚持Redis。我认为这就是我上面提到的托管云拓扑使用Redis而不是用于会话状态的Azure SQL的原因。

如果您想要迁移到Azure SQL,请记住它仅为8.2,因此如果您尝试使用Azure SQL的8.1或以下版本,那么您将会遇到一些问题,而Sitecore不支持8.1或以下。

安全

您可以限制Azure的SQL,只允许特定的IP访问它,这对Autoscale在VM上的服务很有帮助,但在Azure的PaaS上,如果您有Sitecore的支持,您就不知道CD IP地址了,所以这是一个挑战。您可以将其锁定到Azure的公共IP地址范围,但这是一个非常广泛的范围,其他Azure客户仍然可以尝试连接到Azure SQL。这些数据库是用户名和密码保护的,因此使用系统生成的用户名和密码是非常推荐的,以避免暴力攻击。

最后,如果您的Sitecore解决方案对SQL有很大的影响,那么您可能需要重构一些代码。我注意到的一种方法是使用搜索引擎对数据进行索引,然后查询结果。如果您将索引安排在高峰时段运行,那么您将在高峰时间降低影响最终用户的性能,并且有可能能够降低Azure SQL的定价级别。

我觉得许多客户可以迁移到Azure SQL,但它确实有局限性。在1000多eDTU高级RS弹性池中,我觉得您使用SQL Server会更好,那些更适合您的使用,您可以节省很多钱,而不是SQL Server。