申明:本文以平安金融云(https://fincloud.pinganyun.com/)为例,内容来自互联网公开信息。
本文以wordpress为例,创建一个高可用、可扩展、高性能的站点。涉及到平安金融云服务有VPC、Security Group、RDS-MySQL、EFS、EC2、ELB、云网通、CDN、OBS等,最后尝试了Auto Scalling组的创建。其中的问题共大家讨论。
1. 架构图
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片1.png)
本次实验选择平安云华东区的两个AZ:EFA和EFB。每个服务的解释如下:
VPC:https://fincloud.pinganyun.com/ssr/help/network/vpc/index.overview
RDS-MySQL:https://fincloud.pinganyun.com/ssr/help/database/RDS/Product_Introduction.Overview
ECS:https://fincloud.pinganyun.com/ssr/help/compute/ecs/intro.overview
ELB:https://fincloud.pinganyun.com/ssr/help/network/elb/index.intro
CDN:https://fincloud.pinganyun.com/ssr/help/network/CDN/help.introduction
OBS:https://fincloud.pinganyun.com/ssr/help/storage/obs/intro.whatisobs
EIP:https://fincloud.pinganyun.com/ssr/help/network/EIP/intro.whatiseip
云解析:https://fincloud.pinganyun.com/ssr/help/domain/cloudDNS/introduction.overview
2. 部署环境分为以下步骤:
- 创建VPC、子网、安全组
- 创建RDS-MySQL实例
- 创建EFS文件系统实例
- EFA中创建ECS实例,并绑定EIP, 安装Apache, PHP程序
- ECS实例挂载EFS文件系统,部署Wordpress代码并连接数据库
- 创建一个简单的博文
- ECS制作镜像,同步镜像到EFB,创建ECS实例
- 创建ELB, 把EFA和EFB的ECS实例添加服务器资源池并配置监听器
- 创建云解析并解析ELB的公网IP
- 模拟拟EC2实例故障
- 模拟RDS实例故障
1) 创建VPC、子网、安全组
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片2-1024x540.png)
分别在EFA和EFB创建子网,因为需要Muti-AZ部署。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片3-1024x381.png)
创建webserver security group,开放http80, ssh22端口。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片4-1024x338.png)
注意:此处的安全组SG是有状态的,只用开通入方向的规则,出方向自动放行。
2) 创建RDS-MySQL实例
需要选择一个主可用区A,但是实际上EFA/EFB都能访问。而且文档中也说明了RDS默认部署就是Muti-AZ的主备架构。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片5-1024x481.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片6-1024x603.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片7-1024x454.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片8-1024x283.png)
注意
- RDS没有使用MySQL默认的3306端口,常规实例、远程灾备实例、同城只读实例和远程只读实例分别具有各自的访问域名和端口号。
- 必须开通白名单才能连接数据库,而且看起来白名单只能是一个个的选择ECS实例。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片9-1024x451.png)
另外,白名单自动打通了ECS的端口连接,不用在security group上添加任何规则,ECS就可以连接数据库。
3) 创建EFS文件系统
可用区要选择,但是EFB也能够连接到EFS。文档中也说明了EFS是Region内部都可以访问。存储类型要选择性能型,因为存储wordpress app主程序,有IO读写。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片10-1024x670.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片11-1024x494.png)
注意:和RDS一样,访问EFS需要授权,而且看起来也只能对ECS授权。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片12-1024x622.png)
同样,EFS授权自动打通了ECS的端口连接,不用在security group上添加任何规则,ECS就可以连接EFS。
4) EFA中创建ECS实例,配置EIP, 并安装Apache, PHP程序
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片13-1024x469.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片14-1024x438.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片15-1024x542.png)
为ECS配置EIP
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片16-1024x482.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片17-1024x600.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片18-1024x485.png)
升级
yum update -y
安装httpd
安装PHP73
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片19.png)
测试一下
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片20-1024x475.png)
5) ECS实例挂载EFS文件系统,部署Wordpress代码在EFS上
首先要确定ECS被EFS授权连接
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片21-1024x507.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片23-1024x419.png)
下载并安装wordpress代码
wget https://wordpress.org/latest.zip
unzip latest.zip
mv wordpress/* /var/www/html/
rm -rf wordpress/ latest.zip
sudo chown -R apache:apache /var/www/html/*
chmod -R 775 /var/www/html
systemctl restart httpd.service
systemctl status httpd.service
打开浏览器:
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片24-1024x516.png)
6) 连接数据库,创建一个简单的博文
首先确定ECS在白名单里
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片25-1024x445.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片26-1024x512.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片27-1024x401.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片28-1024x458.png)
注意:端口是3543,而不是mysql常见的3306。但是wordpress图形化wizard只能连接3306端口,所以图形界面是连不上的。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片29.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片30.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片31-1024x406.png)
原因是RDS-MYSQL端口变成了3453, 只能手动编辑wp-config.php文件。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片32.png)
继续初始化:
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片33-1024x730.png)
初始化完成后,创建一个简单的页面。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片34-1024x520.png)
7) ECS制作镜像,同步镜像到EFB,创建另一个EFB的ECS实例
ECS制作镜像要先关机,这个也是限制啊,AWS可以开机做镜像。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片35-1024x350.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片36-1024x431.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片37.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片38-1024x317.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片39-1024x438.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片40-1024x389.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片41-1024x325.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片42-1024x369.png)
EFS的授权上要加上EFB的ECS
RDS白名单上添加EFB的ECS
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片43-1024x383.png)
两个ECS都可以访问同样的内容:
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片44-1024x548.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片45-1024x509.png)
8) 创建ELB, 把EFA和EFB的ECS实例添加服务器资源池并配置监听器
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片46-1024x548.png)
添加两个ECS到ELB的资源池
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片47-1024x387.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片48-1024x644.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片49-1024x378.png)
注意
尽管是公网的ELB, 但是ECS并不需要公网的IP地址,所以此时解绑两个ECS的EIP也是可以的。
9) 创建云解析并解析ELB的公网IP
这里临时使用了我的一个阿里云的域名entrycloud.cn
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片50-1024x390.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片51.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片52-1024x356.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片53-1024x738.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片54-1024x575.png)
10) 模拟拟EC2实例故障,检验ELB高可用
关闭一个ECS,服务不中断。
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片55-1024x500.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片56-1024x347.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片57-1024x416.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/图片58-1024x500.png)
3. AS伸缩组探索
架构图
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/1.png)
单独建立一个ELB
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/2-1024x445.png)
单独建立一个监视器
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/3-1024x369.png)
创建AS组
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/4-1024x463.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/5-1024x487.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/6-1024x507.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/7-1024x466.png)
![](http://www.cloudbin.cn/wp-content/uploads/2020/04/8-1024x462.png)
启动伸缩组成功,但是ECS在不停的重启,服务监听失败。
估计是EFS和数据库需要手动添加授权和白名单,无法和AS自动配合,后续等待产品经理升级方案。