admin 管理员组

文章数量: 887007

1.EC2使用

  • 1.1启动虚拟服务器:即启动一个EC2实例
  • 1.2使用SSH连接到虚拟服务器
  • 1.3手动安装和运行软件
  • 1.4监控和调试虚拟服务器
  • 1.5关闭虚拟服务器
  • 1.6更改虚拟服务器的容量
  • 1.7在另一个数据中心开启虚拟服务器
  • 1.8分配一个固定的公有IP
  • 1.9向虚拟服务器添加额外的网络接口
  • 1.10优化虚拟服务器的开销

2.编写基础架构:CLI,SDK,CloudFormation

  • 2.1基础架构即代码
  • 2.2AWS CLI
  • 2.3使用SDK,Cloud9,CDK编程
  • 2.4AWS CloudFormation

3.自动化部署:CloudFormation,ElasticBeanstalk,OpsWorks

4.保护系统安全:IAM,安全组,VPC

  • 4.1AWS安全负责说明
  • 4.2保持软件最新
  • 4.3保护AWS账号安全
  • 4.4控制进出虚拟服务器的网络流量
    - 使用安全组控制虚拟服务器的流量
    - 允许ICMP流量
    - 允许SSH流量
    - 允许来自源IP地址的SSH流量
    - 允许来自源安全组的SSH流量:使用堡垒主机
  • 4.5在云中创建一个私有网络:虚拟私有云VPC




1.EC2使用

概念理解:





启动虚拟服务器:即启动一个EC2实例

  • 打开AWS console
  • 确保在【美国东部(弗吉尼亚北部)】-----书中示例代码所在的S3云存储桶的位置
  • 点击EC2服务
  • 点击【启动实例】:执行虚拟服务器向导
    该向导将有如下步骤:
    1. 选择OS
      第一步是为虚拟服务器选择OS和预装软件,称为Amazon AMI(Amazon Machine Image,Amazon系统映像)
      虚拟服务器是基于AMI启动的。AMI由AWS,第三方供应商机社区提供。
      AWS Marketplace提供预装了第三方软件的AMI。
      概念解释:虚拟设备AMI,AKI,Xen,HVM
      注意:如果要启动新的虚拟服务器,一定要保证自己使用的是HVM映像

    2. 选择虚拟服务器的规格
      选择虚拟服务器的计算能力,在AWS中,计算能力(cpu,mem)被归类到所需的实例类型中。
      一个实例类型主要描述了计算能力:cpu的个数即内存memeory的大小。
      概念解释:实例类型,实例家族,代,尺寸

    3. 配置详细信息

    4. 检查输出并为SSH选择一个密钥对
      用户需要一个密钥来登录自己的虚拟服务器。
      用户使用一个密钥而不是密码来完成身份认证,进而登录到自己的虚拟服务器。
      密钥比密码更加安全,而且在AWS上运行Linux服务器强制SSH访问使用密钥方式。
      (此处的密钥认证方式类似于Github中的密钥认证方式,将生成的公钥上传至服务器,而在本地利用私钥作为访问服务器的凭据)

      创建个人密钥的方式:
      1.打开aws管理控制台:点击【服务】----【EC2服务】
      2.点击左侧【密钥对】
      3.点击【创建密钥对】
      4.输入密钥对的名字,点击【创建】,使用浏览器下载创建好的密钥对。
      5.打开一个终端,切换到下载目录
      6.Linux和Mac:在终端中运行chmod 400 密钥文件名.pem来修改密钥文件的权限仅自己可见
      7.WIndows:WIndows没有自带SSH客户端,所以需要安装PuTTY。
      PuTTY带有一个工具叫做PuTTYgen,它可以将【密钥名.pem】文件转换成【密钥名.ppk】。
      打开PuTTYgen,在【Type of key to generate】选择【rsa】,点击【load】,选择刚刚浏览器下载好的密钥文件。
      因为PuTTYgen只显示【*.pkk】文件,需将文件类型切换至【所有】文件类型才可显示刚刚下载好密钥文件。
      最后作为【Save private key】。忽略未使用密码保护保存密钥的警告。
      现在.pem文件已经被转换成了PuTTY所需的.pkk格式。


      虚拟服务器启动后,点击【查看实例】打开概览界面,等待虚拟服务器变为【running】状态。
      要完全控制自己的虚拟服务器,用户需要远程登录自己的虚拟服务器。



使用SSH连接到虚拟服务器:
用户可以远程在虚拟服务器上安装额外的软件以及运行命令。
要登录到虚拟服务器,用户要找到虚拟服务器的共有IP地址。

    • 点击【服务】----【EC2服务】
    • 点击【实例】跳转到正在运行的虚拟服务器。
    • 点击【连接】按钮,打开连接到服务器的说明。
    • 找到虚拟服务器的共有IP,有了共有IP地址及用户的密钥,用户就能登录到虚拟服务器了。
  • Linux和Mac
    https://docs.aws.amazon/AWSEC2/latest/UserGuide/AccessingInstances.html?icmpid=docs_ec2_console
    打开终端,输入ssh -i $PathToToken/mykey.pem ubuntu@$PublicIp
    使用密钥文件的路径替换$PathToKoken,使用在控制台显示的链接对话框中的公有IP替换$PublicIp
    在关于新主机的认证的安全警告处回答【yes】
  • Windows
    https://docs.aws.amazon/AWSEC2/latest/UserGuide/putty.html?icmpid=docs_ec2_console
    找到创建好的【mykey.pkk】文件,然后双击打开它。
    在PuTTY Pageant会在任务条中显示为一个图标。如果未显示需重装PuTTY。

    启动PuTTY。填写AWS管理控制台的连接对话框中显示的公有IP地址,然后点击【Open】

    在关于新主机的认证的安全警告处回答【是】,然后输入【ubuntu】作为登录名,按【Enter】键。
  • 登录信息
    不论是使用Windows,Linux还是Mac,当登录成功后都会显示如下信息。
    现在已经连接到虚拟服务器,为在虚拟服务器中运行命令做好了准备。


手动安装和运行软件
现已经启动了一台ubuntu OS的虚拟服务器。
安装一个名为linkchecker的工具,它能够让我们找到网站上断裂的连接
sudo apt-get install linkchecker -y

现在就可以检查那些指向已经不存在的网站的连接了。
现选择一个网站,然后运行:
linkchecker https://...

根据网页数量的不同,网页爬虫需要一些时间来检查所有的网页是否有断裂的连接。
最终它会列出所有断裂的连接,给用户机会找到并修复他们。



监控和调试虚拟服务器日志监控指标
AWS提供了工具让用户来监控和调试自己的虚拟服务器。

  • 显示虚拟服务器的日志
    AWS允许用户使用管理控制台显示服务器的日志(日志可以显示虚拟服务器在启动时和启动后做了什么)。
    使用如下步骤打开虚拟服务器的日志:

    1.点击【EC2】----【实例】
    2.选择一个正在运行的虚拟服务器
    3.点击【操作】----【实例设置】----【获取系统日志】
    此时会打开一个窗口,然后显示从虚拟服务器得到的日志,这些日志通常在启动期间显示在一台物理监视器上。
    这是一个简单有效的访问用户的服务器的日志系统,并且它不需要SSH连接。

  • 监控虚拟服务器的负载
    按如下步骤打开虚拟服务器的指标:

1.【EC2】----【实例】
2.选择一台正在运行的虚拟服务器
3.点击右下角【监控】标签页




关闭虚拟服务器
为了避免产生费用,用户总是应该关闭不用的虚拟服务器。
用户可以使用以下5个操作来控制一台虚拟服务器的状态:【操作】----【实例状态】

  • 开启:可以打开一台停止的服务器。
  • 停止:停止一台正在运行的虚拟服务器。
    停止的服务器可以被再次启动。
    一台已经停止了的虚拟服务器将不会产生任何费用,除了网络附加存储这样的附加资源除外。
    如果用户使用了网络附加存储,用户的数据将会被保存。
  • 重启:用户不会在重启时丢失任何数据,而且所有的软件在重启后任会保持被安装了的状态。
  • 终止:删除该虚拟服务器。
    用户不能在此开启一台已经终止了的虚拟服务器。
    终止一台服务器意味着删除这台虚拟服务器及其依赖项(如:网络附加存储)和公有及私有IP地址。
    被终止了的服务器将不会在产生任何费用。
  • 休眠Hibernate

资源清理:
1.【EC2】—【实例】
2.点击正在运行的虚拟服务器
3.【操作】—【实例状态】----【终止】



更改虚拟服务器的容量
用户总是可以更改一台虚拟服务器的容量:云计算的优势之一,它给了用户垂直扩展的能力。
如何更改一台正在运行的虚拟服务器的容量:

1.首先启动一个EC2实例
2.使用SSH连接到EC2实例
Linux或Mac:使用ssh -i连接
Windows:使用PuTTY工具连接
3.执行:
cat /proc/cpuinfo
free -m
来获取服务器的CPU和内存信息
4.如果用户需要更多的cpu,memory,网络容量,或是修改虚拟服务器的实例家族于版本。
首先【停止】该服务器
在服务器停止后,可以更改实例:【操作】----【实例设置】

更改完成后,公有及私有IP地址也发生了变化。
需要获取新的公有IP地址,通过SSH重新连接到新的IP地址。
5.资源清理:终止该台虚拟服务器



在另一个数据中心开启虚拟服务器
AWS为全球提供数据中心。
要使互联网获得**
**,为主要用户选择一个最近的数据中心十分重要。
更改数据中心:

用户可以为AWS服务指定区域。
各个区域之间完全独立,数据不在区域间进行传输。
典型情况下,一个区域有两个或更多位于同一地区的数据中心组成。
这些数据中心间有着很好的连接,他们能提供高可用的基础架构。
一些AWS服务:如内容分发网络CDN(Content Delivery Network)服务,域名系统DNS(Domian Name System)服务,是在这些区域之外的数据中心之上全球运行的。

由于各个区域之间相互独立,故在切换区域后需要再次创建新的密钥对用以访问EC2.
用户使用密钥对的形式访问自己创建的虚拟服务器EC2资源,将创建好的密钥对的私钥保存在本地中,当SSH连接到EC2实例时,使用刚刚保存到本地私钥进行认证,进而访问EC2.



分配一个固定的公有IP
前面创建的EC2实例都自动分配了一个公有的IP地址。
但是每次启动或是停止一台虚拟服务器EC2时,公有IP地址就改变了。
如果想用一个固定的IP地址运行一个应用程序,则需使用AWS提供的弹性IP地址服务:Elastic IP address。

使用以下步骤来分配并关联一个公有IP地址到一台虚拟服务器上:

1.点击【EC2】
2.【网络于安全】----【弹性IP】

3.点击【分配新地址】分配公有IP地址

在拥有了固定的IP地址:即弹性IP地址后,可以将该弹性IP关联到一个EC2实例上:
1.选择刚刚创建好的弹性IP,【操作】-----【关联地址】
2.在【实例】中点击右侧三角,选择需要关联的EC2实例
3.点击右下角【关联】完成EC2实例固定IP地址的设定。

如果用户需要确保自己的应用的端点不变化,就需要手动创建一个 弹性IP,并将该弹性IP地址关联到EC2实例。
利用弹性IP地址,可以在用户无知觉的情况下换掉后端关联的EC2实例,且可以保持服务的不中断运行。

用户也可以使用多个网络接口来关联多个公有IP地址到一台虚拟服务器。
适用情况:用户需要在同一个端口运行不同的应用或者不同的网站使用一个唯一的固定的公有IP地址。

注意:IPv4地址是稀缺资源。为了防止弹性IP地址浪费,AWS将对没有关联到任何服务器的弹性IP地址收费。



向虚拟服务器添加额外的网络接口
除了公有IP地址,用户还可以控制自己的虚拟服务器的网络接口。
用户可以向一台虚拟服务器添加多个网络接口,并且控制关联到这些网络接口的私有IP地址和公有IP地址。
用户可以使用额外的网络接口管来关联第二个公有IP地址到自己虚拟服务器。
用以下步骤来为自己的虚拟服务器EC2实例,创建一个额外的网络接口:

1.点击EC2服务左侧的【网络接口】
2.点击【创建网络接口】
3.输入该网络接口的描述信息
4.选择自己EC2实例的子网作为新的网络接口的子网。

5.让【私有IP地址】保持默认的自动分配
6.安全组选择一个即可
7.点击创建

当新的网络接口的状态变为Available,用户可以将他附加到自己的虚拟服务器。
1.选择新创建的网络接口,点击【附加】
2.选择正在运行的虚拟服务器的ID,点击【附加】

现在已经附加了一个额外的网络接口到自己的虚拟服务器,接下来关联一个额外的公有IP地址到这个额外的网络接口。
1.点击左侧的【弹性IP】
点击【分配新地址】来分配一个新的固定的弹性IP地址。
【操作】----【关联地址】,将它连接到刚刚创建的网络接口

现在虚拟服务器就可以通过两个不同的IP地址来访问了。
这样用户可以根据公有IP地址提供两个不同的网站服务,需要配置网络服务器来根据公有IP地址来应答请求。
在次使用SSH连接到虚拟服务器,并且在终端输入ifconfig后,就能看到自己的新网络接口附加到了虚拟服务器上。

每个网络接口都能连接到一个私有IP地址和一个公有IP地址。
我们需要配置网络服务器来根据IP地址提供不同的网站。
虚拟服务器不知道任何有关于他的公有IP地址的信息,但是我么可以根据私有IP地址来区分请求。

清理资源:
1.终止虚拟服务器
2.转到【网络接口】,选择并删除网络接口
3.转至【弹性IP】—【操作】----【释放IP地址】,释放两个公有弹性IP地址



优化虚拟服务器的开销

省钱的两个选项:

  • 竞价型实例
  • 预留实例
    这两个选项都能够帮助用户减少开销,但是这样会降低灵活性。
    对于竞价型实例,可以对AWS数据中心中未使用的容量出价,价格基于供给与需求。
    如果需要使用一台服务器超过一年,可以使用预留型实例,同一支付给定时间段的费用并提前获取折扣。



2.编写基础架构:CLI,SDK,CloudFormation

AWS提供通过接口来控制的基础架构,叫做应用编程接口API(application programming interface)。
用户能通过API控制AWS的每一部分,用户可以使用大多数编程语言,CLI,和其它工具的SDK调用这些API。
在AWS上,一切都可以通过API来控制,用户通过HTTPS协议调用REST API来与AWS交互。

例如:要列出S3对象存储里的所有文件,可以向API端点发送一个GET请求:
GET / HTTP/1.1
Host: BucketName.s3.amazonaws
Authorization: […]

使用底层的HTTPS请求直接调用API不太方便,另一种简单的方法时:使用CLI或SDK来和AWS
交互。



基础架构即代码
【基础架构即代码】:表达了使用高级编程语言来控制IT系统的思想。
在软件开发中,自动化测试,代码库和构建服务器提高了软件工程的质量。
如果用户的基础架构可以当作代码来对待,用户就能过关对自己的基础架构代码和应用程序代码使用相同的技术。
最终用户可以使用自动化测试,代码库和构建服务来改善基础架构的质量。

注意:区别【基础架构即代码】和【基础架构即服务IaaS】:IaaS指的是按照使用量进行付费的租用服务器,存储和网络的业务模式

自动化和DevOps(Development Operations)是软件开发驱动的一个方法,以便让开发和运维更加紧密的结合在一起:即自己开发的软件自己进行后续的运维工作。

基础架构语言:JIML(JSON Infrastructure Markup Language)JSON基础架构标记语言
JSON转为AWS API调用的过程:

  • 解析JSON输入
  • JIML解释器将资源和他们的依赖项连接起来,创建一张依赖图
  • JIML解释器从底层叶子节点到顶层根遍历依赖图中的书,然后产生一个线性的命令流。这些命令由一个伪语言来表达。
  • 然后JIML运行时环境将这些伪语言的命令翻译成AWS API调用该

注意:JIML解释器确定了资源的创建顺序,JIML解释器把依赖图变成一个现行的使用伪语言的命令流。这个伪语言代表了用正确的舒徐创建所有资源所需要的步骤。最后JIML运行时环境将伪语言命令翻译成AWS API调用。
即:基础代码即架构的所需的一切:都与依赖项相关。



2.使用AWS CLI
CLI官方文档:https://aws.amazon/cn/cli/

使用CLI创建基础架构:CLI是实现基础架构即代码的一种工具。
AWS CLI是一个从命令行使用AWS的便捷方法。它运行在linux,mac,Windows上,用python编写。
AWS CLI为所有的AWS服务提供了一个统一的访问接口。

安装AWS CLI

  • 1.Linux和Mac:
    CLI需要Python及pip。pip是安装python程序包的推荐工具。
python -version		//检查python版本
pip --version			//检查pip版本
curl "https://bootstrap.pypa.io/get-pip.py" -o "

本文标签: 基础设施 服务器 网络 aws