申明:本文以平安金融云(https://fincloud.pinganyun.com/)为例,内容来自互联网公开信息。

本文以wordpress为例,创建一个高可用、可扩展、高性能的站点。涉及到平安金融云服务有VPC、Security Group、RDS-MySQL、EFS、EC2、ELB、云网通、CDN、OBS等,最后尝试了Auto Scalling组的创建。其中的问题共大家讨论。

1. 架构图

本次实验选择平安云华东区的两个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. 部署环境分为以下步骤:

  1. 创建VPC、子网、安全组
  2. 创建RDS-MySQL实例
  3. 创建EFS文件系统实例
  4. EFA中创建ECS实例,并绑定EIP,  安装Apache, PHP程序
  5. ECS实例挂载EFS文件系统,部署Wordpress代码并连接数据库
  6. 创建一个简单的博文
  7. ECS制作镜像,同步镜像到EFB,创建ECS实例
  8. 创建ELB, 把EFA和EFB的ECS实例添加服务器资源池并配置监听器
  9. 创建云解析并解析ELB的公网IP
  10.  模拟拟EC2实例故障
  11.  模拟RDS实例故障

1) 创建VPC、子网、安全组

分别在EFA和EFB创建子网,因为需要Muti-AZ部署。

创建webserver security group,开放http80, ssh22端口。

注意:此处的安全组SG是有状态的,只用开通入方向的规则,出方向自动放行。

2) 创建RDS-MySQL实例

需要选择一个主可用区A,但是实际上EFA/EFB都能访问。而且文档中也说明了RDS默认部署就是Muti-AZ的主备架构。

注意

  1. RDS没有使用MySQL默认的3306端口,常规实例、远程灾备实例、同城只读实例和远程只读实例分别具有各自的访问域名和端口号。
  2. 必须开通白名单才能连接数据库,而且看起来白名单只能是一个个的选择ECS实例。

另外,白名单自动打通了ECS的端口连接,不用在security group上添加任何规则,ECS就可以连接数据库。

3) 创建EFS文件系统

可用区要选择,但是EFB也能够连接到EFS。文档中也说明了EFS是Region内部都可以访问。存储类型要选择性能型,因为存储wordpress app主程序,有IO读写。

注意:和RDS一样,访问EFS需要授权,而且看起来也只能对ECS授权。

同样,EFS授权自动打通了ECS的端口连接,不用在security group上添加任何规则,ECS就可以连接EFS。

4) EFA中创建ECS实例,配置EIP, 并安装Apache, PHP程序

为ECS配置EIP

升级

yum update -y

安装httpd

安装PHP73

测试一下

5) ECS实例挂载EFS文件系统,部署Wordpress代码在EFS上

首先要确定ECS被EFS授权连接

下载并安装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

打开浏览器:

6) 连接数据库,创建一个简单的博文

首先确定ECS在白名单里

注意:端口是3543,而不是mysql常见的3306。但是wordpress图形化wizard只能连接3306端口,所以图形界面是连不上的。

原因是RDS-MYSQL端口变成了3453, 只能手动编辑wp-config.php文件。

继续初始化:

初始化完成后,创建一个简单的页面。

7) ECS制作镜像,同步镜像到EFB,创建另一个EFB的ECS实例

ECS制作镜像要先关机,这个也是限制啊,AWS可以开机做镜像。

EFS的授权上要加上EFB的ECS

RDS白名单上添加EFB的ECS

两个ECS都可以访问同样的内容:

8) 创建ELB, 把EFA和EFB的ECS实例添加服务器资源池并配置监听器

添加两个ECS到ELB的资源池

注意

尽管是公网的ELB, 但是ECS并不需要公网的IP地址,所以此时解绑两个ECS的EIP也是可以的。

9) 创建云解析并解析ELB的公网IP

这里临时使用了我的一个阿里云的域名entrycloud.cn

10) 模拟拟EC2实例故障,检验ELB高可用

关闭一个ECS,服务不中断。

3. AS伸缩组探索

架构图

单独建立一个ELB

单独建立一个监视器

创建AS组

启动伸缩组成功,但是ECS在不停的重启,服务监听失败。

估计是EFS和数据库需要手动添加授权和白名单,无法和AS自动配合,后续等待产品经理升级方案。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据