且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

AWS - 创建一个高可用的WordPress 博客 (二)

更新时间:2022-09-18 08:47:20

上一篇大概的介绍了一下高可用的wordpress的设计结构。这个设计图会涉及到VPC,EC2,ELB,RDS,S3,CloudFront,Auto Scaling,IAM和CloudWatch等核心服务,对于了解各部分的功能是个很好的练习。


现在我们开始具体的配置,豆子会配置一个Ubuntu14 的WordPress,该服务器和MySQL数据库都具有高可用的功能,还可以通过CPU的负荷自动添加或者删除现有实例。具体的配置包括以下步骤:


  1. 创建基本的网络和防火墙

  2. 配置高可用MySQL

  3. 创建一个Ubuntu 14实例

  4. Ubuntu安装LAMPStack

  5. 配置S3和CloudFront CDN

  6. 配置Ubuntu Virtual Host

  7. 配置Route 53 DNS 

  8. 测试通过之后配置成AMI镜像

  9. 配置ELB

  10. 配置Auto scaling

  11. 测试



首先我们需要配置一个基本的VPC 网络和IAM角色。


之前的博客里面我已经创建了一个IAM的角色 ec2-s3,可以允许关联的虚拟机默认就有访问S3 Bucket的权限。


如下所示:


AWS - 创建一个高可用的WordPress 博客 (二)


接下来创建一个新的VPC网络 wordpressbeanxyz


AWS - 创建一个高可用的WordPress 博客 (二)


创建2个子网,分别位于不同的AZ

AWS - 创建一个高可用的WordPress 博客 (二)


创建Internet 网关

AWS - 创建一个高可用的WordPress 博客 (二)

配置路由表


AWS - 创建一个高可用的WordPress 博客 (二)



新建一个Security Group,配置允许访问的端口


AWS - 创建一个高可用的WordPress 博客 (二)

准备工作差不多了,先来创建个MySql的高可用实例吧。




点击RDS

AWS - 创建一个高可用的WordPress 博客 (二)


选择Multi-AZ Deployment

AWS - 创建一个高可用的WordPress 博客 (二)

豆子账号所在的Sydney区域还无法创建micro级别的Multiple实例,亚马逊逼着我用更贵的实例,好吧

AWS - 创建一个高可用的WordPress 博客 (二)


级别改成small就行了。

AWS - 创建一个高可用的WordPress 博客 (二)

直接选择默认VPC

AWS - 创建一个高可用的WordPress 博客 (二)


创建成功

AWS - 创建一个高可用的WordPress 博客 (二)

正在创建,大概要10分钟才会完全配置结束

AWS - 创建一个高可用的WordPress 博客 (二)


至此,基本的数据库和网络结构就算搭建起来了,接下来我们来搭建个虚拟机测试一下。


具体的EC2加载和Putty连接过程就省略了,这个是最最基本的操作。


豆子加载了一个Unbuntu 14的EC2实例,Putty连接之后


首先安装相关LAMP Stack

AWS - 创建一个高可用的WordPress 博客 (二)

AWS的命令行也得安装

AWS - 创建一个高可用的WordPress 博客 (二)

测试一下成功安装

AWS - 创建一个高可用的WordPress 博客 (二)

如果没有配置IAM的角色,要想访问S3 那就只能通过 aws configure来输入secret key才行了

AWS - 创建一个高可用的WordPress 博客 (二)


接下来下载安装wordpress


AWS - 创建一个高可用的WordPress 博客 (二)

解压

AWS - 创建一个高可用的WordPress 博客 (二)

修改配置文件

AWS - 创建一个高可用的WordPress 博客 (二)

数据库的名称,用户名,密码以及地址(这里输入MySql 实例的EndPoint)

AWS - 创建一个高可用的WordPress 博客 (二)

然后把整个文件夹拷贝到 apache的根目录下 /var/www/wordpress

AWS - 创建一个高可用的WordPress 博客 (二)

修改一下访问权限,确保用户可以访问

AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)


然后配置一下virtual host 文件。Ubuntu14里面的默认文件是 000-default.conf,把他拷贝出来,重命名为wordpress.confg

AWS - 创建一个高可用的WordPress 博客 (二)


修改一下内容

AWS - 创建一个高可用的WordPress 博客 (二)


添加域名和根目录

AWS - 创建一个高可用的WordPress 博客 (二)


重新加载一下这个配置文件

AWS - 创建一个高可用的WordPress 博客 (二)

重启apache

AWS - 创建一个高可用的WordPress 博客 (二)


然后通过aws的命令把对应的wordpress文件夹和virtual host的配置文件备份回S3保存。通过这种方式,我们可以通过Bootstrap来给之后新创建的服务器同步最新的配置信息。

AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)


打开S3的管理界面看看是否已经同步

AWS - 创建一个高可用的WordPress 博客 (二)


接下来需要设定一下DNS,打开Route53,我已经创建了Hosted Zone了。这个域名我是在goDaddy上注册的,把NS的服务器在goDaddy指向aws即可转移到Route53上。


AWS - 创建一个高可用的WordPress 博客 (二)

创建一个域名 blog.beanxyz.com然后指向虚拟机的公网IP

AWS - 创建一个高可用的WordPress 博客 (二)

输入域名试试看,成功加载wordpress

AWS - 创建一个高可用的WordPress 博客 (二)

输入初始化信息

AWS - 创建一个高可用的WordPress 博客 (二)


Ubuntu 14上的WordPress就可以算是成功搭建了。 不过这个时候只有数据库是高可用的,WordPress服务器还不是,上面的媒体数据也是保存在本地硬盘上的。

AWS - 创建一个高可用的WordPress 博客 (二)


新建一个Post,插入一张图片

AWS - 创建一个高可用的WordPress 博客 (二)


可以看见,图片是保存在 /wp-content/uploads 的本地磁盘里面的

AWS - 创建一个高可用的WordPress 博客 (二)


为了保证全球各地的访问速度都很快,我们需要创建一个CDN 网络,CDN的Orgin 服务器指向S3,所有的图片信息都需要保存在对应的S3 bucket里面。


新建一个 S3 bucket, wordpressbeanxyzcdn

AWS - 创建一个高可用的WordPress 博客 (二)

修改属性,创建一个Bucket Policy,允许所有用户对其中的内容都具有只读权限

AWS - 创建一个高可用的WordPress 博客 (二)


然后创建一个CloudFront Url

AWS - 创建一个高可用的WordPress 博客 (二)

选择Web

AWS - 创建一个高可用的WordPress 博客 (二)

分布点指向S3 bucket

AWS - 创建一个高可用的WordPress 博客 (二)


通过S3 sync同步图片到我们的S3 Bucket里面

AWS - 创建一个高可用的WordPress 博客 (二)


确认一下Url,S3 bucket和本地磁盘的内容已经同步了

AWS - 创建一个高可用的WordPress 博客 (二)


然后在crontab里面创建一个计划任务,每分钟同步一次

AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)


同时,还需要修改vitual host文件,用CDN的地址来替换本地磁盘的访问地址

AWS - 创建一个高可用的WordPress 博客 (二)

打开 rewrite的功能,然后重启apache

AWS - 创建一个高可用的WordPress 博客 (二)


再从wordpress上点开图片的地址,发现已经是CDN的地址了

AWS - 创建一个高可用的WordPress 博客 (二)

最后别忘记通过aws s3 cp命令把最新的改动都保存回S3 bucket


然后通过这个EC2创建一个AMI 镜像

AWS - 创建一个高可用的WordPress 博客 (二)


之后我们可以通过这个AMI和Auto Scaling 自动创建新的虚拟机

AWS - 创建一个高可用的WordPress 博客 (二)


现在我们来配置一下WordPress的高可用功能,Elastic load balancer。


新建一个ELB

AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)

把我创建的2个子网都放进去,这样自动创建的虚拟机会在不同的数据中心进行负载平衡

AWS - 创建一个高可用的WordPress 博客 (二)


指向之前创建的SG

AWS - 创建一个高可用的WordPress 博客 (二)

这就创建好了


AWS - 创建一个高可用的WordPress 博客 (二)

创建好之后,我们还需要修改一下之前的DNS,使得我的blog.beanxyz.com指向ELB的地址,而不是直接指向某个虚拟机的公网IP

AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)

nslookup看看是否已经更改。

AWS - 创建一个高可用的WordPress 博客 (二)


最后,我们来创建新的Auto Scaling Group



AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)

选择之前创建的AMI镜像

AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)


配置虚拟机,注意在User Data里面可以通过Bootstrap来预配置信息

AWS - 创建一个高可用的WordPress 博客 (二)

剩下的基本上默认选项按部就班的点下去就行了

AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)


勾选ELB,这样新创建的EC2,自动会加入ELB进行负载平衡


AWS - 创建一个高可用的WordPress 博客 (二)

根据CPU的变化自动添加删除实例,这个之前豆子的博客已经详细介绍过了


AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)

AWS - 创建一个高可用的WordPress 博客 (二)

AS配置完毕之后,因为我设置的初始状态需要2台服务器,他会自动立刻创建2个实例,可以在ELB的配置界面里面查看

AWS - 创建一个高可用的WordPress 博客 (二)

也可以在EC2的配置界面下查看


AWS - 创建一个高可用的WordPress 博客 (二)

手动删除一台实例,访问仍然成功!

AWS - 创建一个高可用的WordPress 博客 (二)










本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1549612,如需转载请自行联系原作者