SQL Server 2014数据库集群搭建与配置指南

 

目录

  1. 环境准备
  2. 安装域控服务器
  3. 将服务器加入域控中
  4. 配置故障转移群集
  5. 安装与配置SQL Server 2014
  6. 配置Always On可用性组

1. 环境准备

序号

服务器名称

主机名

IP地址

操作系统

备注

1

域控服务器

WinServ-AD-217

192.168.202.217

Windows Server 2012

 

2

SQL集群节点01

SQL-NODE-218

192.168.202.218

Windows Server 2012

 

3

SQL集群节点02

SQL-NODE-219

192.168.202.219

Windows Server 2012

 

4

SQL集群监听IP

SQL-LSN-249

192.168.202.249


虚拟节点

5

SQL集群虚拟IP

SQL-Cluster-T1

192.168.202.250


虚拟节点

2. 安装域控服务器

  • 登录域控(AD)服务器打开服务器管理器

进入服务器管理器

  • 点击”管理--添加角色和功能“,弹出添加角色和功能向导页面,选择安装域服务(依赖DNS服务):
    添加角色和功能向导
    选择安装AD域服务
    安装AD域服务
  • 相关角色和功能安装完成之后,点击黄色小箭头,将本服务器提升为域控服务器:
    提升为域控服务器
    域控服务器配置向导
  • 在AD配置向导中选择新建林,输入你的域名,通常格式为xxxx.com或者cn。如需要将域控制器添加到已有域中,可以选择"将域控制器添加到现有域"选项,并输入相关的域用户进行验证:
    新建林
    域控制器选项
    选择AD域数据存放路径
    查看选项
    先决条件检查与安装
  • 域控服务器的提升完成之后会提示重启,重启之后。我们首先添加域账户并设置相关的权限,点击"工具--AD域用户和计算机,我在AD域里创建了一个”张嘉阳“的用户:
    AD域用户和计算机
    AD域用户信息
  • 在DNS服务器中配置"反向查找区域",反向查找区域点击右键,在弹出菜单中选择”新建区域“,选择主要区域,连续默认下一步,完成DNS配置;
    反向查找
    新建区域向导
    选择区域类型--主要区域
    复制区域数据
    IP反向查找区域
    设置网络ID
    选择动态更新类型
    完成新建区域向导

3. 将服务器加入域控服务

  • 登录每一台需要加入域控的节点服务器,配置其IP地址信息, 并将其DNS解析指向AD域的IP地址,否则无法进行加域操作;
    配置节点服务器IP地址
  • 配置完节点服务器的IP地址信息后,接下来进行加域操作, 进入控制面板主面,选择系统设置页面;
    系统设置
  • 在系统设置页面中,在“计算机名、域和工作组设置”选项区域下, 点击“更改设置”链接, 此时会弹出更改设置的对话框信息;在弹出的对话框中选择计算机名选项卡,点击“更改”按钮,进行加域操作;
    更改服务器系统属性信息
    配置服务器所属的AD域
  • 修改服务器所属的AD域后,需要输入域用户和密码对计算机进行验证;
    域用户验证
    输入域用户信息
  • 域用户和密码验证通过后,便可完成加域操作, 重启系统后用域用户便可以登录计算机。
    成功加入AD域

4. 配置故障转移群集

4.1 创建故障转移群集

1. 故障转移群集概述

故障转移群集是一组独立的计算机,这些计算机相互协作以提高群集角色(之前称为应用程序和服务)的可用性和可伸缩性。 多台群集服务器(称为节点)通过网络和软件连接, 每台群集服务器相当于一个冗余节点,整个群集系统允许某部分节点掉线、故障或损坏而不影响整个系统的正常运作。 如果一个或多个群集节点出现故障,其他节点就会开始提供服务(该过程称为故障转移)。 此外,群集角色会得到主动监视以验证它们是否正常工作。 如果某个节点不工作,则会重新启动这些角色或将其移动到其他节点。 故障转移群集还提供群集共享卷 (CSV) 功能,该功能提供一致的分布式命名空间,群集角色可以使用这样的命名空间,从所有的节点访问共享存储。

如果一台服务器变为不可用,则另一台服务器自动接管发生故障的服务器并继续处理任务。 群集中的每台服务器在群集中至少有一台其他服务器确定为其备用服务器。

2. 工作原理

故障转移群集必须基于域的管理模式部署,以“心跳机制”来监视各个节点的健康状况;备用服务器以心跳信号来确定活动服务器是否正常,要让备用服务器变成活动服务器,它必须确定活动服务器不再正常工作。

备用服务器必须首先将其状态与发生故障的服务器的状态进行同步,然后才能开始处理事务。 主要有三种不同的同步方法:

  • 事务日志
    在事务日志方法中,活动服务器将其状态的所有更改记录到日志中。 一个同步实用工具定期处理此日志,以更新备用服务器的状态,使其与活动服务器的状态一致。 当活动服务器发生故障时,备用服务器必须使用此同步实用工具处理自上次更新以来事务日志中的任何添加内容。 在对状态进行同步之后,备用服务器就成为活动服务器,并开始处理事务。
  • 热备用
    在热备用方法中,将把活动服务器内部状态的更新立即复制到备用服务器。 因为备用服务器的状态是活动服务器状态的克隆,所以备用服务器可以立即成为活动服务器,并开始处理事务。
  • 共享存储
    在共享存储方法中,两台服务器都在共享存储设备(如存储区域网络或双主机磁盘阵列)上记录其状态。 这样,因为不需要进行状态同步,故障转移可以立即发生。

3. 配置过程

(1). 通过系统中的服务器管理器为服务器安装.Net Framework和故障转移功能, 在服务器管理器中点击“添加角色和功能”链接, 进入角色与功能添加页面;

添加角色与功能

选择安装类型

添加故障转移群集

功能安装

(2). 安装完故障转移群集功能后,打开服务器管理器右上角的工具菜单下的故障转移集群管理器,配置故障转移群集需要使用域用户登录服务器,如果未使用域用户登录将会出现错误;

故障转移群集设置

故障转移群集管理器界面

(3). 在故障转移群集管理器页面中,在管理对话框中选择创建群集功能,此时将弹出“创建群集向导”;

创建群集向导

  • 选择需要转移的群集服务器

选择服务器

  • 点击“浏览”按钮,通过查找选择群集服务器;此处应该注意的是, 需要添加的群集服务器需要预先配置好故障转移群集功能,并确保网络连通性, 否则无法进行节点添加。

查找并选择群集服务器

添加群集服务器

  • 添加群集服务器后,需要对群集服务器进行验证,此时会打开验证配置向导界面;

验证警告

验证配置向导

确认配置1

确认配置2

配置验证过程

配置验证结果反馈

  • 验证完成后,如有错误,根据建议修改,否则,进入下一步, 配置群集名称与群集地址;

配置群集名称和地址

说明:配置的群集IP地址,用于对群集进行访问的虚拟IP地址。

  • 配置完群集名称和地址后,对配置信息进行确认;

确认群集信息

  • 对群集配置信息确认完误后, 点击“下一步”按钮, 系统将进入创建新的故障转移群集过程;

创建群集过程

  • 创建群集过程完成后, 系统提示创建结果, 如果未出现错误,群集创建成功, 此时便完成了故障转移群集过程。

完成群集创建

显示创建成功的群集信息

4.2 群集仲裁配置

为了保证故障转移群集的高可用性,需要配置群集的仲裁设置。

说明: Windows服务器故障转移集群(Windows Server Failover Cluster,简称WSFC)使用仲裁投票(Quorum Voting)决定集群的健康状况,或使故障自动转移,或使集群离线。当集群中的节点发生故障时,会由其他节点接手继续提供服务,不过,当节点之间通信出现问题,或大多数结点发生故障时,集群就会停止服务,可是集群可以容忍多少个结点发生故障呢?这要由仲裁配置(Quorum Configuration)决定,仲裁配置使用多数(Majority)原则,只要集群中健康运行的结点数量达到仲裁规定的数量(多数结点投赞成票),集群就会继续提供服务,否则集群就停止提供服务。在停止提供服务期间,正常节点持续监控故障节点是否恢复正常,一旦正常节点的数量恢复到仲裁规定的数量,集群就恢复正常,继续提供服务。仲裁投票默认是启用的(Cluster Manged Voting:Enable)。

仲裁模式是在WSFC 集群级别配置的,规定仲裁投票的方法,默认情况下,故障转移集群管理器会基于集群节点的数量,自动推荐一个仲裁模式。仲裁配置影响集群的可用性,在集群中,重组的集群节点必须在线,否则集群将由于仲裁不足而必须停止服务。

1. 相关术语

  • 仲裁(Quorum):法定数量,预先规定具有投票权的节点或见证(Witness)的数量;
  • 仲裁投票(Quorum Voting):法定数量的节点和见证进行投票,如果多数投赞成票,那么判断集群处于健康状态;
  • 投票节点(Voting Node):在集群中,拥有投票权的节点称作投票节点,如果投票节点投赞成票,代表该节点认为集群是健康的;但是,单个节点不能决定集群整体的健康状态。
  • 投票见证(Voting Witness):除了投票节点能够进行投票之外,共享的 File 和 Disk 也能投票,称作投票见证,共享的File 投票见证,称作文件共享见证(File Share Witness);共享的Disk 投票见证,称作硬盘见证(Disk Witness);
  • 仲裁节点集合(Quorum Node Set):拥有投票的节点和Witness统称仲裁节点集合;由仲裁节点集合的投票结果决定集群整体的健康状态。

2. 仲裁模式

仲裁模式多数原则是指所有投票节点进行投票,如果赞成票占比在50%以上,那么WSFC认为集群处于健康状态,执行故障转移,继续提供服务,否则,WSFC认为集群出现严重故障,WSFC使集群离线,停止提供服务。根据仲裁节点集合的组成类型,将仲裁模式分为以下四种类型:

  • 节点多数(Node Majority):在集群中,投票节点都是集群的节点服务器,如果一半以上的投票节点(Voting Node)投赞成票,那么WSFC判定集群是健康的;
  • 节点和文件共享多数(Node and File Share Majority):和Node Majority模式相似,除了将远程文件共享配置为一个投票见证(Voting Witness)之外,该共享文件称作仲裁文件,或见证文件。使用仲裁文件,远程文件拥有投票权,如果其他节点能够连接到该共享文件,那么认为该文件投一个赞成票。如果投票节点和文件共享投的赞成票占一半以上,那么WSFC判定集群是健康的。作为一个最佳实践,文件共享见证(File Share Witness)不要存储在集群中的任何一个节点服务器上,并且设置任何一个节点服务器都有权限访问。
  • 节点和硬盘多数(Node and Disk Majority):和Node Majority模式相似,除了将共享硬盘配置为一个投票见证(Voting Witness)之外,该共享硬盘称作仲裁硬盘,或见证硬盘。仲裁硬盘需要共享存储,集群中各个节点都需要挂载同一个共享硬盘。
  • 只硬盘(Disk Only):没有多数,仅仅把一个共享的硬盘作为唯一见证,集群中的任何一个节点能够访问该共享硬盘,这意味着,一旦仲裁硬盘脱机,集群就会停止提供服务。

常见的仲裁模式是节点多数(Node Majority) 和 节点和文件共享多数(Node and File Share Majority),如果集群节点数量是奇数,那么使用节点多数仲裁模式;如果集群节点数量是偶数,那么使用节点和文件共享多数仲裁模式,该模式需要配置一个共享文件夹,集群中的各个节点都有权限访问该共享文件夹,并且该共享文件夹不能创建是集群的节点上。

3. 配置过程

  • 在故障转移集群管理器中,选择需要配置仲裁的群集, 单击右键选择“更多操作”菜单项,此时在弹出的二级菜单中,选择“配置群集仲裁设置”菜单项,进入仲裁配置向导界面;

仲裁配置

仲裁配置向导

  • 在仲裁配置向导界面,点击“下一步”按钮,进入仲裁配置选项界面中,选择高级仲裁配置选项;

选择高级仲裁配置

  • 选择高级仲裁配置后, 进入选择投票配置界面, 在该步骤中选择需要进行配置的服务器节点信息;

投票配置节点

  • 选择仲裁配置节点后,进入选择仲裁见证界面, 仲裁见证用于实现群集的高可用性;在仲裁见证中可配置共享磁盘见证和文件共享见证,磁盘见证是指增加一个共享的硬盘作为一个仲裁投票结点,文件共享见证是指增加一个文件共享作为一个仲裁投票结点;

注:由于SQL Server 2014 Always On可用性组件不需要共享存储, 此处配置文件共享见证即可。

选择仲裁见证

  • 选择“配置文件共享见证”, 系统进入文件共享见证配置界面,此处我们可以将文件共享见证配置在域控服务器上, 在域控服务器中创建一个共享文件夹用于实现共享文件见证,如果在域控服务器中没有共享文件夹,则需要先在域控服务器中创建共享文件夹;

注意: 在配置共享文件夹时需要为共享文件夹添加everyone的访问权限,否则会出现无法对文件共享属性修改的错误。

选择配置文件共享见证

配置文件共享路径

  • 在配置文件共享路径界面中, 点击“浏览”按钮,弹出浏览共享文件夹界面;在浏览共享文件夹界面中, 点击“浏览”按钮,弹出选择计算机对话框, 从中选择域控服务器,确定后我们可以看到在域控服务器中配置的共享文件夹信息;

浏览共享文件夹

选择计算机

查找服务器

查找域控中的服务器列表

选择域控服务器

域控服务器共享文件夹信息

  • 配置完文件共享见证路径后,点击“下一步“按钮,系统将确认仲裁配置的信息;

文件共享路径

确认文件共享配置

成功创建文件共享仲裁

5. 安装与配置SQL Server 2014

  1. 分别在SQL Server节点 上安装SQL Server应用,执行SQL Server数据库安装过程;

执行数据库安装过程

  1. 在数据库安装界面中, 选择“全新SQL Server独立安装或向现有安装添加功能”, 此时会要求选择SQL Server版本或输入产品密钥,我们选择输入SQL Server企业版的产品密钥;

提示输入SQL Server产品密钥

输入SQL Server企业版产品密钥

  1. 输入产品密钥后,进入许可条款界面, 选择“我接受许可条款”并进行下一步操作;

接受许可条款

  1. 确认SQL Server更新配置, 选择“使用Microsoft Update检查更新”, 并进入下一步,进入安装规则检查步骤,确认安装规则检查通过后,进入设置角色步骤;

产品更新配置

安装规则检查

  1. 在设置角色步骤中, 选择SQL Server功能安装选项, 进入下一步操作;

设置安装角色

  1. 在功能选择步骤中,选择需要添加的SQL Server数据库的功能选择,并设置应用程序的安装路径;
  • 数据库引擎服务:它是用于存储、处理和保护数据的核心服务。数据库引擎提供受控制的访问和快速的事务处理功能,还为维护高可用性提供各种支持。此外还提供对 SQL Server 实用工具中的实用工具控制点的支持。
  • SQL Server复制:它包括一组技术,利用这些技术可以将一个数据库中的数据和数据库对象复制和分发到另一个数据库中,并在这些数据库之间进行同步以实现一致性。可以使用复制功能将数据分发到不同位置,并分发给通过局域网和广域网、拨号连接、无线连接和 Internet 连接的远程和移动用户。
  • 全文和语义提取搜索:该功能包括支持全文提取的搜索引擎,用来加快文本搜索,以及加快对关键短语(很可能是标记)的语义提取和对 SQL Server 中存储的内容的相似性搜索。
  • Data Quality Services: 数据质量数据库对象。
  • Analysis Services(分析服务): 该功能包括 Analysis Services 以及进行联机分析处理(OLAP)和数据挖掘等操作时所需的工具。只能群集化数据库引擎服务和 Analysis Services。
  • Reporting Services(报表服务): 该应用程序基于服务器,用于创建、管理报表并将报表传递到电子邮件、多种文件格式和基于 Web 的交互格式。本机模式的服务器通过 Reporting Services 组件提供所有处理和管理功能。

功能选择

  1. 选择功能后, SQL Server安装向导对功能安装的规则进行检查, 查看是否符合功能安装的需求,如果不符合功能安装的要求, 需要先进行处理后才能执行下一步操作, 例如应用需要.NET Framework 3.5的支持, 如果系统未安装该功能, 则不能进行后续的安装操作。

注: 安装SQL Server 2014需要安装.NET Framework 3.5的支持,因此需要提前安装。

  • 功能规则检查未通过, 提示错误信息;
    功能规则检查未通过
  • 功能规则检查通过, 则可以进行下一步操作。
    功能规则检查通过
  1. 功能规则检查通过后,进行实例配置步骤,此时输入需要配置的SQL Server实例名, 也可以使用默认的实例名“MSSQLSERVER”, 点击“下一步”按钮, 执行服务器配置操作;

配置实例名

  1. 在服务器配置步骤中, 对SQL Server相关服务的启动类型配置,并配置数据库引擎服务的排序规则,配置完成后,执行下一步配置;

服务器启动选项配置

排序规则

  1. 在数据库引擎配置步骤中, 配置服务器的身份验证模式和数据目录, 在此我们选择混合模式验证方式,并将域管理员用户添加为SQL Server管理员, 同时配置数据库所在的数据目录;

服务器配置

配置数据目录

  1. 如果在功能选择时选择了Analysis Services和Reporting Services功能, 需要对该功能服务进行配置,配置方法与数据库引擎配置相同;

Analysis Services配置

Reporting Services配置

  1. 在数据库引擎配置(Analysis Services、Reporting Services配置,如果有选择该功能)完成后,执行下一个步骤,对功能配置规则进行检查, 查看其是否符合规则;

功能配置规则检查

  1. 在功能配置检查通过后, SQL Server准备启动安装进程,进行应用安装。

配置信息确认

安装过程

安装过程

  1. 安装完成后,显示安装结果, 并对结果进行确认, 确认后完成SQL Server的安装操作。

确认安装结果

6. 配置AlwaysOn可用性组

6.1 在SQL Server集群节点上启用AlwaysOn可用性配置项

  1. 安装SQL Server 2014后,在Windows操作系统下的开始菜单中找到“SQL Server 2014配置管理器”并打开配置管理器;

打开配置管理器

  1. 在SQL Server配置管理控制台中点击“SQL Server服务”节点,在右边窗口中右击“SQL Server (InstanceName)”,在上下文菜单中选择“属性”, 打开属性对话框;

选择SQL Server实例属性

SQL Server实例属性对话框

  1. 在SQL Server实例属性对话框中选择“AlwaysOn 高可用性”选项卡中勾选“启用AlwaysOn 可用性组”配置项,点击“应用”按钮,此时在弹出警告对话框中提示该修改需要重启SQL Server数据库引擎服务才能生效,点击“确定”完成配置;

需要在各个SQL Server集群节点上启用AlwaysOn高可用性选项。

  1. 启用AlwaysOn可用性组

配置提示

  1. 再次选择“SQL Server (InstanceName)”后右键单击,在弹出的上下文菜单中选择“重新启动”,对SQL Server数据库引擎执行重启操作;

重启SQL Server实例

  1. 为了避免在配置与实施AlwaysOn Group时带来复杂的权限设置,建议将相关的SQL服务(如:SQL Server数据库引擎服务)启动登录身份由默认的“内置账户”改为指定的域用户账户;

登录身份修改

  1. 建议为域账户授予SQL Server各节点的登录权限,并将各节点服务器账户指派为SQL Server登录账户。

授权域用户登录

6.2 配置高可用性组

高可用性组的创建操作可以有三种方式:向导方式、对话框方式和脚本方式,在此以向导方式在SQL-Node-218节点上创建的TESTDB1作为主数据库为例进行介绍。

1. 为高可用性组创建配置数据库

要使用向导创建高可用性组,必须要有符合条件的数据库存在,才能进行相关的操作。那么数据库要符合以下条件:

  • 主数据库的恢复模式必须是“完整”恢复模式
![恢复模式为完整恢复模式](http://upload-images.jianshu.io/upload_images/2066703-8f45ae3990e71f15.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 主数据库已进行了一次完整备份
![完整备份](http://upload-images.jianshu.io/upload_images/2066703-84b7ecf319924d3a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 需要一个共享路径提供给备份包存储,并允许所有节点服务器(SQL Server数据库引擎服务登录账户)能够通过UNC路径进行可读写访问
![共享文件路径](http://upload-images.jianshu.io/upload_images/2066703-bc94e8d927cba244.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2. 利用向导新建高可用性组

  • 在系统中打开“SQL Server Management Studio”管理控制器;
    SQL Server管理控制器
  • 在管理控制器中展开“AlwaysOn高可用性”节点,右键单击“可用性组”,在上下文菜单中,选择“新建可用性组向导”,在弹出的向导界面中点击“下一步”按钮继续;
    新建可用性组向导
    新建可用性组向导界面
  • 在新建可用性组向导中为将要创建的高可用性组指定名称;
    指定名称
  • 选择需要满足高可用性组条件的数据库,点击“下一步”按钮继续;
    选择数据库
  • 为高可用性组添加其它SQL Server服务器节点为副本。点击“添加副本”按钮,一次添加所需SQL Server服务器,并且指定初始角色为“主”或“辅助”。最多可选2个副本实现自动故障转移,这两个副本将同时使用同步提交可用性模式。最多可支持3个副本进行同步提交可用性模式,若使用异步提交必须强制手动故障转移。对于可读辅助副本设置来讲,可选择其为是否可读或仅读意向,需要注意只有主数据库副本才可写;

添加副本

添加副本,选择自动故障转移

  • 在指定副本步骤界面中点击“端点”选项卡,可以设置高可用性组的端点URL,此处使用默认设置即可;
    配置端点
  • 在指定副本步骤界面的“备份首选项”中,指定作为备份副本的节点,默认是在“首选辅助副本”中进行备份。此外还可以通过副本备份优先级来指定首选, 默认所有节点均为50;

备份首选项

  • 为高可用性组创建侦听器,指定其DNS名称的Host Name和端口,建议IP地址使用静态IP,并且添加新的群集IP(监听器IP)作为高可用性组使用,如此可以指定SQL Server的默认端口1443,以便简化客户端访问的配置;
    配置AlwaysOn高可用性监听器
  • 在选择数据同步步骤中,初始化数据同步首选项,在此建议选择“完整”配置项,并指定之前创建的UNC共享路径,然后点击“下一步”继续;

数据同步首选项

  • 验证是否满足高可用性组创建需求,如果结果全为“成功”,点击“下一步”按钮继续操作;
    验证需求
  • 检查并确认之前的配置信息,若无误后,点击“完成”按钮便完成Always On高可用性组配置过程, 此时等待向导完成创建SQL Server 2012高可用性组。另外,此处也可保存创建高可用性组的脚本,以便后期分步诊断故障之用。

在创建Always On高可用性结果时,如果出现黄色警告,则需进行进一步判断是否成功。若出现红色错误,表示创建AG(Always On Group)不成功。

  • 确认配置信息
    创建向导完成
  • 返回SQL Server 配置控制中心, 在“可用性组”节点下查看刚才创建的“DBAG01”的高可用性组的状态。

查看高可用性组的状态

3. 高可用性组的基本管理

创建完成Always On高可用性组后,可用通过SQL Server Management Studio(SSMS)对高可用性组进行基本的管理。

(1). 配置高可用性组属性

  • 直接右键点击需要管理的高可用性组,在上下文菜单中可以选择为其“添加新数据库”、“添加副本”、“添加侦听器”及手动执行“故障转移”等操作;点击“属性”,也可以编辑该高可用性组的各种属性值;
    高可用性组管理
  • 在高可用性组的属性“常规”选项卡中,可以为其添加/删除数据库、副本节点,并配置各可用性副本节点的参数设定值;
    可用性组属性--常规
  • 在高可用性组的属性“备份首选项”选项卡中,可以修改相应副本节点的备份优先级和备份执行的位置;
    可用性组属性--备份首选项

(2). 配置可用性副本属性

  • 针对高可用性组中具体的副本节点配置,可以展开该组中“可用性副本”,右击需要配置的副本节点,在上下文菜单中点击“属性”;
    可用性副本属性
  • 在可用性副本属性的“常规”选项卡中可以修改配置当前副本节点“可用性模式”、“故障转移模式”以及“会话超时”等;

可用性副本属性

(3). 配置可用性组侦听器属性

  • 通过右键点击“可用性组侦听器”中的具体侦听器,打开其“属性”,可以对AG侦听器进行相应配置;

可用性组侦听器属性

  • 在可用性组侦听器属性中可以修改侦听器的侦听端口,从而指定客户端访问AG中数据库所需要连接的服务端口;
![配置侦听器属性](http://upload-images.jianshu.io/upload_images/2066703-f17c16288f7800af.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)