Alibaba Cloud Certified Associate - Cloud Computing
Author: Qiangwei Luo (OVEA)
致力于打造公共、开放的以数据为中心的云计算服务平台,借助技术创新,不断提升计算能力与规模效益,将云计算变成真正意义上的公共服务,为下一代信息经济构建新的基础设施。
当规模越大时,云服务的价格将会越来越低。
灰色的模块是阿里云的一个平台(飞天?),将一个数据中心变为巨大的计算机。
上面都是安装的软件,ECS、OSS、RDS、ODPS……
最上层则是最终的应用。
云监控、DDos高防IP、安骑士都是免费保护用户安全的。
SLB作为流量入口,将流量分配流量到不同的ECS服务器上。
OSS可以存放图片、视频。
结构化类型的数据可以放入RDS中。
云服务器(Elastic Compute Service, ECS)是处理能力可弹性伸缩的计算服务,帮助客户快速构建更稳定,安全的应用,提升运维效率,降低IT成本
云服务器,不必像传统服务器一样另外购备安全设施。
负载均衡(Server Load Balabcer, SLB)是对多台云服务器进行流量分发的负载均衡服务,通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。
按量付费
云数据库(Relational Database Service, RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于飞天分布式系统和高性能存储,支持MySQL、SQL Server、PostgreSQK和PPAS(高度兼容Oracle)引擎,并且提供了数据库的容灾、备份、恢复、监控、迁移等。
对象存储(Object Storage Service,OSS),是阿里云对外提供的海量、安全和高可靠的云存储服务。RESTFul API的平台无关性,容量和处理能力的弹性扩展
还可以对图片打水印之类的操作~
云服务器(Elastic Compute Service,ECS)是一种简单高效、处理能力可弹性伸缩的计算服务,帮助客户快速构建更稳定、安全的应用,提升运维效率,降低IT成本,使客户更专注与核心业务创新。
ECS(云服务器)是阿里云产品体系中,最基础的计算服务,通常作应用程序的运行环境,其最重要的特点是弹性。
弹性是指按需扩展
基于阿里云自主研发的大规模分布式计算系统,通过虚拟化技术整理IT资源,为各行业提供互联网基础设施服务设备。
应用程序的基础运行环境
最简化的弹性架构
ECS最重要的特点是弹性,支持垂直和水平扩展两种能力
ECS是由多个并列,又相互关联的产品概念组成,包括
还有相关的逻辑位置概念:
一个地域有多个可用区。
实例(instance),是ECS产品最核心的部分,由CPU、内存、系统盘和运行的操作系统组成。
实例是ECS最基本的资源,只有基于实例,才能使用网络、存储、快照等其他资源。
阿里云提供了两个实例系列
实例系列1采用Intel Xeon CPU、DDR3内存
实例系列2采用Intel Xeon E5-2680
v3(Haswell)CPU、DR4内存,并默认为I/O优化实例,同时增加了一些新的指令集,使整数和浮点运算的性能翻倍,整体计算能力更强。
系列Ⅱ | 通用型n1 | 通用型n2 | 通用型n3 |
特点 | cpu:内存为1:2 最大规格64G内存 |
cpu:内存为1:4 最大规格128G内存 |
cpu:内存为1:8 最大规格128G内存 |
适用场景 | 小规模适合小型Web应用、中小型数据库 大规格适合大型多人在线游戏、数据分析和计算等场景 |
适合需要大量内存操作、插好和计算的场景 |
包年包月
按量计费
基于飞天分布式文件系统盘古,每份数据存储三个拷贝分布在不同的交换机下、不同的物理服务器上。具有极高的数据可靠性,支持单独挂载。根据存储介质不同,分为三大类
快照就是磁盘数据在某一个时间点的拷贝
快照分为手动快照和自动快照两大类
快照的额度:每块磁盘拥有64个快照,包括手动快照和自动快照,达到额度上限后,如果要继续创建快照,系统会自动将最早的自动快照删掉
快照机制
ECS的快照是增量快照,只有两个快照之间的变化数据块,才会倍拷贝备份出来。
ECS镜像是ECS实例可选择的运行环境的模板,包括操作系统和预置的软件和配置。镜像的本质是一个系统盘快照
云服务ECS提供了四种方式获取镜像:
可以把限行环境的镜像文件导入到ECS中生存一个自定义镜像,还可以把自定义镜像复制到其他地域,实现环境和应用的跨地域部署。
RDS设计目标
RDS可靠性保证
支持的数据库类型和版本
数据库类型 | 版本 | 支持的存储引擎 | 支持的字符集/排序规则 |
---|---|---|---|
MySQL | 5.5 5.6 |
InnoDB TokuDB |
utf8 gbk latin1 utf8mb4(完整的UTF-8,仅5.6和以上版本支持) |
SQL Server | 2008 R2 | Chinese_PRC_CI_AS Chinese_PRC_CS_AS SQL_Latin1_General_CP1_CI_AS SQL_Latin1_General_CP1_CS_AS Chinese_PRC_BIN |
|
PostgreSQL | 9.4 |
专业的数据库管理平台DMS
DMS不仅仅是为RDS定制的数据库管理平台,还可以使用户通过浏览器即可安全、方便的进行数据库管理和维护
轻松实现数据回调
RDS能够根据备份文件将数据库恢复至7日内任意时刻
专业的数据库优化建议
RDS提供只管的慢SQL分析报告和完整的SQL运行报告,并提供如主键检查、索引检查等多种优化建议
完善的监控体系
RDS展示近20种性能资源监控视图,可对部分资源项设置阈值报警,并提供WEB操作、SQL审计等多种日志。
功能点 | RDS | 自建数据库 |
---|---|---|
服务可用性 | 99.95%(条件?) | 双交换机网络环境,电源输入,高配置主机,双机主从复制,故障恢复,VIP漂移,数据备份,自动数据还原等一系列配套设施需要自行保障 |
数据可靠性 | 99.9999%(条件?) | 自行搭建主从复制,自建RAID,MySQL Patch维护等均需自行保障 |
系统安全性 | 防DDos攻击,流量清洗;及时修复各种数据库安全漏洞 | 自行部署,价格高昂;自行修复数据库安全漏洞 |
数据库备份 | 自动备份 | 自行实现,但需要寻找备份存放空间以及定期验证备份是否可以恢复 |
基础运维 | 无需基础运维(如安装机器、部署数据库软件、机器损坏等维护工作) | 需聘请运维工程师维护,花费大量人力成本 |
数据库优化 | 提供资源报警、性能监控图、数据库优化建议、SQL运行报告、慢查询分析等数据库优化功能 | 需招聘专职DBA来维护,花费大量人力成本 |
部署扩容 | 即时开通,快速部署,弹性扩容,按需开通 | 需硬件采购、机房托管、部署机器等工作,周期较长 |
资源利用率 | 按实际结算,100%利用率 | 需考虑峰值,资源利用率低 |
DMS(原iDB Cloud)是一款访问管理云端数据的WEB服务,支持MySQL、SQL Server、PostgreSQL和ADS等数据源,覆盖RDS、ADS和万网等阿里云环境。
DMS提供了数据管理、对象管理、数据流转和实例管理功能。
数据迁入RDS
RDS提供专业工具和向导式迁移服务来帮助用户将数据迁入RDS
Relational Database Service,关系数据库服务
RDS for SQL Server
不仅覆盖了微软的License支持特性,而且附带高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用(不用额外支付版权费)
PostgreSQL是是全球最先进的开源数据库
PPAS(Postgre Plus Advanced Server)
在物理存储时代,当用户数量和访问量急剧上升地时候,需要进行扩容处理。
扩容容量大可能会浪费,扩容后容量小可能不够用。
对象存储服务(Object Storage Service,OSS)是阿里云对外提供地云存储服务。RESTFul API的平台无关系,容量和处理能力的弹性扩展,按实际容量付费真正使您专注于核心业务。
OSS是一种面向互联网的分布式存储服务,用户可以通过API或者Web页面在任何应用、任何时间、任何低点上传和下载数据,帮您轻松应对海量数据的存储和访问,将存储的难题交给OSS解决。
OSS | 自建服务器存储 | |
---|---|---|
服务可用性 | 99.90% | 自建服务器可用性低 |
数据可靠性 | 三重备份,可靠性99.99999999% | 需自行研发备份策略,为达到同步可靠性需增加更多备份服务器成本 |
系统安全性 | 提供对称加密用户验证,签名权限控制以及防盗链功能;强大的安全防护系统,抵御“洪水”攻击 | 自行部署,价格高昂 |
网络资源 | BGP多线(中国电信、联通、移动、教育网等)骨干网络接入,全国各地流畅访问;无带宽限制,按实际用量付费 | 单线或双线接入速度慢,有带宽限制,峰值时需人工扩容 |
存储能力 | 文件存储容量无限 | 服务器存储受硬盘容量限制,需人工扩容 |
文件处理能力 | 支持海量数据处理,1个与数十亿个文件处理能力无差别 | Windows系统一个目录下仅支持6万多个文件,Linux系统目录下支持3万多个文件;当一个目录存储文件过多时,IO性能会直线下降 |
维护成本 | 无需运营 | 需招聘专职运维人员,花费大量人力成本 |
部署扩容 | 无需规则,按实际使用自动扩容,弹性伸缩 | 需硬件采购、机房托管、部署机器等工作,周期较长 |
资源利用率 | 按实际结算,100%利用率 | 考虑峰值,资源利用率很低 |
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。
云盾.WAF的发展历程
其他平台和物理机也可以安装
本实验会自动创建一台ECS实例。首先,远程登陆ECS实例,并部署应用。然后,登陆管理控制台,并对这台ECS实例进行管理操作。
完成此实验后,可以掌握的能力有:
ECS的基本概念
远程访问ECS实例,部署应用。
使用管理控制台对ECS进行基本操作:重置ECS实例登陆密码并重启ECS实例。
了解Linux的基本操作命令,比如添加和保存文件的命令
云服务器(Elastic Compute Service, 简称ECS),是一种简单高效,处理能力可以弹性伸缩的计算服务。ECS的相关术语说明如下:
--实例(Instance):是一个虚拟的计算环境,由CPU、内存、系统盘和运行的操作系统组成;ECS实例作为云服务器最为核心的概念,其他资源,比如磁盘、IP、镜像、快照等,只有与ECS结合后才具有使用意义。
--地域(Region):指ECS实例所在的物理位置。地域内的ECS实例内网是互通的,不同的地域之间ECS实例内网不互通。
--可用区(Zone):指在同一地域内,电力和网络互相独立的物理区域。
--磁盘(Disk):是为ECS实例提供数据块级别的数据存储。可以分为4类: 普通云盘、SSD云盘、高效云盘和本地SSD磁盘
--快照(Snapshot):是某一个时间点上某个磁盘的数据拷贝。
--镜像(Image):是ECS实例运行环境的模板,一般包括操作系统和预装的软件。
--安全组(Security Group):是一种虚拟防火墙,具备状态检测包过滤功能。每个实例至少属于一个安全组。同一个安全组内的实例之间网络互通,不同安全组的实例之间默认内网不通,但是可以授权两个安全组之间互访。
太过简单,因此无。
本实验将首先指导用户在ECS中对已创建的数据盘进行分区并挂载到ECS上,从而可以使用数据盘进行文件存储;然后,用户创建ECS数据盘的快照,并使用快照进行磁盘的回滚。介绍如何创建自定义镜像。
完成此实验后,可以掌握的能力有:
对创建的数据盘进行分区,并挂载到ECS中
创建ECS数据盘的快照,并使用快照对数据盘进行回滚
创建ECS系统盘的快照,并使用快照创建ECS的自定义镜像
1.可以熟练的使用Linux基本命令进行操作
2.已完成SL040 ECS之初体验
阿里云ECS实例的云盘提供数据块级别的数据存储,采用三副本的分布式机制,为 ECS 实例提供 99.9999999% 的数据可靠性保证。ECS云盘既可以单独使用,又可以组合使用,从而满足不同应用场景的需求。
ECS云盘分为三种:普通云盘,高效云盘和SSD云盘。
普通云盘:采用机械磁盘作为存储介质
高效云盘:采用固态硬盘与机械硬盘的混合介质作为存储介质
SSD云盘:
阿里云ECS产品提供快照功能,所谓快照,就是保留某个时间点上的系统数据状态,数据盘的快照用于数据备份,系统盘的快照用于制作镜像。快照使用增量的方式,两个快照之间只有数据变化的部分才会被拷贝。推荐用户在以下业务场景中使用快照:
系统盘、数据盘的日常备份,用户可以利用快照定期的对重要业务数据进行备份,来应对误操作、攻击、病毒等导致的数据丢失风险。
更换操作系统,应用软件升级或业务数据迁移等重大操作前,用户可以创建一份或多份数据快照,一旦升级、迁移过程中出现任何问题,可以通过数据快照及时恢复到正常的系统数据状态。
生产数据的多副本应用,用户可以通过对生产数据创建快照,从而为数据挖掘、报表查询、开发测试等应用提供近实时的真实生产数据。
创建快照时,服务器的状态只能为“运行中”或“已停止”。阿里云ECS实例的快照提供两种模式:
自动快照,用户可以通过创建自动快照策略,自定义快照的创建时间、重复时间和保留时间等参数,阿里云系统将定期为指定的磁盘,自动创建快照。
手动快照,用户根据需求,创建磁盘快照。但是,通过手动创建的快照,不会主动删除,会一直保留。
镜像是云服务器 ECS 实例运行环境的模板,一般包括操作系统和预装的软件。您可以使用镜像创建新的 ECS 实例和更换 ECS 实例的系统盘。目前,阿里提供四种可供使用的镜像类型:
连接到ECS服务器。
查询当前系统中的数据盘
fdisk -l
对数据盘进行分区
fdisk /dev/vbd
查询当前系统磁盘信息
fdisk -l
对数据盘进行格式化
mkfs.ext4 /dev/vdb1
挂载磁盘到linux中
mkdir -p /extdisk/0000
mount /dev/vdb1 /extdisk/0000
查看磁盘的使用情况
df -h
先在/extdisk/0000写入一些数据备用
echo "Hello , I'm robot~" > /extdisk/0000/lab.txt
进入ECS实例管理页面创建快照
删除文件/extdisk/0000/lab.txt
rm /extdisk/0000/lab.txt
使用快照回滚进行恢复
本实验将提供一台阿里云RDS数据库,并通过阿里云的管理控制台进行如下操作:
1)创建RDS数据库;
2)创建RDS数据库帐号;
3)将测试数据导入到新建RDS数据库;
4)管理并查看导入数据的信息以及诊断报告;
完成此实验后,可以掌握的能力有:
RDS的基本概念;
创建数据库和数据库账号;
导入本地数据;
获取诊断报告
了解数据库的基本结构
阿里云关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和高性能存储,RDS 支持 MySQL、SQL Server、PostgreSQL 和 PPAS(Postgre Plus Advanced Server,一种高度兼容 Oracle 的数据库)引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。
当RDS实例创建成功后,默认提供 内网链接地址 ,用户可以通过 数据传输服务 或 相同地域的ECS实例 连接到RDS实例。若要通过本地服务器 或 不同地域的ECS实例 连接到 RDS实例,用户需 申请外网地址 ,如下图所示:
在使用RDS 数据库之前,需要在 RDS 实例中创建账号。同一实例下的数据库共享该实例下的所有资源,其中:
> MySQL 版实例和 SQL Server 版实例最多可以创建 500 个账号
> PostgreSQL 版实例和 PPAS 版实例没有账号个数限制
> RDS for SQL Server 2012 只能创建初始账号
注意事项:
1)分配数据库账号权限时,请按最小权限原则和业务角色创建账号,并合理分配只读和读写权限。必要时可以把数据库账号和数据库拆分成更小粒度,使每个数据库账号只能访问其业务之内的数据。如果不需要数据库写入操作,请分配只读权限。
2)请设置数据库账号的密码为强密码,并定期更换
创建数据库账号:
1)数据库账号:由 2~16 个字符的小写字母,数字或下划线组成、开头需为字母,结尾需为字母或数字,如 lab_user 。
2)授权数据库:该账号授权的数据库,选取左边的 未授权数据库 ,单击 授权,添加数据库到 已授权数据库 中。如果尚未创建数据库,该值可以为空。您可以通过 已授权数据库 右上角的权限设置按钮将该账号下的数据库权限批量设置为 全部设读写 或者 全部设只读。
3)密码:该账号对应的密码,由 6~32 个字符的字母、数字、中划线或下划线组成,如 password4example。
确认密码:输入与密码一致的字段,如 password4example,以确保密码正确输入。
4)备注说明:可以备注该账号的相关信息,便于后续账号管理,最多支持 256 个字符(1 个汉字等于 3 个字符)。
用户可以通过 RDS 管理控制台 创建数据库。数据库名称实例内唯一,实例间互不影响。同一实例下的数据库共享该实例下的所有资源,其中:
> MySQL 版实例最多可以创建 500 个数据库
> SQL Server 2008 R2 版实例最多可以创建 50 个数据库
> PostgreSQL 版实例和 PPAS 版实例没有数据库个数限制
1)数据库(DB)名称:由 2~64 个字符的小写字母、数字、下划线或中划线组成,开头需为字母,结尾需为字母或数字。
2)支持字符集:设置数据库的字符集:utf8、gbk、latin1 和 utf8mb4。
3)授权账号:选择该数据库授权的账号。如果尚未创建账号,该值可以为空。
4)账号类型:选择 授权账号 后可见,设置该数据库授权给 授权账号 的权限,可以设置为 读写 或者 只读 。
5)备注说明:可以备注该数据库的相关信息,便于后续数据库管理,最多支持 256 个字符(1 个汉字等于 3 个字符)。
此处选择Standard Account(普通账户)
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。首先,远程登陆到 源数据库 ,查看源数据库中的信息。然后,登陆到阿里云管理控制台,建立目标数据库。最后,使用 数据传输 服务,实现ECS自建数据库迁移到目标数据库RDS。
完成此实验后,可以掌握的能力有:
建立RDS数据库
通过数据传输服务,将ECS上自建MySQL数据库迁移到RDS数据库。
开始实验后,系统会自动去创建一台Linux ECS。其中,创建的ECS中已经部署了web应用和OSS python SDK。在本实验中,已创建的ECS作为web服务器,浏览器中直接访问其IP地址会显示包含四个小图片的页面,并且四个图片都保存在ECS本地。通过调用OSS API将四个图片上传到OSS中,同时删除保存在ECS本地的四个图片,此时访问ECS IP将会看到页面中没有图片可以显示。为了在页面中显示原有的四个图片,实验中需要修改web应用服务器根目录下默认访问页面中的图片地址,将图片地址修改为四个图片分别在OSS中的访问地址。
完成此实验后,可以掌握的能力有:
通过阿里云管理控制台管理对象存储服务OSS
在实际的web开发中使用对象存储服务OSS存储页面中的图片
调用OSS API上传图片
掌握Linux基本命令;
了解OSS的基本概念
阿里云对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。用户可以通过调用API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过用户Web控制台对数据进行简单的管理。OSS适合存放任意文件类型,适合各种网站、开发企业及开发者使用。
阿里云OSS图片处理服务(Image Service,简称 IMG) ,是阿里云OSS对外提供的海量、安全、低成本、高可靠的图片处理服务。用户将原始图片上传保存在OSS上,通过简单的 RESTful 接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。图片处理服务提供图片处理接口,图片上传请使用OSS上传接口。基于IMG,用户可以搭建出跟图片相关的服务。图片服务处理的图片来自于OSS,所以图片的上传实际是上传到OSS的同名Bucket中。
在真实的工作场景中,一般将图片、音频、视频等存储到OSS服务中,这样可以极大的提高用户的页面访问速度。
vim /alidata/www/default/cfg.json
根据自己的情况填写以下信息
id:云中沙箱 实验资源 分配的 AK ID 值
secret:云中沙箱 实验资源 分配的 AK Secret 值
endpoint:请根据下面的 OSS地域与Endpoint对应关系表,输入 实验资源 所分配 地域 相对应的 外网Endpoint 。例如:分配的 地域
为 华东1(杭州),则输入 oss-cn-hangzhou.aliyuncs.com。
bucket:云中沙箱 实验资源 分配的 OSS资源 Bucket 名称
object_dir:云中沙箱 实验资源 分配的 OSS资源 Object路径。
OSS地域与外网Endpoint对应关系表:
地域 外网Endpoint 华东 1 (杭州) oss-cn-hangzhou.aliyuncs.com 华东 2 (上海) oss-cn-shanghai.aliyuncs.com 华北 1 (青岛) oss-cn-qingdao.aliyuncs.com 华北 2 (北京) oss-cn-beijing.aliyuncs.com 华南 1 (深圳) oss-cn-shenzhen.aliyuncs.com
python oss_upload.py 01.png
删除ECS中的图片资源文件
cd /alidata/www/default
rm -rf *.png
将index.html的图片访问信息修改为OSS的URL访问地址
实验开始后,系统会自动去创建一台Linux ECS。且ECS实例已经部署了OSS python SDK。用户可以使用OSS Python SDK来访问OSS服务,包括上传文件,下载文件,查看文件列表等。默认这些程序是写在一个脚本文件里,通过Python程序可以执行。OSS上传方式大致可以分为两类:简单上传和分块上传。本实验通过OSS的Python SDK,使用简单上传的方式实现小文件的上传和下载;最后指导您实现如何去删除OSS Bucket。
完成此实验后,可以掌握的能力有:
使用OSS python SDK来调用OSS API
掌握OSS简单上传的方式
掌握OSS分块上传的方式
使用OSS python SDK快速删除OSS Object
了解Linux的基本命令操作;
了解Python语言的基本使用方法;
阿里云对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。使用 OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种结构化或非结构化数据文件。以下的术语为OSS相关的基本概念:
用户可以通过调用API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过阿里云Web控制台对数据进行简单的管理。目前阿里云OSS支持如下几种语言版本的SDK调用API:Python SDK,Java SDK,Android SDK,iOS SDK,JavaScript SDK,.NET SDK,PHP SDK,Ruby SDK,C SDK,Go SDK,Media-C SDK。本实验中主要介绍如何使用Python SDK调用OSS API实现文件的简单上传,下载和删除等操作。
OSS作为对象存储提供商,常用的使用场景如下:
配置配置文件
cd aliyun-lab
vim configure.json
id-参数值为本实验中,实验资源 分配的AK ID; secret-参数值为本实验中,实验资源 分配的AK Secret; endpoint-参数值为本实验中,实验资源 的“地域”对应的“外网Endpoint”数值。比如:提供的“地域”为“华东 1(杭州)”,则选择“华东 1(杭州)”的“外网Endpoint”。
OSS 地域与外网 Endpoint 的对应关系如下表:
地域 外网Endpoint 华东 1 (杭州) oss-cn-hangzhou.aliyuncs.com 华东 2 (上海) oss-cn-shanghai.aliyuncs.com 华北 1 (青岛) oss-cn-qingdao.aliyuncs.com 华北 2 (北京) oss-cn-beijing.aliyuncs.com 华南 1 (深圳) oss-cn-shenzhen.aliyuncs.com
修改object_upload.py脚本
# -*- encoding:utf8 -*-
#Date: Fri. Feb 25th 2016
#Author: Tansy B.
import oss2
import json
import sys
__access_key = ''
__access_secret = ''
__oss_endpoint = ''
__bucket_name = '' #目标bucket名
__file_name = '' #本地文件,如果是在脚本相同的路径中,则只需填写文件名。否则,提供完整的文件路径。
__object_name = '' #上传的object名称
if __name__ == '__main__':
#判断输入的Access Key Id, Access key secret以及endpoint是否为空。
json_data = open('configure.json','r')
cfg = json.load(json_data)
if cfg['id'] =='' or cfg['secret'] == '':
print ('Please set up your access_key, access_secret')
sys.exit(1)
if cfg['endpoint'] == '':
print('Please enter your oss endpoint')
sys.exit(1)
#从configure.json中读取如下参数值:
__access_id = cfg['id']
__access_secret = cfg['secret']
__oss_endpoint = cfg['endpoint']
json_data.close()
#获取用户输入的bucket名称,并在bucket后增加AK的ID信息,避免出现bucket重复的情况
if len(sys.argv) < 4 :
print "Missing bucket, local file or object name!\n"
print "Usage: python object_upload.py \n"
print "For example: python object_upload.py lab lab.txt lab_object.txt"
sys.exit(1)
else:
__bucket_name = sys.argv[1]
__file_name = sys.argv[2]
__object_name = sys.argv[3]
#用于鉴权并连接OSS的Service和Bucket
auth = oss2.Auth(__access_id, __access_secret)
service = oss2.Service(auth,__oss_endpoint)
bucket = oss2.Bucket(auth, __oss_endpoint, __bucket_name)
#本地文件上传到oss bucket中,并重命名
print 'Start Upload ...'
#调用OSS API的put_object()上传文件
with open(__file_name,'rb') as fileobj:
bucket.put_object(__object_name, fileobj)
print 'You have successfully upload the file:'
print '--Bucket Name:', __bucket_name, '\n--Upload File Name:', __file_name, '\n--Object Name:', __object_name
执行脚本,上传文件到OSS
python object_upload.py <oss bucket名称> lab.txt <oss object路径>/lab_object.txt
修改下载脚本object_download.py
# -*- encoding:utf8 -*-
#Date: Fri. Feb 26th 2016
#Author: Tansy B.
import oss2
import json
import sys
__access_key = ''
__access_secret = ''
__service_endpoint = ''
__bucket_name = '' #目标Bucket名
__object_name = '' #Bucket中目标object名
__local_name = '' #下载到本地的文件名
if __name__ == '__main__':
#判断输入的Access Key Id, Access key secret以及endpoint是否为空。
json_data = open('configure.json','r')
cfg = json.load(json_data)
if cfg['id'] =='' or cfg['secret'] == '':
print ('Please set up your access_key, access_secret')
sys.exit(1)
if cfg['endpoint'] == '':
print('Please enter your oss endpoint')
sys.exit(1)
#从configure.json中读取如下参数值:
__access_id = cfg['id']
__access_secret = cfg['secret']
__oss_endpoint = cfg['endpoint']
json_data.close()
#获取用户输入的bucket名称,并在bucket后增加AK的ID信息,避免出现bucket重复的情况
if len(sys.argv) < 4 :
print "Missing bucket, local file or object name!\n"
print "Usage: python object_download.py
print "For example: python object_download.py lab lab_object.txt lab_local.txt"
sys.exit(1)
else:
__bucket_name = sys.argv[1]
__object_name = sys.argv[2]
__local_name = sys.argv[3]
#用于鉴权并连接OSS的Service和Bucket
auth = oss2.Auth(__access_id, __access_secret)
service = oss2.Service(auth,__oss_endpoint)
bucket = oss2.Bucket(auth, __oss_endpoint, __bucket_name)
#OSS bucket中的object下载到本地,并重命名
print 'Start download the object', __object_name, 'from bucket', __bucket_name
#调用OSS API的get_object_to_file()下载object
bucket.get_object_to_file(__object_name, __local_name)
print 'You have successfully download the object from the oss.'
下载文件
python object_download.py <oss bucket 名称> <oss object路径>/lab_object.txt lab_local.txt
修改object_delete.py脚本
# -*- encoding:utf8 -*-
#Date: Fri. Feb 26th 2016
#Author: Tansy B.
import oss2
import json
import sys
__access_key = ''
__access_secret = ''
__service_endpoint = ''
__bucket_name = '' #目标bucket名
__object_name = '' #删除object名
if __name__ == '__main__':
#判断输入的Access Key Id, Access key secret以及endpoint是否为空。
json_data = open('configure.json','r')
cfg = json.load(json_data)
if cfg['id'] =='' or cfg['secret'] == '':
print ('Please set up your access_key, access_secret')
sys.exit(1)
if cfg['endpoint'] == '':
print('Please enter your oss endpoint')
sys.exit(1)
#从configure.json中读取如下参数值:
__access_id = cfg['id']
__access_secret = cfg['secret']
__oss_endpoint = cfg['endpoint']
json_data.close()
#获取用户输入的bucket名称,并在bucket后增加AK的ID信息,避免出现bucket重复的情况
if len(sys.argv) < 3 :
print "Missing bucket, local file or object name!\n"
print "Usage: python object_delete.py
print "For example: python object_delete.py lab lab_object.txt"
sys.exit(1)
else:
__bucket_name = sys.argv[1]
__object_name = sys.argv[2]
#用于鉴权并连接OSS的Service和Bucket
auth = oss2.Auth(__access_id, __access_secret)
service = oss2.Service(auth,__oss_endpoint)
bucket = oss2.Bucket(auth, __oss_endpoint, __bucket_name)
#删除OSS bucket中的object
print 'Start deleting objects in the bucket'
#调用OSS API batch_delete_objects(),批量删除objects
result = bucket.batch_delete_objects([__object_name])
print 'You successfully delete objects:'
print('\n'.join(result.deleted_keys))
执行脚本,删除OSS文件
python object_delete.py <Bucket 名称> <Object路径>/lab_object.txt
编写脚本bucket_create.py
# -*- encoding:utf8 -*-
#Date: Fri. Feb 24th 2016
#Author: Tansy B.
import oss2
import json
import sys
__access_id = ''
__access_secret = ''
__oss_endpoint = ''
__bucket_name =''# 新建的bucket名
if __name__ == '__main__':
#判断输入的Access Key Id, Access key secret以及endpoint是否为空。
json_data = open('configure.json','r')
cfg = json.load(json_data)
if cfg['id'] =='' or cfg['secret'] == '':
print ('Please set up your access_key, access_secret')
sys.exit(1)
if cfg['endpoint'] == '':
print('Please enter your oss endpoint')
sys.exit(1)
#从configure.json中读取如下参数值:
__access_id = cfg['id']
__access_secret = cfg['secret']
__oss_endpoint = cfg['endpoint']
json_data.close()
#获取用户输入的bucket名称,并在bucket后增加AK的ID信息,避免出现bucket重复的情况
if len(sys.argv) == 1:
print 'Missing bucket name!\n'
print 'Usage: python bucket_create.py \n'
print 'For example: python bucket_create.py lab\nlab is a new oss bucket name'
sys.exit(1)
else:
__bucket_name = sys.argv[1] + '-' + __access_id.lower()
#用于鉴权并连接OSS的Service和Bucket
auth = oss2.Auth(__access_id, __access_secret)
service = oss2.Service(auth,__oss_endpoint)
bucket = oss2.Bucket(auth, __oss_endpoint, __bucket_name)
#创建一个新的bucket
print 'Start Creating a bucket'
#调用OSS API的create_bucket()创建bucket
result = bucket.create_bucket()
print 'Your bucket Create Successfully'
print 'Your new bucket is: ', __bucket_name
编写脚本
# -*- encoding:utf8 -*-
#Date: Fri. Feb 26th 2016
#Author: Tansy B.
import oss2
import json
import sys
__access_key = ''
__access_secret = ''
__service_endpoint = ''
__bucket_name = ''# 删除的bucket名
if __name__ == '__main__':
#判断输入的Access Key Id, Access key secret以及endpoint是否为空。
json_data = open('configure.json','r')
cfg = json.load(json_data)
if cfg['id'] =='' or cfg['secret'] == '':
print ('Please set up your access_key, access_secret')
sys.exit(1)
if cfg['endpoint'] == '':
print('Please enter your oss endpoint')
sys.exit(1)
#从configure.json中读取如下参数值:
__access_id = cfg['id']
__access_secret = cfg['secret']
__oss_endpoint = cfg['endpoint']
json_data.close()
#获取用户输入的bucket名称,并在bucket后增加AK的ID信息,避免出现bucket重复的情况
if len(sys.argv) == 1:
print 'Missing bucket name!\n'
print 'Usage: python bucket_delete.py \n'
print 'For example: python bucket_delete.py lab\nlab is a new oss bucket name'
sys.exit(1)
else:
__bucket_name = sys.argv[1]
#用于鉴权并连接OSS的Service和Bucket
auth = oss2.Auth(__access_id, __access_secret)
service = oss2.Service(auth,__oss_endpoint)
bucket = oss2.Bucket(auth, __oss_endpoint, __bucket_name)
#删除Bucket
print 'Start Deleting Bucket...\n'
try:
#调用delete_bucket()删除bucket
bucket.delete_bucket()
print 'You successfully delete the bucket'
#删除的bucket必须为空
except oss2.exceptions.BucketNotEmpty:
print 'The bucket',__bucket_name,'is not empty. You need to empty the bucket at first.\n'
#展示不空的bucket中存在的所有object
for obj in oss2.ObjectIterator(bucket, delimiter='/'):
if obj.is_prefix():
print('directory: ' + obj.key)
else:
print('Object List: ' + obj.key)
#删除的bucket必须存在
except oss2.exceptions.NoSuchBucket:
print 'The bucket',__bucket_name,'does not exist'
拥有大量用户的企业,经常会面临如下的难题:在高并发的情况下,经常会导致服务器响应速度慢,严重的情况会直接导致服务器停止服务。此时,会导致企业的业务中断,影响客户的正常访问。
本实验通过使用阿里云负载均衡SLB以及对负载均衡SLB后端服务器ECS的权重进行修改,可以快速解决上述的问题。
完成此实验后,可以掌握的能力有:
配置负载均衡SLB的监听规则,并将ECS实例部署到SLB后端;
通过设置负载均衡SLB后端服务器ECS的权重值,分配用户访问后端ECS实例的比例。
负载均衡采用集群部署,可实现会话同步,以消除服务器单点故障,提升冗余,保证服务的稳定性。
阿里云当前提供四层(TCP协议和UDP协议)和七层(HTTP和HTTPS协议)的负载均衡服务。
**负载均衡(Server Load Balancer)**是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。负载均衡扩展了应用的服务能力,增强了应用的可用性。
负载均衡通过设置虚拟服务地址,将添加的ECS实例虚拟成一个高性能、高可用的应用服务池,并根据转发规则,将来自客户端的请求分发给云服务器池中的ECS实例。
负载均衡默认检查云服务器池中ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单台ECS实例的单点故障,提高了应用的整体服务能力。此外,负载均衡还具备抗DDoS攻击的能力,增强了应用服务的防护能力。
负载均衡服务主要有三个核心概念:
负载均衡实例 (Server Load Balancer instances)
一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。要使用负载均衡服务,您必须创建一个负载均衡实例,并至少添加一个监听和两台ECS实例。
监听 (Listeners)
监听用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查。
后端服务器(Backend Servers)
一组接收前端请求的ECS实例。您可以单独添加ECS实例到服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理。
1)负载均衡服务通过设置虚拟服务地址(IP),将位于同一地域(Region)的多台云服务器(Elastic Compute Service,简称ECS)资源虚拟成一个高性能、高可用的应用服务池;根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。
2)负载均衡服务会检查云服务器池中ECS的健康状态,自动隔离异常状态的ECS,从而解决了单台ECS的单点问题,同时提高了应用的整体服务能力。在标准的负载均衡功能之外,负载均衡服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务器的防护能力。
3)负载均衡服务是ECS面向多机方案的一个配套服务,需要同ECS结合使用。
高可用
采用全冗余设计,无单点,支持同城容灾。搭配DNS可实现跨地域容灾,可用性高达99.95%。
根据应用负载进行弹性扩容,在流量波动情况下不中断对外服务。
可扩展
您可以根据业务的需要,随时增加或减少后端服务器的数量,扩展应用的服务能力。
低成本
与传统硬件负载均衡系统高投入相比,成本可下降60%。
安全
结合云盾,可提供5Gbps的防DDOS攻击能力。
负载均衡采用集群部署,可实现会话同步,以消除服务器单点故障,提升冗余,保证服务的稳定性。
阿里云当前提供四层(TCP协议和UDP协议)和七层(HTTP和HTTPS协议)的负载均衡服务。
如下图所示,各个地域的四层负载均衡实际上是由多台LVS机器部署成一个LVS集群来运行的。采用集群部署模式极大地保证了异常情况下负载均衡服务的可用性、稳定性与可扩展性。
此处Enable Session Persistence(开启会话保持)应该为关闭,因为开启了之后,同一个IP在一段时间内会一直分配到同一个ECS服务器
Enable Session Persistence trun on(开启会话保持),然后访问均衡负载IP
关闭IP为172.16.1.241的服务器
开始实验后,系统会自动创建两台ECS实例,以及一台阿里云负载均衡服务。两台WEB服务器分别部署了不同的图片。首先登陆阿里云管理控制台,在负载均衡服务中添加监听配置,从而实现服务器的流量分发,将用户的请求分发到不同的WEB服务器上。然后,开启阿里云负载均衡服务的会话保持功能,从而实现在某个时间段内将来自同一IP地址的访问请求,发送到相同的服务器上。
完成此实验后,可以掌握的能力有:
在高并发的情况下,使用阿里云负载均衡服务的加权轮询,实现服务器的流量分发功能;
使用阿里云负载均衡服务,实现服务器在短时间内的会话保持功能。
#### 学前建议
其实这个实验和前一个实验基本一致,操作步骤和会话保持的功能都实验过了,因此就不多说了。
本实验将介绍并使用安骑士的基本功能“木马查杀”,“补丁管理”,“安全管理”和“安全运维”。云中沙箱平台会自动创建一台已部署Phpwind站点的ECS云服务器实例。首先,模拟“暴力破解”ECS密码的情况,查看“拦截信息”。然后,设置“常用登陆地”,查看异地登录情况。最后,简要介绍安骑士的“补丁管理”,“木马查杀”等。
完成此实验后,可以掌握的能力有:
通过管理控制台,使用安骑士服务;
安骑士的不同版本之间的区别。
了解ECS的基本功能
了解安全方面的基础知识。
越来越多的企业开始使用阿里云的各种服务,比如ECS,RDS,负载均衡等等。随之而来的是用户最关心的安全问题:比如,因为用户使用通用软件的漏洞而被黑客入侵;Web服务器(内部/外部)被黑客入侵窃取网站的核心数据等。
因此,阿里云推出云盾服务。云盾是阿里巴巴集团多年来安全技术研究积累的成果,它结合阿里云云计算平台强大的数据分析能力,为中小网站提供如安全漏洞检测、网页木马检测以及面向云服务器用户提供的主机入侵检测、防DDoS等一站式安全服务。阿里云对于安全方面,可谓“十年攻防,一朝成盾”:
服务器安全(安骑士)是云盾的一款服务器安全运维管理产品。通过安装在服务器上的轻量级Agent插件与云端防护中心的规则联动,实时感知和防御入侵事件,从而保障服务器的安全。
服务器安全(安骑士)的架构图,如下图:
阿里云平台默认为用户开通安骑士的 基础版,若用户希望可以通过安骑士深度维护云服务器,可以购买 专业版,增强版 或 企业版。不同版本提供不同的服务。
安骑士主要提供五大服务:
本次实验将会配置站点服务器,并模拟黑客攻击,测试安骑士的效果。
添加本地IP到暗骑士白名单
本实验会自动创建一台已部署Nginx的ECS实例和一台负载均衡SLB实例。首先,使用阿里云云监控的 云服务监控 服务,配置并查看ECS实例和SLB实例的监控数据。然后,设置ECS实例的报警规则,并验证报警规则生效。之后,使用 站点监控 服务,监控已部署Nginx的站点的状态,并设置站点报警规则,验证报警规则。最后,清理云监控中的监控资源。
完成此实验后,可以掌握的能力有:
使用云监控的管理控制台,监控ECS等阿里云产品
创建报警规则,及时获取阿里云服务或站点的异常状态;
使用站点监控,对网站进行监控。
清理云监控中的监控资源
了解ECS和SLB的基本操作
云监控(CloudMonitor)作为云服务的监控管理入口,能让用户快速了解各产品实例的状态和性能。云监控从站点监控、云服务监控、自定义监控三个方面来为用户提供服务。通过云监控管理控制台,用户可以看到当前服务的监控项数据图表,清晰了解服务运行情况。并通过设置报警规则,管理监控项状态,及时获取异常信息。云监控目前免费限量为用户提供监控服务。
云监控为用户提供了非常丰富的使用场景:
目前,云服务监控对用户开放的产品包括云服务器ECS、云数据库RDS、负载均衡、云数据库Memcache版、对象存储OSS、CDN、弹性公网IP、云数据库Redis版、消息服务、日志服务等,其它云产品的监控会陆续加入进来。
站点监控目前支持8种协议的探测,探测点包括:杭州、青岛、北京,探测频率支持:1分钟、5分钟、15分钟。
自定义监控:补充“云服务监控”的不足,如果云监控服务未能提供您需要的监控项,那么,用户可以创建新的监控项并采集监控数据上报到云监控,云监控会对新的监控项提供“监控图表”展示和“报警”功能。
本实验主要介绍如何使用云服务监控,以及使用“站点监控”对用户自建的网站进行监控。通过设置报警规则,用户可以及时发现站点的异常情况,并做出及时的处理。
此处也不多说了,因为和上一个实验差别不大,实验了更多渠道的监控功能,例如网站指定状态码报警(比如出现404,403之类的),还有其他的监控报警功能,负载均衡监听什么的。
感谢阿里云让我免费获得了这次参加ACA认证的机会,欢迎大家也一起加入~
加入阿里云高校计划~