云端架构:基于云平台的41种可复用的架构最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.1.2 公有云第一步——使用云主机

云主机是云计算提供的最基础、使用最频繁的产品,云主机实例配置如图4-2所示,创建云主机实例需要选择所在的地域、可用区。云主机配置包含镜像、内存、CPU、磁盘、网络增强、热升级等其他特性。需要绑定到云主机使用的产品与服务有云盘(数据盘)、EIP、安全组等。

img

图4-2 云主机实例配置

创建云主机除了从镜像启动实例,还需要配置网络、绑定硬盘等,包括绑定VPC、绑定安全组、挂载数据盘,这些会通过创建云主机的堆栈自动完成,还有一些需要手动操作或通过脚本来进行操作的,如绑定EIP、创建监控组、添加到负载均衡中、创建弹性伸缩组。

云主机的操作系统支持Linux的CentOS、Debian、Ubuntu等,也支持Window Server系列。用户只需为云主机付费,无须额外为Windows Server操作系统付费,云服务商已经将License费用打包到云主机费用中。云平台会对操作系统进行一些定制开发,云平台版本和开源/闭源版本略有差异,对绝大部分使用无影响。

镜像则是云服务中的重要功能,允许将操作系统、安装的软件、系统盘中的数据打包制作为镜像,支持通过镜像创建云主机。在进行系统迁移、跨可用区和跨地域部署、自动伸缩扩展时会使用到镜像,可将云主机的系统制作为镜像,在弹性扩展时直接基于镜像创建云主机,实现快速扩容,在迁移服务时可在目的端基于镜像创建云主机并启动服务,以达到迁移应用的目的。自动伸缩中的启动配置模板必须指定云主机镜像,达到触发条件时会根据该镜像的配置模板扩展资源或缩减资源。

用户自定义的镜像包含应用和数据,云主机启动和运行需要的部分网络环境、开机启动脚本等可在镜像之外通过MetaData进行配置,如图4-3所示。MetaData是云主机实例的管理数据,支持在创建云主机实例时将一些启动命令写入MetaData中,云主机启动时执行预先设定的命令来完成整个准备工作,保证镜像中的服务能够正常启动并运行。

img

图4-3 启动云主机时调用MetaData

在实例启动时,可以执行开启镜像中的服务、传入外部参数、安装或更新软件依赖包等操作。

CLI命令

img

在创建云主机的过程中会创建系统盘并安装镜像,必选系统盘并且会自动挂载完成。创建过程中会检测是否配置了数据盘,如有数据盘则先进行预挂载,预挂载并非Linux中的mount,而是云平台中云主机和数据盘资源进行关联的操作。需要手动或通过脚本来格式化云硬盘,创建文件系统,再进行mount挂载操作。

CLI命令

img

创建完成云主机实例之后,在控制台可查看到实例的资源ID、可用区、内网IP、机型、CPU平台、镜像、CPU等信息,如图4-4所示。另外还显示CPU使用率、磁盘读/写吞吐、磁盘读/写次数等监控信息,如需要对内存、系统盘、数据盘、进程、TCP连接等数据进行收集和监控,则需要授权和安装Agent,否则云服务商不会收集敏感的用户资源数据。

img

图4-4 云主机实例详情界面

创建完成云主机实例后还需要绑定到EIP才能面向互联网用户访问,登录方式有如下几种。

• VNC登录。

• Mstsc远程桌面(Windows)。

• SSH登录(Linux)。

• 通过WinSCP界面化工具访问文件系统。

Ubuntu的登录账号为ubuntu,其他Linux的登录账号为root,Windows的登录账号为Administrator。不建议直接用明文账号和密码来登录,登录过程存在安全风险,明文账号和密码容易泄露,建议通过pem key的形式进行登录。

云平台为了保障云主机的安全,在创建云主机时会选择绑定安全组。安全组是用来过滤用户TCP、UDP等协议请求的,通过五元组的方式来界定一条访问规则,五元组包括源IP地址、源端口、目的IP地址、目的端口、协议,对该规则可以设定允许访问或拒绝访问的动作,还可设置优先级。同一个安全组中的多条访问规则首先按照优先级进行匹配,同一优先级的规则按照从上到下的顺序匹配,匹配到的规则会直接进行相应的允许访问或拒绝访问的动作,不会继续匹配其他规则。

创建云主机时,默认绑定的安全组拒绝了所有请求[1],通过SSH远程访问需要打开22端口,提供Web服务一般开放80(也可能是8080或443)端口,如图4-5所示。

img

图4-5 多个安全组规则过滤访问云主机的请求

提示

除了以上在云主机创建流程内的步骤,跟云主机紧密结合的产品还有负载均衡、自动伸缩等。无论是单台云主机还是多台云主机,均建议挂载到负载均衡的后端节点中,EIP绑定在负载均衡而不是云主机上,后续扩展资源时再创建云主机到负载均衡后端节点即可,不会影响现有业务运行。将云主机加入自动伸缩组,在云主机出现宕机等事故时会触发自动伸缩,按照最少云主机数量来启动模板并新建云主机,将云主机数量维持在设定的范围内。