IT之道-艾锑知道

您当前位置: 主页 > IT服务 > 服务器服务 >

艾锑知识 | SQLserver Alwayson技术要点


2020-02-17 11:58 作者:艾锑无限 浏览量:
迎战疫情,艾无限用爱与您同行

中国中小企业提供免费IT外包服务


 
        这次的肺炎疫情对中国的中小企业将会是沉重的打击,据钉钉和微信两个办公平台数据统计现有2亿左右的人在家远程办公,那么对于中小企业的员工来说不懂IT技术将会让他们面临的最大挑战和困难。
 
        电脑不亮了怎么办?系统蓝屏如何处理?办公室的电脑在家如何连接?网络应该如何设置?VPN如何搭建?数据如何对接?服务器如何登录?数据安全如何保证?数据如何存储?视频会议如何搭建?业务系统如何开启等等一系列的问题,都会困扰着并非技术出身的您

 
 
        好消息是当您看到这篇文章的时候,就不用再为上述的问题而苦恼,您只需拨打艾锑无限的全国免费热线电话:400 650 7820,就会有我们的远程工程师为您解决遇到的问题,他们可以远程帮您处理遇到的一些IT技术难题。
 
       如遇到免费热线占线,您还可以拨打我们的24小时值班经理电话:15601064618或技术经理的电话:13041036957,我们会在第一时间接听您的来电,为您提供适合的解决方案,让您无论在家还是在企业都能无忧办公。
 
那艾锑无限具体能为您的企业提供哪些服务呢?
       艾锑无限始创于2005年,历经15年服务了5000多家中小企业并保障了几十万台设备的正常运转,积累了丰富的企业IT紧急问题和特殊故障的解决经验,制定了相对应的解决方案。我们为您的企业提供的IT服务分为三大版块:
 
        第一版块是保障性IT外包服务:如电脑设备运维,办公设备运维,网络设备运维,服务器运维等综合性企业IT设备运维服务。
 
        第二版块是功能性互联网外包服务:如网站开发外包,小程序开发外包,APP开发外包,电商平台开发外包,业务系统的开发外包和后期的运维外包服务。
 
        第三版块是增值性云服务外包:如企业邮箱上云,企业网站上云,企业存储上云,企业APP小程序上云,企业业务系统上云,阿里云产品等后续的云运维外包服务。
 
        您要了解更多服务也可以登录艾锑无限的官网:www.bjitwx.com查看详细说明,在疫情期间,您企业遇到的任何困境只要找到艾锑无限,能免费为您提供服务的我们绝不收一分钱,我们全体艾锑人承诺此活动直到中国疫情结束,我们将这次活动称为——春雷行动。
 
       以下还有我们为您提供的一些技术资讯,以便可以帮助您更好的了解相关的IT知识,帮您渡过疫情中办公遇到的困难和挑战,艾锑无限愿和中国中小企业一起共进退,因为我们相信万物同体,能量合一,只要我们一起齐心协力,一定会成功。再一次祝福您和您的企业,战胜疫情,您和您的企业一定行。



艾锑知识 | SQLserver Alwayson技术要点
 
很多人其实并没有完全理解Alwayson的原理,包括可用组的概念,集群的架构是怎么样的,故障转移是如何实现的,读写分离是如何实现的,故障转移和可用组群的关系
总结出几个最重要的结论:
1、标准的AlwaysOn方案提供读写分离的是统一的listener(包括虚拟IP、连接地址和端口,由WSFC机制在配置时创建);但实际通信通过重定向完成,即客户端实际通信不是和listener而是与真正的某个副本通信。
2、读写分离需要应用感知是否只读请求,需要数据库驱动支持并包含在请求中表明是Readonly还是Readwrite
3、故障切换是实例级别,多个主备实例提供同一个的浮动IP地址,客户端无感知;可用组是数据库级别,客户端有感知(通过listener重定向)。
一、集群架构
实现alwayson需要部署SQLServer集群,而实际上所谓SQLServer集群其实是部署在Windows集群上的一个应用程序,本质上是需要部署一个Windows故障转移集群(WSFC)。SQLServer集群则是部署在Windows集群每个节点上的SQLServer应用,最多有个16个节点。按照官方的架构,实际上有三个层次:
层次一:Windows集群,Windows集群本身也有底层服务器的故障转移功能;
层次二:AlwaysOn高可用组,一个高可用组包含了一个主副本(读写副本)和多个辅助副本(只读副本,2014版最多8个),每个副本可以可以是单个SQLServer节点,也可以是多个(2个?)SQLServer节点组成的故障转移集群。一个高可用组对应了一个侦听器,侦听器通过的浮动IP来实现。
层次三:AlwaysOn故障转移集群,这个集群需要共享存储。
二、读写分离实现
1、Alwayson高可用组对外是提供了一个统一的访问连接,即侦听器,客户端任何时候都是连接这个Windows集群上配置的SQLserver集群专用侦听器而不是某个节点,侦听器需要事先配置好IP地址、连接串(hostname)和端口(默认1433)。前面提到这个地址是浮动地址。
listener的IP、连接串和端口是WSFC集群配置的,即配置了以后就增加了相应AG的浮动IP、DNS了。
2、高可用组同时配置了一个router,这个router存储了高可用组中每个副本(SQLServer实例)的数据库hostname和端口;当listener发现请求是只读请求时,将在router中查找只读副本的hostname,并通过重定向响应给client,client按照返回的hostname和端口访问只读副本。
上面有两个问题需要解决:
**1)listener如何知道是只读请求?**在client请求中增加当然,这个涉及客户端请求增加相应内容,需要客户端有对应版本才能支持。请求具体见下面ApplicationIntent字段,只有ReadOnly和ReadWrite 两个选项。
Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover
**2)如何实现重定向?**在数据库驱动层面实现,比如JDBC/ODBC可以识别重定向消息和需要重新连接的hostname和端口。
3、故障转移集群(FCI)和可用组(AG)的区别
最核心的差异,**FCI是SQLServer实例级别(可以认为是物理级别),AG是数据库级别(逻辑级别)。**因此两者关系就比较清楚了。访问者对实例是无感的,只看到数据库对象(地址、端口、hostname),库的层级在实例上面。对于某个AG中的数据库,它在AG中有多个副本,每个副本都可以是FCI集群,因为副本是逻辑层,它并不了解也不关心底层是单节点还是FCI。副本使用FCI的好处就是增加了这个副本自身的可用性,即单节点down了这个副本并没有不可用,同时FCI的多个实例不能部署在同一个节点(服务器)上。
从AG的概念可以理解:一个AG的所有可用性副本必须运行在Windows群集的不同节点上。运行在同一个节点上的两个不同实例不能用作同一个AG的副本。
4、实现负载均衡
故障转移群集是用于获得高可用性的,而非用于实现负载平衡。SQL Server 没有任何内置的、自动负载平衡功能。必须通过应用程序的物理设计来实现负载平衡。


相关文章

IT外包服务
二维码 关闭