豆子花了2周的时间断断续续地学习了AWS PowerShell的一些核心命令,然后又花了2天的功夫把这些知识点组合起来。网上目前除了官方文档的快速手册和命令大全基本没有太多PowerShell管理AWS的内容,大部分命令豆子是一条条搜索和查看帮助硬尝试出来的,下面共享出来,如果以后有类似需要的话可以省一些时间。
现在演示一下如何用PowerShell 脚本在AWS上创建一个高可用的WordPress博客。这是个很典型的AWS的高可用场景。
下面是基本需求
-
用户通过DNS解析Elastic Load Balancer的URL,ELB转发请求到其中任何一台Word Press的EC2实例,该Web Server通过3309端口访问远程的MariaDB RDS实例;
-
MySQL通过Multiple-AZ实现高可用;
-
Web Server通过ELB实现负载平衡和高可用;
-
根据CPU或者其他负荷标准,ELB里面的集群可以自动地增加,删除EC2实例;
-
Auto Scaling 创建的服务器必须自动更新到最新版本;
-
博客涉及的所有的图片和视频必须保存在S3 Bucket上面,并通过CloudFront实现CDN加速,博客的媒体资源URL自动重定向指向CDN的地址进行解析。
现在看看PowerShell如何实现每一个功能的。
我的基本思路
-
创建EC2-S3的Role,这个Role是分配给EC2虚拟机的,这样他们创建之后自动就有权限访问S3的内容。
-
创建VPC网络
-
创建VPC的2个子网,位于不同的AZ
-
创建Internet网关
-
配置路由表
-
创建并配置EC2的Security Group,确保80和22端口可用
-
创建高可用的MariaDB数据库
-
配置数据库的Security Group,确保3306端口可用
-
创建S3 Bucket 并配置Policy
-
创建CloudFront分布点,绑定S3 Bucket
-
准备WordPress的配置文档
-
准备Virtualhost的配置文档
-
上传配置文档到S3 Bucket中
-
配置Bash Shell脚本,包括LAMP,WordPress,AWS,Crontab和S3同步等等
-
创建EC2虚拟机,指定14步创建的BootStrap命令
-
更新DNS记录,指向该虚拟机
-
初始化WordPress界面
-
确认无误之后生成镜像文件
-
配置ELB
-
更新DNS记录到ELB的地址
-
配置Launch Configuration
-
配置Auto Scaling