当前位置: 澳门新濠3559 > 服务器运维 > 正文

实际每个用户的数据都会有三个备份分不到不同

时间:2019-11-18 21:29来源:服务器运维
SQL Azure 在服务器端的架构如图6-4 所示。首先从Internet上发送过来的数据库请求会通过一个基于TDS(Tabular DataStream)协议的负载均衡服务器处理。这个负载均衡使用黏滞性算法保证同一个链

SQL Azure 在服务器端的架构如图6-4 所示。首先从Internet 上发送过来的数据库请求会通过一个基于TDS(Tabular Data Stream)协议的负载均衡服务器处理。这个负载均衡使用黏滞性算法保证同一个链接的所有请求会被路由到同一台物理服务器。同时由于其基于TDS 协议,保证了只要客户端也使用了TDS 协议,那么这些请求都是可被接受的,比如ADO.NET、ODBC等,从而保证了SQL Azure 对于开发人员的使用一致性。

应用场景

Web应用

大多数网站都需要数据库进行数据存储,传统网站会建立本地数据库实现数据存储。SQL Azure提供网站的云存储,开发人员可以只关注业务逻辑的实现,不必在数据存储高可用性和容错性投入过多精力,可以满足成本降低,快速上线等要求。

部门应用

大型组织或公司中,数据库系统一般由由经验的数据库管理员来管理,数据库服务需要不间断的电源、磁盘冗余阵列和集群服务等容错配置,但是部门级别往往很难达到这种要求,所以SQL Azure为这类需求提供很好的解决方案,而且不带来额外的IT成本。

独立软件开发商

ISV可以为其客户选择SQL Azure用来存储数据,实现部署和运维简单和方便,并且提供高安全性和有效的数据隔离性。

SQL Azure开发

熟悉的开发模型

很多应用开发基于SQL Server数据库进行开发,SQL Azure提供了与SQL Server类似的TDS协议支持,开发人员可以使用相同的客户端类库构建应用程序访问SQL Azure数据库。

熟悉的数据库模型

SQL Azure使用关系型数据模型,数据存储在SQL Azure和存储在SQL Server上效果一样

数据同步

提供很好的SQL Azure和本地应用以及移动终端的数据同步。

澳门新濠3559 1

释放价值,分享知识和经验,解读IT前沿和技术。帮助他人,提升自己。更多交流请关注微信公众号itboxes(IT智囊)。

注:图片来源于网络,如有异议,请联系我们,我们将即时处理。

3. [网站、云服务与虚拟机]弄清负载均衡的机制

Azure为网站、云服务和虚拟机都提供了免费的负载均衡能力。关于负载均衡我们需要注意的一点就是它对Session的处理。一般来说,传统的负载均衡器有一种叫session粘滞(sticky)的机制,也就是会根据用户的session信息将用户请求转发到固定的一台机器上,这样,如果应用程序在服务器端存储session信息,那么用户与服务器交互就会顺畅,否则,就会发生用户session丢失和应用逻辑异常

在Azure上,云服务和虚拟机的负载均衡器都是纯网络层面的,其均衡机制是轮流将请求发给后端的服务器,不支持session粘滞. 这就要求后台服务器是无状态的,也就是无论将客户请求发给任何一个服务器,都可以得到正确的处理。如果现有的应用是有状态的,那么有两种解决办法:

  1. 将session信息在所有服务器间共享。具体实现方式包括:分布式缓存(比如Memcache,Azure Caching), session持久化(.NET和Java都支持用数据库存储session信息,而Azure还支持用Cache和Azure存储持久化.NET session信息:
  2. 在虚拟机上自行配置负载均衡集群,比如squid(linux), IIS ARR(windows). 微软的MSOpenTech团队提供了一个自动配置IIS ARR的方法:

网站服务的负载均衡稍有不同,它的负载均衡是由IIS ARR实现的,因此它原生支持session粘滞。其实现原理是,在每个响应里面添加ARRAffinity这个cookie,这样,下次同一个用户的请求就会被识别,然后发送到上次的服务器上。也就是说,不论应用是否主动写入cookie或是存取session,IIS都会为每个用户保持服务器的绑定关系。

Azure 的订阅模型决定了各个订阅之间的数据是隔离的。实际上,SQL Azure 平台将用户的数据保存在多个SQL Azure 物理服务器上,并且使用...

架构

澳门新濠3559 2

SQL Azure的数据库是一个逻辑数据库,实际每个用户的数据都会有三个备份分不到不同的SQL Server上,并且运行在三个不同的物理机上。提供自动负载均衡和连接路由功能。

逻辑数据库

通过逻辑服务器访问存储在多台主机上的实际SQL Server,SQL Azure提供网管服务代理,转发访问逻辑服务请求,提供安全登录验证和防火墙功能

系统架构

澳门新濠3559 3

SQL Azure系统包括客户端、服务层、平台层和基础设施层。客户端没有专门的SQL Azure组件,现有的SQL Server客户端同样可以访问SQL Azure。服务层将客户端的连接到正确的数据库实例上。基础设施层对数据中心物理硬件和操作系统进行管理。

服务层

服务平台负责服务器监控和管理SQL Server实例正常运行,主服务器负责跟踪记录SQL Azure数据的副本分布情况。

平台层

主要由数据节点的物理服务器组成,节点包含SQL Server、SQL Azure Fabric和其他管理服务。

 

主数据库发生故障的时候,SQL Azure 会从另外两个副本中选择一个出来作为主数据库,同时再创建一个新的副本以保证任何时候都有三个副本同时存在,如图6-3 所示。通过基于三个副本的复制功能,SQL Azure 保证了99.9%的高可用性。

简介

SQL Azure提供了我们熟知的关系型数据库开发模型、通用的数据访问协议和易部署等特点,使得基于SQL Azure的应用程序创建、开发和部署得到了很大的简化。SQL Azure凭借其易管理、可扩展、高可用,有效的应对访问突增、部署不便和高可用性的挑战。无论从开发者、IT管理和业务的角度,SQL Azure都能够极大的满足用户的需求,提供按需可扩展的存储,通过低成本和一部书的云存储来加强本地存储系统,提供一个可靠、可用和划算的解决方案。

易管理:不需要在数据库管理和运维角度投入大量的人力和财力,极大的区别于传统的IT管理方式,提供专业、统一的管理,确保数据安全和高可用性。使得用户可以专注于自身的核心业务领域,不必花时间去维护数据库系统。

高可用:SQL Azure是基于Windows Server 和SQL Server技术,并且具有足够的灵活性以应付不同的使用情况和负载变化,并且提供多个冗余副本,在出现问题情况下,能够自动故障转移确保应用程序最大的可用性。

高可扩展:云计算的优点是可以快速扩展解决方案,SQL Azure可以创建一个满足不同规模客户需求的解决方案,可以根据需求快速扩展和缩减数据库服务。提供全球范围内的数据扩展,可以有效支持不同区域的用户访问。

近些日子帮了不少用户移植应用到了Windows Azure上,在这个过程中,我发现了用户对于Azure不太好的使用习惯,其原因一是对Azure技术不太了解,二是对Azure所推崇的理念不熟悉。对于公有云或者Azure的新用户来说,学习肯定是有一个过程的,这不是大问题。但是,有些问题必须在真正部署之前搞明白,否则不经意间导致数据丢失、系统停机就得不偿失了

澳门新濠3559 4 
图6-4 SQL Azure 服务端架构

5. [运维]澳门新濠3559,做好数据备份

 

数据备份是老生常谈了,是运维工作的一个核心。尽管Windows Azure提供了完善的数据存储存储方案,比如一份数据在本地存三份,支持异地数据镜像等,但这只解决了数据物理损坏的问题,而没解决逻辑损坏的问题。比如,维护人员不小心删除了Blob上的文件、程序Bug删除或者修改了数据内容等等。因此,对云中的数据进行备份还是很有必要的。具体来说,每种数据的备份方式不尽相同。

  • SQL数据库. Azure门户上为SQL 数据库提供了备份功能,用户点击备份按钮即可将数据库内容以Data Tier Application的格式导出到Blob存储上。用户可以下载该备份文件导入到本地的SQL Server上,也可以用该文件恢复一个SQL数据库。对于SQL数据库,建议采用自动化脚本定期进行备份,比如每天一次,保留7天。SQL数据库不支持定期任务,我们可以采用Windows任务计划或者Linux的cron来运行定期脚本。具体的命令可以参考
  • Blob存储。Blob存储本身不提供备份功能,只能进行快照。快照可以回滚文件到之前的版本,但是无法恢复被删除的文件(Azure不支持Container快照)。所以,对于重要的文件,建议编写脚本进行定期备份。备份的目的地址,可以是另一个存储账户,或者是本地。AzCopy这个工具可以用来在不同的存储账户之间进行文件拷贝,也可以用来在本地和Blob之间传输文件
  • IaaS虚拟机。目前可用的方法,是进行虚拟机磁盘对应Blob文件的快照。具体可以参考
  • IaaS虚拟机文件。可采用各种传统文件备份工具。对于Windows Server,可以使用Azure的云备份服务
  • IaaS虚拟机中的数据库。可采用各种数据库的备份工具或者将数据库导出再进行文件备份

 

以上各种数据的备份都是定期进行的,建议编写程序或者脚本,专门找一台虚拟机运行

SQL Azure 的订阅模型决定了各个订阅之间的数据是隔离的。实际上,SQL Azure 平台将用户的数据保存在多个SQL Azure 物理服务器上,并且使用SQL Server 的复制功能(Replicas)实现了高可用性的要求。

4. [架构与运维]任何服务都可能会停机

尽管Azure的架构设计考虑了充分的冗余,但是仍然有可能会停机,这是任何服务都避免不了的。就算是5个9的可用性也会有一个停机的窗口。停机的原因有可能是非人为因素,比如断网、断电、硬件故障等等,也可能是人为计划性的停机维护。因此,作为用户,在部署应用到云平台时,需提前了解可能出现的风险和应对方案。Azure作为一个平台,或者云操作系统,会尽量做到不停机,但这只是平台层面的。从应用角度,用户也要考虑Azure提供的可用性是否能满足业务需求,如果不满足,如何进行设计从而提升应用整体的可用性。在大多数时候,更高的可用性都意为着更高的成本,因此,追求0宕机是不现实的,而Azure也无法实现这一点。开发者必须提前做好准备。

关于Azure的可用性,开发者和运维人员需要提前了解的是:

  • Azure提供的各项服务是独立的,各种服务一般不会相互影响。比如,虚拟机服务整体故障时,数据库服务不受影响。用户可以随时登陆可用性监控台查看各个地区Azure各个服务的可用性
  • Azure为各个服务提供了独立的SLA承诺,绝大部分承诺的可用性指标是99.95%,也就是每年最多出现4.38小时的服务中断,如果超出,Azure会进行赔偿。
  • 虚拟机和云服务的可用性承诺比较特殊。虚拟机服务的承诺是:由2个VM构成的集群的整体可用性是99.95%,而且这两个VM还要在同一个可用性集里面(

可见,对于单实例虚拟机,Azure不提供服务承诺。用户如果要部署数据库在虚拟机上,比如Mysql,需要自行配置HA,并把两个VM设定为同一个可用性组,这样Azure会将这两个VM放置到不同的故障域中(例如:不同机架)

另外,用户部署服务时,可以按照使用到的Azure服务画一个逻辑拓扑,如下图。然后逐一分析不同服务的停机对业务可能的影响,接着分析如何应对某个服务的停机或者故障。

澳门新濠3559 5

如果要了解云计算架构下高可用性设计的最佳实践,可以参考下文:

防故障:弹性云体系结构的指南

 

如图6-2 所示,在SQL Azure 平台,当用户创建了一个数据库之后,SQL Azure 通过复制功能创建三个数据库副本。这三个副本中有一个作为主数据库,所有的数据请求都会首先应用在这个主数据库上,并且同步到另外两个副本数据库中。

原文:

而对于为数众多的数据库服务器,SQL Azure 提供了底层控制模块负责创建、迁移、配置、故障恢复和负载均衡等功能。

2. [虚拟机和云服务] 一定要分清Blob盘和临时盘

 

Azure上的虚拟机上有两种磁盘,一种是存储在Blob存储上的,一种是存储在虚拟机所在物理机磁盘上的。前一种由于使用了Blob存储,其数据会按照Blob的存储策略在本地存3份,并在异地保持一份镜像,其数据的可用性和可靠性都很高,虚拟机通过网络访问这些Blob存储,不依赖于特定一台物理机。后一种依赖于物理机,如果物理机故障或进行维护,这个存储可能会被清空。显然,如果我们使用虚拟机的时候不分清楚磁盘类型,就会导致数据丢失

Azure不同类型的虚拟机的磁盘类型如下:

  • IaaS的Windows虚拟机:C盘(系统盘)是Blob盘,D盘是临时盘
  • IaaS的Linux磁盘:sda1(根目录)是Blob盘,sdb1(/mnt/resource)是临时盘

澳门新濠3559 6

  • PaaS的云服务的虚拟机磁盘:C/D/E全都是临时盘

千万不要把数据库表文件等重要数据放在临时盘上!

这些临时盘往往空间比较大,完全不用的话有些可惜。另外,临时盘在本地,存取数据要比Blob快。因此,临时盘适合存放一些临时数据,比如裸日志、中间结果、上传下载的缓存等等

那么,如果程序要存储文件到本地,本地系统盘空间又不够,怎么办?

  • 对于IaaS虚拟机,可以从Azure门户的虚拟机页点击“附加空磁盘”,这样会分配一个空的Blob盘,挂接在虚拟机上。创建的磁盘还可以从原虚拟机分离,然后挂接给另一个虚拟机。不过一个磁盘不能同时挂给两个虚拟机

澳门新濠3559 7

  • 对于云服务虚拟机,不建议将文件存储在本地文件系统上,而是应该将文件直接存储在Blob上,需要修改文件访问API。如果不希望修改代码,则有两种办法:
    • 如果应用需要读一些本地文件,或者需要在虚拟机上安装一些软件,则要在云服务启动脚本里面加入文件下载和软件安装的命令,具体可参考
    • 如果应用不仅要读文件,还要写文件,那么就不能使用上面的方法,而必须用Azure Drive。它是将Blob磁盘挂载在虚拟机上的一种方法,可以参考

 

数据库访问请求通过负载均衡服务器转发到Gateway 服务器上。Gateway 服务器在这里充当一个代理和转发的角色。首先它完成对请求的认证和授权操作,保证只有合法的请求才能进入下一级操作。同时它还对请求进行防火墙验证,保证请求者的IP 必须是SQL Azure 防火墙中设置允许访问的。最后,Gateway 还有一个内部的访问计数器用来防止DoS(Denial of Service)攻击。如图6-4 所示,Gateway 部分由多台服务器组成,在进行操作之后,它会基于连接字符串将TDS请求转发给对应的SQL Azure 物理服务器,也就是用户数据库真正保存的服务器中。

1. [账户]搞清楚每个应用的订阅以及订阅的配额、计费方式、有效期

 

在Azure里面,用户需要区分账号和订阅。账号(live ID)是用来登陆门户的,对应一个自然人。而订阅对应配额、账单和付款信息。这就好比一个人有一个身份证(账号),但可以有多个手机号(每个手机号独立核算)。同一个Azure账号可以拥有多个订阅,每次部署Azure虚拟机或其他服务时,要选择一个订阅。每个订阅有一个主管理员,管理员可以添加其他用户成为该订阅的用户。这些添加的用户就可以共享该订阅资源,适合项目团队开发的场景。订阅的所有用户拥有相同的权限,唯一的区别是只有主管理员可以查阅账务信息。

 

在门户上,用户也可以过滤掉无关的订阅

澳门新濠3559 8

 澳门新濠3559 9

由于每个订阅各不相同,因此部署之前弄清这些订阅信息是很必要的:

  • 该订阅的类型,是试用、MSDN、随用随付还是多月计划?
  • 该订阅的有效期
  • 该订阅是否有配额?如果有,就需要定期检查配额剩余情况,避免造成订阅停用
  • 该订阅是否存在其他用户,他们是否会误操作我部署的应用?

其中,搞清楚有效期是最重要的。如果订阅过期了,可能会造成所有数据被清空

 

澳门新濠3559 10 
图6-2 SQL Azure 创建的三个数据库副本

澳门新濠3559 11 
图6-3 SQL Azure 在主数据库故障时创建新的副本

编辑:服务器运维 本文来源:实际每个用户的数据都会有三个备份分不到不同

关键词: