CategoryAWS

AWS – RDS Restore to Point in Time

昨天犯了一個錯誤,用錯腳本,導致更新資料到資料庫時,更新到Production上

原本是要更新到空的Stage資料庫上的…

緊急發現的時候需要還原,但是距離上一次備份資料是前一天

中間的資料差損失會造成很誇張的後果

 

印象中記得AWS有一個Restore to Point in Time的功能

就直接硬著頭皮上了

使用Restore to Point in Time有兩個條件

1.RDS必須有開啟 Automated Backups

2.同上一點,備份的區間就是可以回復的時間區間

舉例:我備份檔案選擇7天,那在選擇還原點的時間就是這七天內都可選

 

確認是不是有開啟很簡單,確認RDS選單內有沒有出現一堆Automated就是了

系統會自動製作許多還原點的Snapshots

還原流程則是

1.選擇你當下需要還原的RDS,在Instance Actions中選擇Restore to Point in Time

 

2.會出現一個建立新RDS的畫面,主要需要留意上方出現的還原時間選擇點

系統會預設最後一筆還原時間,是當下的5分鐘之前

或是你可以選擇在你設定的備份區間之內的任一時間點

 

3.幫還原的RDS設定名稱,其他設定預設會與原本的RDS相同,如VPC、Multi_AZ等

 

4.Launch DB即可

接著將連線導回還原時間點新建立的DB,基本上就完成的還原的動作

我實際使用後檢查DB的時間

我建立是11:27:00的還原點,DB內的最後一筆資料時間為11:26:55

所以還是會有些微的誤差,但比起系統最後一次備份的時間,還是好太多了

提供給各位參考

 

AWS CloudTrail Log問題

最近公司的AWS帳號開啟了 CloudTrauil的功能

但是最近在查詢操作紀錄的時候發現到有怪怪的LOG

%e6%93%b7%e5%8f%96

我使用IAM user進行操作,但是出現了root的操作紀錄

詢問了一下主管,並未使用root同時進行操作

然後細查了LOG的內容是針對同一個service的操作

詢問了新加坡的TC之後,得到了一個連結

https://aws.amazon.com/tw/premiumsupport/knowledge-center/cloudtrail-root-action-logs/

說明這個狀況是正常的XD

提供給需要的人參考…

AWS-MFA and Authy 設定

最近因為有遇到一些狀況,為了資安的考量

建議公司全部帳號一律使用MFA做多一道防護

其實很多遊戲都有使用了這樣子機制,包括一些銀行也有,但是銀行端是使用OTP

設定的話,在AWS的IAM當中,每個USER內都可以設定自己的MFA裝置

擷取

由於我的IAM帳號有設定了,我先移除重新設定一下

擷取

點選 Manage MFA Device,之後會看到兩個裝置的設定,正常都是選APP,手機太方便XD

擷取

會出現一些關於MFA的注意事項與說明

擷取

然後會出現QR CODE,安裝APP 掃瞄一下

填上出現的兩組code就可以通過驗證了

之後登入就需要多填一組驗證的隨機碼了

 

再來是要說明的Authy

註冊Authy之後,掃上一個步驟的QR CODE

會出現下圖

S__4972616

確定之後

S__4972617

之後就用這個驗證做登入了

當然為什麼要推薦使用Authy的原因不是這麼簡單

原因在於Authy有Chrome套件

安裝完之後 Chrome會出現一個工具鈕

擷取

點開之後,第一次會要求你註冊手機號碼

擷取

填入後會請你確認需要哪一種方式驗證,可以使用電話、SMS,以及另一個有註冊過的裝置,我習慣使用SMS

擷取

註冊完之後,會出現這畫面,如果與你手機有同步的話,就會出現你有的裝置MFA資訊

擷取

有驚嘆號是因為尚未解除鎖定,會先要求設定開啟Authy的密碼

擷取

設定完密碼之後,你會發現右下角的Backyo&Sync無法打勾

這時候請去手機APP裡面設定backup password

之後關閉設定視窗,回到下圖,點一下鎖頭

輸入backup password即可解除

擷取

之後沒有手機,也可以用chrome解除MFA了

AWS RDS MySQL 連線數量限制

前天看到一篇文章有提到關於RDS MySQL的最大連線數量限制

剛好之後也許會需要這個數據作為系統架構設計的參考

順便分享出來

規格與連線數量限制如下方表格

t2.micro 66
t2.small 150
m3.medium 296
t2.medium 312
M3.large 609
t2.large 648
M4.large 648
M3.xlarge 1237
R3.large 1258
M4.xlarge 1320
M2.xlarge 1412
M3.2xlarge 2492
R3.xlarge 2540

有些規格可能沒有資料,但實際上按照比例去參考應該相差不遠

參考資料來源

AWS ELB新服務 ALB

AWS真是一個強大的功能

今天更新了一個新的Service 由ELB延伸出的新服務 ALB

我大概看了一下文章的內容

傳統的ELB走網路層的協定去做負載平衡

ALB走第七層 應用層的協定做負載平衡

以下圖為例

右邊是傳統的ELB模式,左邊是ALB模式

主要定義為 假設第一組的監控路徑為 /index.php  那麼第二組可以設定 /mobile.php

這樣子是不是一組ELB分為兩個應用了呢?

其實滿有趣的,應用的程度應該會多樣化許多,之後有需求就可以玩看看啦~

8/19 補充更新,ALB可以使用port作為一個單位做指定,配合container的形態使用

因為我本身沒有實際設置過,所以這資訊是一位強者提供的,實際上的功能請親自使用XD

參考文章來源 AWS Blog

AWS CLI 取得EC2 IP

目前的公司有與日本合作

在做關於AWS 上的 Auto scaling的時候,因為有佈署更新相關的需求

所以需要得知Auto scaling所啟動的EC2 IP

有看到日本方面提供了一個Ruby寫的腳本

但是好像不夠泛用

 

所以我自己寫了一個Shell版本的

主要是用Tag Key去做判斷取出對應EC2 IP

#!/bin/bash
key=Name
value=”$1″
declare -a hostbox
declare -a ipbox
hosts=`aws ec2 describe-tags –filters “Name=key,Values=Name” “Name=value,Values=$value” –output text|wc -l`
for (( i=1 ; i<=$hosts ; i++ ))
        do
        hostbox[i]=`aws ec2 describe-tags –filters “Name=key,Values=Name” “Name=value,Values=$value” –output text|head -n $i|tail -n 1|awk ‘{print $3}’`
        ipbox[i]=`aws ec2 describe-instances –instance-ids ${hostbox[i]} |grep PrivateIpAddress|tail -n1|awk ‘{print $2}’|cut -d ‘”‘ -f2`
        echo ${ipbox[i]}
        done

AWS-NATGATEWAY & ELB 並存設計

昨天颱風天為了進度還是進公司一趟趕了建置環境的案子

一切都很順利的時候,突然發現設計上又卡了

原本出問題的架構是這樣子

unnamed

EC2在不對外的網段內,然後透過NATGATEWAY出去

但是在這情況之下,ELB會無法運作

在短時間內無解的情況下,我調整了一下自己的設計規劃

將EC2全部改走IGW出去並設置Publuc IP,因為EC2需要對外呼叫API

Route Table也都修改掉,拿掉NATGATEWAY

然後回到家的路上有詢問AWS的技術團隊

討論到晚上十一點多總算找出設計上的解法

擷取

上圖是AWS新加坡團隊 Solution Architect TC 做的架構圖

原本是給我這個連結 http://stackoverflow.com/questions/9257514/amazon-elb-in-vpc

然後我實作了一下,的確可以解決了NATGATEWAY與ELB共存的問題

與我IGW修改的架構接近,但是我少了AZ內的subnet流量概念

所以我用Public IP處理

接下來只要修改掉這個部分,這個問題就解決了

這份資料就提供給日後有需要的人參考囉

 

AWS-NAT GATEWAY

今天實作預計的新架構圖時卡到的一個問題

當全部的EC2都要走NAT GATEWAY時要怎麼做?

我同事原本的架構是手動加route去做,比較傳統的解法

可是在AWS上就會有一些機制受到影響

研究Route Table半天,也沒有甚麼解法

最後我在看官網文件時發現這張圖

擷取

我覺得有點類似之間EC2做NAT的架構

後來試著理解之後改一下,就解決了

 

解決方式是

subnet A (不對外網段) (上圖private Subnet)

subnet B (對外網段)  (上圖public Subnet)

igw的route table A (上圖Custom Route Table)

ngw的route table B (上圖 Main Route Table)

一個掛在subnet B的NAT GATEWAY (上圖NAT Gateway)

將subnet B掛在 route table A

將subnet A掛在 route table B

在subnet A開一台EC2 不給public IP

完成後,這台EC2就可以對外了~

 

結果依照我公司的作法

變成要開三個網段才能解這個問題了…

AWS-EC2 DNS問題

今天跟同事查一個問題時發現到的小狀況

嚴格說起來算是架構上設計造成的問題

每台EC2的預設DNS解析都是該網段VPC+2

舉例來說 VPC是172.31.0.0/16

那EC2的預設DNS就是 172.31.0.2

如下圖

擷取

基本上不會有任何問題

但是目前就遇到了

公司目前的設計架構,因為不熟悉AWS的設計理念與規劃架構的方式

採用的是類似我前公司的多網段分層設計方式

舉例 會有 10.10.0.0   10.10.1.0  10.10.2.0 10.10.3.0

VPC當然會設計是開10.10.0.0/16

那問題來了,內部的EC2 DNS就會是10.10.0.2

正常的情況都會沒有任何問題才對

偏偏問題就是在於架構是非正規VPC的設計方式

subnet與subnet之間的server連接是透過route table的方式去指定

所以造成 10.10.1.0  10.10.2.0 10.10.3.0網段

全部無法連接到10.10.0.2這台DNS

問題與原因已經不可考了

 

因為這樣子的關係,我查了一下AWS的文件

除了EC2預設的系統自帶的VPC+2以外

可以另外指定AWS專用的內部DNS 169.254.169.253

下圖是範例

擷取

因程式有要求須要透過DNS進行本機端HOSTNAME進行IP解析

但是因上述的狀況造成無法解析的問題

所以設定了AWS的專用DNS進行本機HOSTNAME的解析

結果是成功的~

解決了這種複雜架構的困擾

AWS-sample design

基本上AWS架構去上過課學出來的都差不多

礙於職場道德的關係,還是只能修修改改

下圖就是這段時間大概弄出來的新架構(大概刪減了50%的機密)

反正去GOOGLE也找得出來類似的圖XDD

7f1347ee-1646-4fcd-b073-af85a743a629-large

簡單來說又是一個標準化的AWS建置,但是其中接觸到兩個我只有上過課

但是沒有實際操作過的東西,一個是NAT GATEWAY

另一個就是VPC Tunnel了

 

然後在架構面之外另外一個點就是流程面的設計了

這個可能我要改畫流程圖,不過構想還在腦海中

等架構完成實際驗證過後,我在分享出來

 

© 2024 Kila's IT Home

Theme by Anders NorénUp ↑