AWS 高可用AWS架構方案

tanghui13159 發表於 2020-12-02

AutoScaling,Elastic Load Balancer,CloudFront和Route 53

高可用AWS架構方案-Wordpress

 AutoScaling,Elastic Load Balancer,CloudFront和Route 53

  • 架構圖
  • VPC_SG_IAM_RDS_EFS
    • 建立VPC網路
    • 建立安全組
    • 建立IAM角色
    • 建立RDS例項
    • 建立EFS檔案系統
  • 安裝Apache&PHP,配置wordpress
    • 程式碼:
    • 配置wordpress
    • 登陸方式:
    • 測試:
    • Bootstrap指令碼
  • 使用CloudFront進行內容分發服務
    • 建立S3儲存桶
    • 建立CloudFront,源為S3儲存桶
    • 安裝Wordpress建立WP Offload S3 Lite
    • WP Offload S3外掛作用:
  • 使用AutoScaling,Elastic Load Balancer和Route 53
    • Elastic Load Balancer,建立Application Load Balancer
    • Route 53,建立Route 53並使用Alias記錄解析ELB
    • Settings
    • 建立AMI映象,建立啟動配置(Lauch Configuration),建立Auto Scaling組
      • public subnet & Target group
    • 驗證
  • 清理工作
    • Auto Scaling Group
    • EC2例項
    • AMI
    • 快照
    • ELB
    • Route53
    • EFS
    • S3
    • RDS例項

架構圖

AWS 高可用AWS架構方案

畫圖工具


1. VPC_SG_IAM_RDS_EFS(所有的資源應該使用CloudFormation去建立)
  1.1 建立VPC網路
  1.2 建立安全組
  1.3 建立IAM角色
  1.4 建立RDS例項
  1.5 建立EFS檔案系統
2. 安裝Apache&PHP,配置wordpress
  2.1 配置:
  2.2 配置wordpress
  2.3 登陸方式:
  2.4測試:
  2.5 Bootstrap指令碼

1. VPC_SG_IAM_RDS_EFS(所有的資源應該使用CloudFormation去建立)

1.1 建立VPC網路

子網掩碼劃分,最小不能小於/28,aws自己要佔5個IP地址(一個vpc路由器地址,一個做vpc dns伺服器地址,一個預留,一個廣播地址)

AWS 高可用AWS架構方案

1.2 建立安全組

AWS 高可用AWS架構方案

 AWS 高可用AWS架構方案

1.3 建立IAM角色

AWS 高可用AWS架構方案

1.4 建立RDS例項

AWS 高可用AWS架構方案

1.5 建立EFS檔案系統

AWS 高可用AWS架構方案

2. 安裝Apache&PHP,配置wordpress

2.1 配置:

yum install httpd24 -y
chkconfig httpd on
 
yum -y install php55 php55-bcmath php55-devel php55-common php55-cli php55-pecl-apc php55-pdo php55-mysql php55-xml php55-gd php55-mbstring php-pear php55-mysqlnd php55-mcrypt
 
 
sudo yum install -y amazon-efs-utils
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-469e6527.efs.ap-northeast-2.amazonaws.com:/ /var/www/html/
 
cd /var/www/html/
wget https://wordpress.org/latest.zip
 unzip latest.zip
 mv wordpress/* /var/www/html/
 rm -rf latest.zip wordpress/
 chown -R apache:apache /var/www/html/*
 chmod -R 755 /var/www/html/*

2.2 配置wordpress

AWS 高可用AWS架構方案

  AWS 高可用AWS架構方案

  [[email protected] html]# vim wp-config.php

[[email protected] html]#

測試,所以不需要Google搜尋

AWS 高可用AWS架構方案

  AWS 高可用AWS架構方案

2.3 登陸方式:

http://13.209.82.198/wp-admin/

2.4測試:

寫一個test page

AWS 高可用AWS架構方案

  AWS 高可用AWS架構方案        AWS 高可用AWS架構方案

 

2.5 Bootstrap指令碼

#!/bin/bash
sudo -s
sudo yum update -y
yum install httpd24 -y
chkconfig httpd on
yum -y install php55 php55-bcmath php55-devel php55-common php55-cli php55-pecl-apc php55-pdo php55-mysql php55-xml php55-gd php55-mbstring php-pear php55-mysqlnd php55-mcrypt
sudo yum install -y amazon-efs-utils
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-469e6527.efs.ap-northeast-2.amazonaws.com:/ /var/www/html
sudo echo "fs-469e6527.efs.ap-northeast-2.amazonaws.com:/ /var/www/html nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0" >> /etc/fstab
cd /var/www/html
echo "<?php phpinfo(); ?>" > phpinfo.php
service httpd start
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/*
sudo chmod -R 775 /var/www/html

 

3. 使用CloudFront進行內容分發服務
  3.1 建立S3儲存桶
  3.2 建立CloudFront,源為S3儲存桶
  3.3 安裝Wordpress建立WP Offload S3 Lite

3. 使用CloudFront進行內容分發服務

3.1 建立S3儲存桶

3.2 建立CloudFront,源為S3儲存桶

AWS 高可用AWS架構方案

3.3 安裝Wordpress建立WP Offload S3 Lite

由於是通過角色新增的,所以沒有所謂的Key等 ,故修改配置檔案將之說明即可,第一張是下載和啟用,第二張是設定 ,配置(vim /var/www/html/wp-config.php),第三張是結果

AWS 高可用AWS架構方案

 AWS 高可用AWS架構方案

 AWS 高可用AWS架構方案

選擇合適的S3

AWS 高可用AWS架構方案

 3.4 WP Offload S3外掛作用:

WordPress多媒體檔案自動上傳到S3

URL重寫,將本地多媒體檔案的URL重寫為S3的URL

AWS 高可用AWS架構方案

URL重寫,將本地多媒體檔案的URL重寫為Cloudfront的URL,使用者訪問時,自動將使用者的流量指向CloudFront。自動讀取CDN上的多媒體檔案。

AWS 高可用AWS架構方案

 AWS 高可用AWS架構方案

  最後達到的結果,就是,所有的靜態檔案放到S3上;所有程式相關的檔案放到EFS上;資料庫是放在另外的RDS上。


4. 使用AutoScaling,Elastic Load Balancer和Route 53
  4.1 Elastic Load Balancer,建立Application Load Balancer
  4.2 Route 53,建立Route 53並使用Alias記錄解析ELB
  4.3 Settings
  4. 建立AMI映象,建立啟動配置(Lauch Configuration),建立Auto Scaling組
  4.5 驗證
5. 清理工作
  Auto Scaling Group

4. 使用AutoScaling,Elastic Load Balancer和Route 53

4.1 Elastic Load Balancer,建立Application Load Balancer

AWS 高可用AWS架構方案

4.2 Route 53,建立Route 53並使用Alias記錄解析ELB

AWS 高可用AWS架構方案

4.3 Settings

AWS 高可用AWS架構方案

4. 建立AMI映象,建立啟動配置(Lauch Configuration),建立Auto Scaling組

AWS 高可用AWS架構方案

4.4.1 public subnet & Target group

注意:建立 Auto Scaling 組,使用擴充套件策略調整此組的容量

AWS 高可用AWS架構方案

 AWS 高可用AWS架構方案

AWS 高可用AWS架構方案

AWS 高可用AWS架構方案

4.5 驗證

AWS 高可用AWS架構方案

 AWS 高可用AWS架構方案

 AWS 高可用AWS架構方案

模擬EC2例項故障、RDS例項故障進行故障轉移測試,檢視應用程式是否能自動進行切換,保證業務不中斷。

當終止一臺EC2時,Auto Scaling會自動在相同的AZ區域新增一臺ec2,在生產環境中,不會稍微的造成一些影響,訪問會稍微有些延遲 。我們可以在Lauch Configuration更改一些閾值。讓健康狀態檢查時間變短。

當重啟RDS時,由於例項部署在多可用區的,所以重啟例項的話,在另一個區域的backup會自動生效。理論上只會影響主資料庫,對備份資料庫不會造成任何影響。

AWS 高可用AWS架構方案

5. 清理工作

清理的內容包括:

Auto Scaling Group

EC2例項

AMI

快照

ELB

Route53

EFS

S3

RDS例項