随着云计算和互联网技术的发展,越来越多的企业接受将自身的IT系统放在公有云上,以节省企业的成本和提升运维效率。目前主流的云计算提供商有亚马逊云、微软云、阿里云、腾讯云、华为云、金山云等等。对于中大型企业,考虑到成本、数据安全、云产品质量和售后服务等多因素考虑,通常会选择将业务系统分散在不同的云上,同时利用多个云厂商的各自优势构建混合云的灾备系统。
本文选择华为云的云主机、云解析、数据库备份和迁移等方案,与其他云上已部署的业务系统,组建一个混合云的灾备系统。实验证明,本文所探讨的方法,能够满足大部分网站的容灾和性能需求。
本文所配置的主站点(阿里云)和备站点(华为云),仅作为技术探讨,不代表推荐或攻击哪个云平台。云平台的选型是综合品牌、商务、技术、服务、安全、生态等等多因素组合的结果,本文不做探讨。
关键字:容灾、备份、云主机ECS、镜像、负载均衡、弹性伸缩、域名解析DNS、虚拟私有网络VPN、专用网络VPC、mysql数据库、数据库迁移、wordpress博客
目录
摘要
第一章 绪论
1.1 研究背景
1.2 研究现状
1.3 研究意义
第二章 需求分析
2.1 数据备份和恢复
2.2 多个云平台之间的业务负载均衡
2.3 云数据中心内部弹性伸缩服务云服务器
2.4 多个云平台之间网络互通
第三章 相关技术
3.1 云主机ECS介绍
3.2 虚拟机局域网VPC介绍
3.3 云数据库MySQL介绍
3.4数据库复制服务DRS介绍
3.5 专线VPN介绍
3.6 云解析DNS介绍
3.7 负载均衡介绍
3.8 弹性伸缩介绍
第四章 系统设计
4.1 总体设计
4.2 组网图
第五章 系统实现
5.1 前置准备
5.2 相关工具
5.3 阿里云发布主站点
5.4 阿里云与华为云之间搭建VPN专属通道
5.5 华为云备站点发布镜像网站
5.6 阿里云主站点数据库备份到华为云备站点
5.7 设置网站为在多云平台的双活集群状态
5.8 配置华为云随流量激增进行自动扩容主机的低成本框架
第1阶段:配置负载均衡
第2阶段:配置集群可自动增加和较少主机
本章小结:
总结与展望
企业数据的安全性和实效性方面要求越来越高,可是不可避免的会遇到系统崩溃,员工恶意删除资料,黑客攻击,办公大楼漏水停电,设备损坏等等问题。当这些问题出现后经常会对企业的正常运作带来很大的影响,甚至会使整个企业的运作完全停下来,通过备份,容灾和高可用性等等办法可以使公司避免以上的这些问题。
备份系统就是通过硬盘,磁带,公有云平台等媒介将企业整个运行系统或文件等存储到存储媒介上,以备不时之需。容灾系统是指建立一个异地的数据系统,为了保护数据安全和提高数据的持续可用性,企业要从RAID保护、冗余结构、数据备份、故障预警等多方面考虑,将数据库或整个系统的必要文件复制到存储设备的过程。
国际标准SHARE 78将容灾系统定义成七个层次,这七个层次对应的容灾方案在功能、适用范围等方面都有所不同,所以用户选型应分清层次。
面对各种可能的灾难,企业需要方便、灵活地同步基于异构环境下驻留在不同数据库中的数据,这就需要建设一个对各种情况都可以抵御或者化解的本地和异地的容灾系统。但现在,一些计算机信息系统对于容灾机制的考虑还有欠缺,不少计算机信息系统只是做了简单的本地磁盘的不同分区或者是相同系统上不同磁盘的数据备份,只是严格意义上的数据备份系统,称不上容灾系统,例如数据库系统中常用的镜像备份,也就是文件拷贝方式;基于操作系统文件系统复制的方式:以及基于高端联机存储设备(磁盘阵列)之间的数据写操作同步的方式等。在一般灾难时,可以在一定意义上保证数据的完整性,但很难保证用户数据的可靠性和安全性,更不用说能向用户提供透明的不间断服务了。
真正的容灾必须满足三个要素:先是系统中的部件、数据都具有冗余性,即一个系统发生故障,另一个系统能够保持数据传送的顺畅;其次,具有长距离性,因为灾害总是在一定范围内发生,因而充分长的距离才能够保证数据不会被一个灾害全部破坏;第三,容灾系统要追求全方位的数据复制,也称为容灾的"3R"(Redundance、Remote、Replication)。
而国际标准SHARE 78 对容灾系统的定义有七个层次:从最简单的仅在本地进行磁带备份,到将备份的磁带存储在异地,再到建立应用系统实时切换的异地备份系统,恢复时间也可以从几天到小时级到分钟级、秒级或零数据丢失等。目前针对这七个层次,都有相应的容灾方案,所以,用户在选择容灾方案时应重点区分它们各自的特点和适用范围,结合自己对容灾系统的要求判断选择哪个层次的方案。
0级:无异地备份
0等级容灾方案数据仅在本地进行备份,没有在异地备份数据,未制定灾难恢复计划。这种方式是成本最低的灾难恢复解决方案,但不具备真正灾难恢复能力。
在这种容灾方案中,最常用的是备份管理软件加上磁带机,可以是手工加载磁带机或自动加载磁带机。它是所有容灾方案的基础,从个人用户到企业级用户都广泛采用了这种方案。其特点是用户投资较少,技术实现简单。缺点是一旦本地发生毁灭性灾难,将丢失全部的本地备份数据,业务无法恢复。
1级:实现异地备份
第1级容灾方案是将关键数据备份到本地磁带介质上,然后送往异地保存,但异地没有可用的备份中心、备份数据处理系统和备份网络通信系统,未制定灾难恢复计划。灾难发生后,使用新的主机,利用异地数据备份介质(磁带)将数据恢复起来。
这种方案成本较低,运用本地备份管理软件,可以在本地发生毁灭性灾难后,恢复从异地运送过来的备份数据到本地,进行业务恢复。但难以管理,即很难知道什么数据在什么地方,恢复时间长短依赖于何时硬件平台能够被提供和准备好。以前被许多进行关键业务生产的大企业所广泛采用,作为异地容灾的手段。目前,这一等级方案在许多中小网站和中小企业用户中采用较多。对于要求快速进行业务恢复和海量数据恢复的用户,这种方案是不能够被接受的。
2级:热备份站点备份
第2级容灾方案是将关键数据进行备份并存放到异地,制定有相应灾难恢复计划,具有热备份能力的站点灾难恢复。一旦发生灾难,利用热备份主机系统将数据恢复。它与第1级容灾方案的区别在于异地有一个热备份站点,该站点有主机系统,平时利用异地的备份管理软件将运送到异地的数据备份介质(磁带)上的数据备份到主机系统。当灾难发生时可以快速接管应用,恢复生产。
由于有了热备中心,用户投资会增加,相应的管理人员要增加。技术实现简单,利用异地的热备份系统,可以在本地发生毁灭性灾难后,快速进行业务恢复。但这种容灾方案由于备份介质是采用交通运输方式送往异地,异地热备中心保存的数据是上一次备份的数据,可能会有几天甚至几周的数据丢失。这对于关键数据的容灾是不能容忍的。
3级:在线数据恢复
第3级容灾方案是通过网络将关键数据进行备份并存放至异地,制定有相应灾难恢复计划,有备份中心,并配备部分数据处理系统及网络通信系统。该等级方案特点是用电子数据传输取代交通工具传输备份数据,从而提高了灾难恢复的速度。利用异地的备份管理软件将通过网络传送到异地的数据备份到主机系统。一旦灾难发生,需要的关键数据通过网络可迅速恢复,通过网络切换,关键应用恢复时间可降低到一天或小时级。这一等级方案由于备份站点要保持持续运行,对网络的要求较高,因此成本相应有所增加。
4级:定时数据备份
第4级容灾方案是在第3级容灾方案的基础上,利用备份管理软件自动通过通信网络将部分关键数据定时备份至异地,并制定相应的灾难恢复计划。一旦灾难发生,利用备份中心已有资源及异地备份数据恢复关键业务系统运行。
这一等级方案特点是备份数据是采用自动化的备份管理软件备份到异地,异地热备中心保存的数据是定时备份的数据,根据备份策略的不同,数据的丢失与恢复时间达到天或小时级。由于对备份管理软件设备和网络设备的要求较高,因此投入成本也会增加。但由于该级别备份的特点,业务恢复时间和数据的丢失量还不能满足关键行业对关键数据容灾的要求。
5级:实时数据备份
第5级容灾方案在前面几个级别的基础上使用了硬件的镜像技术和软件的数据复制技术,也就是说,可以实现在应用站点与备份站点的数据都被更新。数据在两个站点之间相互镜像,由远程异步提交来同步,因为关键应用使用了双重在线存储,所以在灾难发生时,仅仅很小部分的数据被丢失,恢复的时间被降低到了分钟级或秒级。由于对存储系统和数据复制软件的要求较高,所需成本也大大增加。
这一等级的方案由于既能保证不影响当前交易的进行,又能实时复制交易产生的数据到异地,所以这一层次的方案是目前应用最广泛的一类,正因为如此,许多厂商都有基于自己产品的容灾解决方案。如存储厂商EMC等推出的基于智能存储服务器的数据远程拷贝;系统复制软件提供商VERITAS等提供的基于系统软件的数据远程复制;数据库厂商Oracle和Sybase提供的数据库复制方案等。但这些方案有一个不足之处就是异地的备份数据是处于备用(Standby)备份状态而不是实时可用的数据,这样灾难发生后需要一定时间来进行业务恢复。更为理想的应该是备份站点不仅仅是一个分离的备份系统,而且还处于活动状态,能够提供生产应用服务,所以可以提供快速的业务接管,而备份数据则可以双向传输,数据的丢失与恢复时间达到分钟甚至秒级。据了解,目前Goldengate公司的全局复制软件能够提供这一功能。
6级:零数据丢失
第6级容灾方案是灾难恢复中最昂贵的方式,也是速度最快的恢复方式,它是灾难恢复的最高级别,利用专用的存储网络将关键数据同步镜像至备份中心,数据不仅在本地进行确认,而且需要在异地(备份)进行确认。因为,数据是镜像地写到两个站点,所以灾难发生时异地容灾系统保留了全部的数据,实现零数据丢失。
这一方案在本地和远程的所有数据被更新的同时,利用了双重在线存储和完全的网络切换能力,不仅保证数据的完全一致性,而且存储和网络等环境具备了应用的自动切换能力。一旦发生灾难,备份站点不仅有全部的数据,而且应用可以自动接管,实现零数据丢失的备份。通常在这两个系统中的光纤设备连接中还提供冗余通道,以备工作通道出现故障时及时接替工作,当然由于对存储系统和存储系统专用网络的要求很高,用户的投资巨大。采取这种容灾方式的用户主要是资金实力较为雄厚的大型企业和电信级企业。但在实际应用过程中,由于完全同步的方式对生产系统的运行效率会产生很大影响,所以适用于生产交易较少或非实时交易的关键数据系统,目前采用该级别容灾方案的用户还很少。
本文结合工作和兴趣需要,通过搭建一个基于混合云的容灾备份的博客系统,进行研究在华为云的基础上,有哪些手段可以实现上述7种容灾等级的效果。本文仅对技术进行探讨,不涉及因部署容灾系统而产生的额外成本分析。
常见的容灾和备份的架构如下所示:
整体需求包括:主站点的数据可通过同步或异步方式备份到备站带点、多云平台之间支持业务层负载均衡、云数据中心内部弹性伸缩云服务器、多数据中心之间通过互联网/专线方式连接。
云服务器Elastic Compute Service(ECS)是华为云提供的一种基础云计算服务。使用云服务器ECS就像使用水、电、煤气等资源一样便捷、高效。无需提前采购硬件设备,而是根据业务需要,随时创建所需数量的云服务器ECS实例。在使用过程中,随着业务的扩展,可以随时扩容磁盘、增加带宽。如果不再需要云服务器,也能随时释放资源,节省费用。
下图列出了ECS涉及的所有资源,包括实例规格、块存储、镜像、快照、带宽和安全组。可以通过 云服务器管理控制台 或者 华为云ECS资源。
专有网络VPC(Virtual Private Cloud)是基于各家云平台构建的一个隔离的网络环境,专有网络之间逻辑上彻底隔离。
专有网络是独有的云上私有网络。可以完全掌控自己的专有网络,例如选择IP地址范围、配置路由表和网关等,可以在VPC中使用华为云资源如ECS、RDS、ELB等。可以将专有网络连接到其他专有网络或本地网络,形成一个按需定制的网络环境,实现应用的平滑迁移上云和对数据中心的扩展。
关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。关系型数据库服务具有完善的性能监控体系和多重安全防护措施,并提供了专业的数据库管理平台, 让用户能够在云中轻松的进行设置和扩展关系型数据库。通过华为云关系型数据库服务的管理控制台,用户几乎可以执行所有必需任务而无需编程,简化运营流程,减少日常运维工作量,从而专注于开发应用和业务发展。
本文研究的备份站点选择华为云,华为云RDS支持三种数据库引擎:MySQL、SQL Server、PostgreSQL。
数据复制服务(Data Replication Service,简称DRS)是一种易用、稳定、高效、用于数据库在线迁移和数据库实时同步的云服务。DRS围绕云数据库,降低了数据库之间数据流通的复杂性,有效地帮助您减少数据传输的成本。您可以通过DRS快速地解决多种场景下数据库之间的数据流通问题,以满足数据传输业务需求。
DRS支持的关键场景包括:
(1)、云下数据库迁移上云
在云上创建数据库后,经常面临云下数据库迁移上云的场景。通过DRS,能够简单完成云上数据库迁移上云。在迁移过程中,DRS能够最大限度地缩短业务系统中断时间,降低对业务影响。
DRS支持将其他云数据库的数据在线迁移至关系型数据库(Relational Database Service,简称RDS)或者文档数据库服务(Document Database Service, 简称DDS)。
(3)、VPC网络内数据库迁移
通过DRS,能够将自行搭建在弹性云服务器(Elastic Cloud Server,简称ECS)上的数据库,在线迁移至RDS或则DDS。
VPN网关是一款基于Internet,通过加密通道将企业数据中心、企业办公网络、或Internet终端和云平台专有网络(VPC)安全可靠连接起来的服务。华为云VPN网关提供IPsec-VPN连接。
VPN网关有以下优势:
安全:使用IKE和IPsec协议对传输数据进行加密,保证数据安全可靠。
高可用:采用双机热备架构,故障时秒级切换,保证会话不中断,业务无感知。
成本低:基于Internet建立加密通道,比建立专线更便宜,快速构建混合云。
配置简单:开通即用,配置实时生效,快速完成部署。
目前主流的云平台均提供硬件VPN设备,可靠性和性能上得到保障。
如果是个人用户或小微企业,亦可考虑使用云市场上经过华为认证的软件VPN来实现专线功能。例如华为云市场的严选商品VPN:Array SSL VPN免费版 或 奕锐云安全接入VPN系统
云解析服务(Domain Name Service,DNS)提供高可用、高扩展的权威DNS服务和DNS管理服务,把人们常用的域名或应用资源转换成用于计算机连接的IP地址,从而将最终用户路由到相应的应用资源上。
本文通过阿里云解析实现网站流量的负载均衡,可灵活调整网站的访问流量按不同比例分发到多个云平台。
弹性负载均衡( Elastic Load Balance)将访问流量自动分发到多台云服务器,扩展应用系统对外的服务能力,实现更高水平的应用容错。
针对大型门户网站访问量高的特点,通过弹性负载均衡将用户的访问流量均匀的分发到多个后端云服务器上,确保业务快速平稳的运行。弹性负载均衡可将流量跨可用区进行分发,建立实时的同城容灾机制,满足银行贸易等企业对系统的高可用性要求。电商业务呈现出较强的潮汐效应。ELB通过和弹性伸缩等服务的无缝集成,自动创建后端云服务器,将流量自动分发到新的云服务器,缓解了促销高峰时期的系统压力。
弹性伸缩时根据用户的业务需求和调度策略,自动调整云主机数量的管理服务,来满足业务需求和成本之间的平衡。其特点包括:
相关术语:
注意:某些单位由于信息安全管控,不能在工作电脑上安装如下工具,解决办法:
方法1:使用私人电脑进行操作。【推荐】
方法2:在阿里云或华为云上购买1台4核8G的windows 64位主机,带宽5M。
本实验相关工具:
工具名 |
用途 |
下载地址 |
Xshell |
登陆linux服务器的命令行工具 |
下载地址 |
Xftp |
将测试脚本从个人电脑上传至云主机中 |
下载地址 |
Beyond Compare |
文本对比工具,用于对比数据库备份后,数据内容是否一致 |
下载地址 |
网页压测工具 |
Apache ab |
下载地址 |
关键思路:
步骤1:购买阿里云主机,用于部署主站点
登陆www.aliyun.com 购买1台1C1G云主机,入门级共享型,操作系统为centos 6.8,公网IP 1个,按流量计费带宽5M,按量付费,登陆凭证选择“自定义密码”。
步骤2:安装Apache HTTP服务、PHP语言环境、wordpress博客网站
使用5.2节相关工具中xshell登陆云主机,根据如下命令,分别部署Apache HTTP服务、安装PHP语言环境、安装wordpress博客网站。
1、xshell登陆云主机
ssh root@云主机公网IP地址
2、安装Apache HTTP服务
yum -y install httpd
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
service httpd start
chkconfig httpd on
在浏览器输入云主机公网IP,确认能看到apache的测试页面,表明Apache安装成功了。如图所示
3、安装PHP语言环境
yum -y install php php-mysql
yum -y install gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap
service httpd restart
echo "" > /var/www/html/phpinfo.php
浏览器访问 云主机公网ip/phpinfo.php 能看到php页面说明安装php环境成功。
4、安装wordpress
yum install -y unzip
wget -c https://cn.wordpress.org/wordpress-4.9.1-zh_CN.tar.gz
tar xzf wordpress-4.9.1-zh_CN.tar.gz -C /var/www/html
chmod -R 777 /var/www/html
浏览器访问 云主机公网ip/wordpress/ 能看到wordpress页面,说明wordpress安装成功。
步骤3:购买阿里云RDS for mysql数据库实例
1、在阿里云上购买云数据库mysql,1核1G单机基础版,按量付费。
2、创建数据库,名为myblog,用于存放wordpress的数据。
3、添加数据库的账户。(即通过哪些账号能访问该数据库,默认没有可用账户)
在阿里云RDS的“控制台”-“账号管理”-“创建账号”,新增一个adminuser账号,设置为普通账号并授权访问数据库“myblog”,权限为“读写”。后续wordpress同该账号访问数据库。
4、设置数据库的白名单。(即哪些主机能访问该数据库,默认所有主机不能访问该数据库)
在阿里云RDS的“控制台”-“基本信息”-“内网地址”-“设置白名单”,删除默认的禁止所有的IP“127.0.0.1”,新增云主机内网IP地址。添加白名单后,自动生成数据库内网地址。
步骤4:配置博客网站wordpress,指定阿里云RDS for mysql。
1、在浏览器输入 云主机公网ip/wordpress/,点击屏幕下方页面下方的“现在就开始”。
2、输入上述所创建数据库的信息
3、输入博客网页的介绍信息和登陆信息。(注意:这里的账号/密码是指登陆博客的,不是登陆数据库的)
4、安装wordpress完成,登陆显示欢迎页面。
步骤5:在wordpress上新增一片文章,检查数据库新写入数据成功。
1、在浏览器输入云主机公网ip/wordpress/,进入管理后台,“设置”-“固定链接”-“常用设置”,选择“朴素”类型。避免网页地址错误导致博客显示失败。
2、新增一篇文章“两个和尚挑水喝”,配图。打开该文章后,增加一条评论“挑完水去劈材烧火”。
3、使用阿里云DMS(数据管理系统)系统查看数据库中已成功增加评论信息“挑完水去劈材烧火”。在阿里云RDS管理控制台,“登陆数据库”。
在对应数据库“myblog”下的数据表“wp_comments”中看到新增的评论“挑完水去劈材烧火”。
至此,在阿里云上模拟的博客系统主站点搭建完成,数据库可正常读写。
关键思路:阿里云和华为云分别购买VPN,将两端不同网段子网组成一个局域网。
前置条件:阿里云和华为云的虚拟机私有网络(VPC)中的服务器,其内网地址不在同一个网段内。在本实验中,阿里云内网网段为:172.31.0.0/16 华为云内网网段为:192.168.10.0/24,满足组建VPN网络的条件。参考链接:阿里云搭建VPN网关。
步骤1:确认阿里云和华为云的子网是否同一个网段。
1、阿里云子网查看方法:专有网络VPC控制台-“专有网络”。本次实验阿里云网段为172.31.0.0/16.
2、华为云子网查看方法:网络控制台-“虚拟私有云”-“VPC网段”。本次实验华为云网段为192.168.10.0/24。
步骤2:在阿里云购买VPN网关。
1、购买网关,选择ipsec协议,带宽5M,最低购买时长1个月。
步骤3:在华为云购买网关
1、购买网关,选择ipsec协议,带宽5M,按量付费。
2、在华为云上购买VPN连接
华为云控制台-“服务列表”-“VPN”-“虚拟专有网络”-“VPN连接”-“购买VPN连接”。
购买后会自动生成华为云VPN连接的公网地址。
步骤4:配置阿里云和华为云之间的专线。
1、在阿里云上购买用户网关,此处IP地址填写华为云VPN的公网IP。注意:“用户网关”指的是对端的网关,可以是用户机房,也可以是华为云、腾讯云等。
2、在阿里云上购买IPSec连接。阿里云控制台-“VPN”-“IPSec连接”-“创建IPSec连接”。
3、调整两端VPN配置,保证协商参数一致。(阿里云和华为云的默认值不一致)
阿里云设置方法:VPN控制台-“IPSec连接”-“编辑”-“高级设置”。
华为云设置方法:网络控制台-“虚拟专用网络”-“VPN连接”。
4、配置阿里云的路由。即阿里云内网服务器想要通过VPN网络访问华为云上的服务器,需要增加一条路由表记录,目标网段是华为云内网地址时,需要通过阿里云的VPN网关进行跳转。
设置方法:专有网络控制台-“路由表”,点击打开默认的路由表,“添加路由条目”。目标网段为华为云内网网段,下一跳类型为VPN网关。
5、华为云路由在配置VPN时,自动开通,无需手工配置。
步骤5:阿里云与华为云之间内网ping测试。
1、通过ssh命令分别登陆阿里云和华为云的云主机公网IP,互相ping对端的内网IP,成功。
阿里云内网IP 172.31.193.70 ping 华为云内网IP 192.168.10.113 成功。
至此,阿里云与华为云之间的VPN专属通道设置完成。
关键思路:
组网图如下:
步骤1:将阿里云的主站点服务器导出镜像。
1、在阿里云上提交工单,“因公司测试需要,申请开通ECS镜像导出到本地的权限”。等待1-2天工作日,阿里云开通“镜像导出功能”后,会有邮件和短信通知。
2、创建镜像:打开阿里云ECS控制台,“实例列表”-“更多”-“镜像”-“创建自定义镜像”。
3、导出镜像:在ECS控制台中,“快照与镜像”-“镜像”可以看到刚才创建的镜像文件,点击“导出镜像”。导出镜像需要先开通阿里云OSS对象存储,设置公共读写权限,根据提示开通即可。
在ECS控制台,“任务管理”中可查看到镜像导出的进度。
4、下载镜像到本地。导出完成后,在对象存储OSS控制台可下载镜像到本地。
注意:ECS的系统盘镜像文件默认是40GB,家庭或办公室下载速度较慢,建议在华为云备站点服务器所在分区,临时新建一个按需使用的云主机,计算型4C8G,系统盘100G,带宽300Mb,按量付费,window系统。然后在该主机上下载阿里云镜像和上传到华为云,镜像上传完成后再删除该临时主机。预计下载时间为30分钟。
5、本地镜像上传到华为云。
在华为云上开通对象存储OBS,创建1个桶,存储类型为“标准”,公共读写权限,按量付费。将已下载的阿里云镜像上传到OBS的桶里面。上传完成在OBS的控制台看到阿里云的镜像。
步骤2:阿里云镜像转换成华为云镜像,开通云主机,作为备站点。
1、阿里云镜像转换成华为云镜像。 进入华为云镜像服务IMS的控制台,“创建私有镜像”-“系统盘镜像”-“镜像文件”,在对象存储中选中从阿里云主机的镜像。
2、导入过程大约30分钟(包含镜像上传和格式转换),然后使用此镜像“申请服务器”,在服务器购买页面,注意选择和华为云mysql所在的节点/分区一致。
3、为服务器的安全组的入口规则添加网站默认的80端口。
添加方法:网络控制台-“安全组”-“安全组规则”-“入口”-“添加规则”。
4、使用华为云服务器的公网地址访问系统,成功,说明阿里云的网站系统成功复制到华为云上。
5、分别登陆华为云和阿里云的主机,查看wordpress网站配置文件,确认通过内网访问的都是阿里云数据库的内网地址。
至此通过阿里云镜像在华为云上开通云主机,备站点部署起业务成功。
关键思路:
组网图如下:
步骤1:将阿里云数据库复制到华为云数据库。
1、购买华为云数据库 RDS for mysql。与阿里云mysql相同的5.7版本,按需模式,选择前面所在的VPC内。
2、将华为云VPN所属VPC的子网192.1168.10.0/24 添加到阿里云mysq的白名单中,这样就允许华为云“数据复制服务”实例能访问阿里云mysql数据库。
3、创建华为云数据复制服务DRS,在华为云控制台-“服务列表”-“数据复制服务DRS”-“在线迁移管理”-“创建迁移任务”,在创建页面选择网络类型为“VPN、专线网络”,目标数据库实例为华为云上的mysql。
4、设置源数据库(阿里云mysql)的参数和华为云mysql数据库参数,使用内网地址和最高权限账户。
5、下一步,选择迁移模式为“全量+增量”,迁移对象为“全部迁移”。
6、下一步,预检查出现阿里云和华为云的mysql参数SQL_MODE不一致,需要手工设置与阿里云相同的参数。
7、在mysql数据库控制台,“实例管理”-打开实例-“参数修改”-搜索“sql_mode”-删除参数“NO_ATUO_CREATE_USER”和“STRICT_ALL_TABKES”。
8、修改完参数后,重启数据库。在mysql实例列表-“更多”-“重启实例”
9、在数据服务DRS重新启动预检查,预检查出现阿里云和华为云的mysql参数SQL_MODE不一致,需要手工设置预阿里云相同的参数。
10、在mysql数据库控制台,“实例管理”-打开实例-“参数修改”-搜索“INNODB_STRICT_MODE”,设置该参数由“ON”变成“OFF”。
修改完成后,重启数据库实例。
11、在数据服务DRS重新启动预检查,通过。在数据服务DRS重新启动预检查。
12、选择立即启动
13、迁移完成,在控制台查看“迁移进度”。
至此,主站wordpress网站中的数据,从阿里云mysql数据库全部复制到华为云mysql。
步骤2:对比阿里云mysql和华为云mysql数据内容,验证两端数据是一致的。
方法1:华为云数据复制服务DRS自带对比工具
1.1、数据复制服务DRS自动进行“对象级对比”,对比结果为一致。
1.2、抽样对比数据表内的数据。
在数据复制服务DRS控制台页面中,“迁移对比”-“数据级对比”-“创建对比任务”-“内容对比”-“立即对比”-选择数据库“myblog”中的表“wp_comments”进行对比。
数据对比结果一致。
方法2:使用华为云数据管理服务DAS进行对比。
在数据管理服务DAS控制台页面中,“创建连接”,登陆华为云mysql的数据库。
在数据库“myblog”的表“wp_comments”中看到主站新增的文章评论“挑完水去劈材烧火”。
方法3:第三方对比工具beyond compare进行2个数据表内容的对比。
华为云数据库文件导出:
数据管理服务DAS控制台-“导入.导出”-文件类型“CSV”-“第一行是属性”,导出数据库“myblog”的表“wp_comments”为*.csv的表格文件。
阿里云数据库文件导出:
数据管理服务DMS控制台-“数据方案”-“导出”-“新增导出任务”,导出数据库“myblog”的表“wp_comments”为*.csv的表格文件,字符集是utf8,勾选属性行。
对比结果,两个表的数据完全一致。
至此,使用华为云数据服务服务DRS从阿里云mysql数据库复制到华为云mysql成功,数据一致。
步骤4:华为云上备站点使用华为云的备份数据库,运行网站系统。
1、登录华为云主机,修改wordpress配置文件,将所访问的数据库地址从阿里云mysql修改为华为云mysql。
2、在数据库和云主机所在的VPC 安全组中,设置本子网内部能够访问数据库端口“3306”。
3、通过阿里云主站点http://47.104.201.xx/wordpress/访问,新增一篇博客“吃瓜群众也有可爱的一面”。然后登陆华为云备站点http://139.159.134.xxx/wordpress/,成功地显示“吃瓜群众”可爱的一面,说明阿里云数据库的更新数据已自动同步到华为云的数据库上。
至此,华为云上的备份网站和备份数据库可对外提供正常业务。
关键思路:
通过域名解析系统,分别将域名解析到主站点(阿里云)和备站点(华为云),可设置流量分发比例为全部在阿里云上,或者50%在阿里云上,50%在华为云上。
组网图如下:
前置条件:已购买了域名,并完成了实名认证。
阿里云域名购买入口:https://wanwang.aliyun.com/
华为云域名购买入口:https://www.huaweicloud.com/product/domain.html
本文在实验前已完成域名认证和备案。
步骤1:购买阿里云解析DNS
1、购买阿里云解析DNS服务
通过云解析DNS将网站访问流量按比例分流到两个云平台,核心功能是云解析的“网站监控”、“监控频率”和“最低TTL值”功能。本实验需在购买页面选择“网站监控”,将“监控频率”和“最低TTL”选择为最小值,其他选项按照成本最低方式选择。
步骤2:修改域名服务商的解析地址为阿里云服务器
目前提供域名购买的平台,在百度上可以查到很多。域名购买和域名解析可以在不同的云平台上进行。登陆购买域名服务上的网站,将域名解析服务器改为阿里云的DNS地址:vip1.alidns.com和vip2alidns.com。修改方法参考
步骤3:域名解析到阿里云主机和华为云主机
1、在阿里云域名解析控制台-“域名解析列表”-“解析设置”中,添加2条记录,分别是华为云和阿里云安装wordpress主机的公网IP。根据业界的最佳实践设置TTL时间为1分钟,考虑因素:宕机检测。
2、在阿里云域名解析控制台-“域名解析列表”-“网站监控”,配置域名监控,自动检测华为云和阿里云主机是否正常。
3、在阿里云域名解析控制台-“域名解析列表”-“流量管理”中,开通“全局流量管理”。为方便测试,先设置各50%。实际业务可能主站点80%,备站点20%。
4、【可选操作】如已开通企业认证的账户,可免费使用6个月的全局负载均衡。(具体以阿里云活动为准)
步骤4:测试域名解析阿里云主机和华为云主机的IP。
1、在测试电脑(如笔记本)ping 域名,查看解析到哪个IP。每次ping需要先清除测试电脑上的DNS解析缓存。测试命令“ipconfig /flushdns & ping www.域名地址”
2、由于移动/联通/电信网络缓存了DNS解析信息,在测试电脑(如笔记本)上通过ping命令,不能快速看到域名是否在两边切换。
3、使用第三方多地域多IP检测工具(http://ping.chinaz.com/),验证域名自动解析到华为云和阿里云的IP上。测试结果如下:流量如上述设置平均分发到阿里云和华为云,TTL切换时间在1分钟以内。即单边云平台主机宕机后,1分钟内将原平台承担的业务切换到另一个云平台上。
至此,阿里云和华为云共同搭建了一个跨地域、跨云平台的集群双活网站。
关键思路:
组网图如下:
步骤1、配置华为云内主机集群负载均衡。
1、华为云控制台-“服务列表”-“网络”-“弹性负载均衡”-“购买增强型负载均衡”,选择“负载均衡器”和网站主机在同一个子网内,并新申请一个公网IP,带宽根据实际需要选择“按带宽计费”或“按流量计费”。生产环境建议选择“按带宽计费”,个人学习选择“按流量计费”。
2、配置监听器,即监控集群内多台主机,哪些协议和哪些端口的访问量进行业务分流。
点击负载均衡实例-“添加监听器”,监听访问网站的80端口,并且选择“加权最小连接”的分配策略,将业务分发给最空闲主机。
3、将网站主机纳入监听列表,监听网站80端口。
4、使用阿里云拷贝至华为云的镜像,再开通一台主机。
5、参考上述方法,将新主机添加到负载均衡器的监控对象中。
6、在阿里云解析控制台,新增一条记录,将域名解析到华为云负载均衡器的公网IP,并把原来解析到华为云和阿里云主机的记录暂停。
操作方法:阿里云解析DNS控制台-域名解析-域名解析列表。
步骤2:测试负载均衡基本功能
测试思路:
1、在华为云上负载均衡实例内监控2台网站主机,通过访问域名,确认流量分发到2台主机上了。
2、为观察方便,2台主机的二级域名分别显示不同的图片。实现方式是通过php代码判断如果是主机1,就显示图片2,否在显示图片2。
测试准备:
1、准备两张jpg格式的图片,分别命名host1.jpg和host2.jpg
2、网站主机为centos系统,前面已经安装过php运行环境。编写一个test.php测试网页,根据主机内网地址不同来显示不同的图片。轻量级的PHP代码调试工具参考:http://www.runoob.com/try/runcode.php?filename=demo_intro&type=php
本次测试代码片段如下:需要借助文本编辑工具notepad++,将test.php的编码格式由UTF_8转换为ANSI编码。
";
echo '';
}
else
{
echo "当前运行wordpress的主机内网IP:".$_SERVER['SERVER_ADDR']."
";
echo '';
}
?>
3、通过xftp(附链接地址)工具将host1.jpg、host2.jpg、test.php分别上传到2台网站主机的目录“/var/www/html/”下面。然后用xshell(附链接地址)工具登陆2台主机的命令行,执行命令,给test.php开通可执行权限和检查是否有乱码,如有乱码使用vim命令进行编辑修改或者通过工具MobaXterm将文件编码转换为unix类型。vim命令参考。
chmod +x test.php
cat /var/www/html/test.php
4、临时将华为云主机的所有公网弹性IP从云主机上解除绑定。测试电脑(笔记本)上ping 域名,当前域名流量全部发送到华为云负载均衡器上。
操作方法:华为云网络控制台-弹性公网IP-解除绑定。
4、打开浏览器,分别测试域名 http://xxx.xxx.xxx.xxx/test.php,并执行刷新操作,发现每次刷新显示不同的图片,确保流量已经均分到2台服务器上。
5、清理测试环境,恢复生产环境。
(a)将华为云负载均衡监控的第2台主机移除监控,即只监控初始主机即可,并根据需要是否删除来节省费用。
(b)恢复阿里云解析,将域名解析到阿里云主机和华为云负载均衡器,删除对华为云主机的解析。
至此,华为云负载均衡器,成功将网站访问流量分发到华为集群内不同的主机。
原理:通过华为云弹性伸缩器,检测CPU利用率最大值大于50%时,自动增加主机数量。CPU平均利用率小于50%时,自动减少主机梳理。
前置操作:压力测试网站,验证测试方法可以将华为云主机的CPU利用率超过50%。
网站压测工具选型:
工具 |
描述 |
选型结果 |
选型依据 |
Jmeter |
Apache JMeter是Apache组织开发的基于Java的压力测试工具,含Windows界面。 |
放弃 |
|
阿里云PTS |
阿里云的网页测试工具,服务方式提供。 |
放弃 |
收费高,在阿里云和华为云之间走公网测试,网络成为瓶颈。 |
华为云APTS |
阿里云的网页测试工具,服务方式提供。 |
放弃 |
服务本身免费,需要手工创建集群,适合超高压测场景,不适合本次快速测试需求。 |
AB |
apache自带网页压测工具 |
选择 |
Linxu版和Windows版,免费,操作简单,适合快速测试。
|
测试原理:
测试工具模拟压测单台主机:
步骤1:下载并配置AB工具
windows版:详情见链接1。win+x,选择“命令提示符(管理员)”来执行AB命令,否在会提示无管理员权限。
Linux版:前述步骤搭建Apache环境时,已包括AB工具。在命令行执行ab即可。
步骤2:编写施压脚本,将如下代码另外为test2.php文件,需要借助文本编辑工具notepad++,将test2.php的编码格式由UTF_8转换为ANSI编码
";
}
?>
步骤3:将test2.php拷贝到云主机的/var/www/html路径下面,登陆云主机命令行,给测试网页添加可执行权限。
>cd /var/www/html
>chmod +x test2.php
cd /var/www/html
chmod +x test2.php
步骤4:在华为云主机上执行ab命令,分别对云主机和负载均衡器的内网地址进行压测,观察是否能够将主机的CPU利用率跑满100%。备注:下面IP地址根据实际情况更换成公网地址或内网地址均可。
ab -n 100000 -c 100 139.159.134.129/test2.php
提醒:关于伸缩配置、伸缩组、伸缩实例的之间的关系,请参考3.8章节“弹性伸缩介绍”。
====下面开始为华为云服务器配置如何根据CPU利用率飙升而自动增加主机====
步骤1:配置弹性伸缩器
1、创建弹性伸缩组
登陆华为云控制台-列表服务-弹性伸缩-创建伸缩组。按照如下截图填写对应参数,其他默认参数。最多扩展到3台主机,期望实例数和最小实例数设置为0台。
2、下一步,创建弹性伸缩配置,按照如下截图填写对应参数,其他默认参数。
确认配置正确,提交。
3、将云主机加入到伸缩组中,进行监控其CPU和内存利用率等参数。
4、设置网站的基础运行主机“实例保护”,不会被自动释放,保证华为云至少有一台主机运行网站备份站点。
5、添加自动增加主机的“伸缩策略”。每隔5分钟检查一次云主机的CPU利用率,连续2次出现CPU利用率最大值大于80%,自动增加1台主机,直到增长到预设的最大主机数量。
6、添加自动释放主机的“伸缩策略”。每隔5分钟检查一次云主机的CPU利用率,连续2次出现CPU利用率的平均值小于50%,自动释放1台主机,直到预设的主机最小数量。
至此,弹性伸缩配置完成。
步骤2:网站压力测试,检验弹性伸缩功能,是否会随着流量压力自动增加和释放云主机。
1、检查配置是否ok
(a)临时调整DNS解析,将域名解析到华为云,便于测试华为云在大压力是否自动增加主机。
(b)从个人笔记本访问域名www.chenxiaochao.top/test.php成功,证明域名解析、网络负载均衡器、网站主机全部正常。
2、购买临时压测的主机
为保证压测过程,网络不会成为瓶颈,我们华为云主机所在的同一内网中,临时开通一台通用型8C16G的云主机,操作为centos6.8,用于压测网站。登陆压测主机安装Apache HTTP服务。
yum -y install httpd
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
service httpd start
chkconfig httpd on
ab -n 100000 -c 100 www.chenxiaochao.top/test2.php
3、对网站域名进行施压。根据前置的CPU利用率判断,自动增加了2台云主机
根据前面预设显示的脚本,为便于验证效果,基础主机显示图片1,自动增加的2台主机显示图片2,结果符合预期。
4、停止压测,观察到自动增加的2台主机,先后被自动释放掉,节省成本。
自动移除第一台主机如下。
自动移除第二台主机如下。
CPU利用率和主机个数呈现正比例关系。
从测试主机CPU利用率的升高和下降曲线,触发了云主机自动增加2台,又自动释放主机2台,符合预期。
至此,借助华为云搭建一个最低成本的跨云平台跨地域的容灾双活系统完成。
经过上述步骤,阿里云和华为云已成一个双活架构,阿里云作为已运行的生产环境保持配置不变,华为云通过四项核心服务,分别是镜像服务IMS、VPN网络、数据复制服务DRS、弹性伸缩服务AS,实现低成本又高度灵活的容灾和备份效果。该架构同样适合华为云与自建数据中心、IDC托管、亚马逊云、微软云、腾讯云等云平台搭建容灾系统。
本文根据工作需要和个人兴趣,分别研究了阿里云和华为云平台的云主机、镜像、mysql数据库迁移、域名、DNS域名解析系统、VPN专线、负载均衡、弹性伸缩,构建了一个具备跨云平台跨地域的网站容灾架构。
业务系统的高可靠设计和建设,是一个企业IT系统伴随着业务侧不断提出新要求的背景下,从简单到复杂,不断完善的过程。整个过程涉及到信息化管理团队的技术储备、软件开发团队对云架构的认知和接受,以及高层领导对于建设容灾系统的决心。作为技术人员,其核心价值在于系统级故障发生前做预防性检查和防范,故障发生时能够快速恢复业务,故障后能够给出解决办法并落地,避免后续重犯错误。
路难走,亦远行,与君共勉。
本文初稿于2018年中秋节完成。