Sean's Note: 10月 2018

2018年10月28日 星期日

AWS 學習筆記 (四) - 常使用的 AWS Services 簡介 - Part 1

Cloudwatch

官方介紹:
---------------------------------------------------------
Amazon CloudWatch 是針對開發人員、系統業者、網路可靠性工程師 (SRE) 和 IT 管理員建置的監控和管理服務。CloudWatch 為您提供資料和可行的洞見以監控應用程式、了解並回應整個系統的效能變化、優化資源使用情況,以及透過整合的檢視來查看運作狀態。CloudWatch 以日誌、指標和事件的形式來收集監控和運作資料,為 AWS 與現場部署伺服器上執行的 AWS 資源、應用程式和服務提供一個整合的檢視。您可以使用 CloudWatch 來設定高解析度警示、將日誌和指標並列展示、採取自動動作、對問題進行故障診斷,還有探索洞見以優化應用程式,以確保其執行順暢。
---------------------------------------------------------

Elastics Load Balancing 

假設今天有兩個以上的 EC2 Instances,我們要如何適當的分配使用者的請求,以避免所有的使用者集中在同一個 EC2 而導致資源過載。

官方介紹:
---------------------------------------------------------
Elastic Load Balancing 可在多個目標 (例如 Amazon EC2 執行個體、容器與 IP 地址) 之間自動分配傳入的應用程式流量。它可以在單一可用區域或跨多個可用區域處理您應用程式流量的各種負載。Elastic Load Balancing 提供三種負載平衡器,它們都具有下列特性:高可用性、自動擴展,以及讓您的應用程式具備容錯功能的強大安全防護。More...
---------------------------------------------------------

AWS 又為 Elastic Load Balancing 提供了三種選擇:

  1. Classic Load Balancer - 基本款。
  2. Application Load Balancer - 適合用於處理 HTTP/HTTPS 流量的負載平衡。
  3. Network Load Balancer - 適用於需要極高效能的情況下處理 TCP 流量的負載平衡。

Autoscaling

官方介紹:
---------------------------------------------------------
AWS Auto Scaling 可監控應用程式並自動調整容量,盡可能以最低成本維持穩定、持續的優異效能。使用 AWS Auto Scaling,幾分鐘內即可為多項服務的多種資源輕鬆設定應用程式擴展功能。這個服務提供簡單而強大的使用者界面,可讓您各種資源打造擴展計畫,包括 Amazon EC2 執行個體和 Spot 叢集、Amazon ECS 任務、Amazon DynamoDB 表格和索引,以及 Amazon Aurora 複本。AWS Auto Scaling 可為您推薦合適的解決方案,協助您有效提升效能、降低成本,在兩者之間取得絕佳平衡,讓擴展作業不再繁瑣複雜。如果您已使用 Amazon EC2 Auto Scaling 動態擴展 Amazon EC2 執行個體,現在可以進一步結合 AWS Auto Scaling,為其他 AWS 服務提供更多資源。有了 AWS Auto Scaling,應用程式就能在需要時取得合適的資源。 透過 AWS 管理主控台、命令列界面(CLI)或 SDK 輕鬆開始使用 AWS Auto Scaling。使用 AWS Auto Scaling 不會產生額外費用。您只需支付執行應用程式時所需的 AWS 資源費用和 Amazon CloudWatch 監控費用。
---------------------------------------------------------

Route 53

官方介紹:
---------------------------------------------------------
Amazon Route 53 是一種可用性高、可擴展性強的雲端網域名稱系統 (DNS) Web 服務。該服務旨在為開發人員和企業提供一種非常可靠且經濟實惠的方式,將名稱 (如 www.example.com) 轉換為電腦用於互相連接的數字 IP 地址 (如 192.0.2.1),藉以將最終使用者路由到網際網路應用程式。Amazon Route 53 也可與 IPv6 完全相容。 Amazon Route 53 高效地將使用者請求連接到 AWS 中執行的基礎設施,例如 Amazon EC2 執行個體、Elastic Load Balancing 負載平衡器或 Amazon S3 儲存貯體,還可以將使用者路由到 AWS 外部的基礎設施。您可以使用 Amazon Route 53 設定 DNS 運作狀態檢查以將流量路由到狀況良好的端點,或者獨立監控應用程式及其端點的運作狀態。Amazon Route 53 Traffic Flow 讓您可以輕鬆透過多種路由類型 (包括 Latency Based Routing、Geo DNS、Geoproximity 和加權輪詢均衡) 來管理全球流量,所有的路由類型都可以與 DNS 備援進行組合,以實現各種低延遲容錯架構。使用 Amazon Route 53 Traffic Flow 簡單的視覺化編輯器,無論最終使用者是在單一 AWS 區域或分佈於世界各地,您都可以輕鬆管理他們路由到應用程式端點的方式。Amazon Route 53 還提供網域名稱註冊功能,您可以購買和管理網域名稱 (例如 example.com),而 Amazon Route 53 將自動為您的網域設定 DNS 設置。
---------------------------------------------------------


Simple Queue Service

官方介紹:
---------------------------------------------------------
Amazon Simple Queue Service (SQS) 是全受管訊息佇列服務,可讓您分離和擴展微型服務、分散式系統及無伺服器應用程式。SQS 可免除與管理和操作訊息導向中介軟體相關的複雜性及開銷,也可讓開發人員專注在與眾不同的工作上。您可以使用 SQS 在軟體元件之間傳送、存放和接收不限數量的訊息,不會遺失訊息或需要其他服務可用。使用 AWS 主控台、命令列界面或自選的 SDK 以及三個簡單的命令,即可在幾分鐘內開始使用 SQS。 SQS 提供兩種訊息佇列類型。標準佇列提供最高輸送量、盡力提供最佳排序,以及至少交付一次。SQS FIFO 佇列的設計目的是要保證訊息只會完全依照它們的傳送順序處理一次。
---------------------------------------------------------

Simple Notification Service

官方介紹:
---------------------------------------------------------
Amazon Simple Notification Service (SNS) 是耐用、安全的全受管發佈/訂閱簡訊服務,可讓您分離微型服務、分散式系統及無伺服器應用程式。Amazon SNS 提供了有關高輸送量、以推送為基礎的多對多簡訊的主題。使用 Amazon SNS 主題,您的發佈者系統可以將訊息散發至大量訂閱者端點以平行處理,包括 Amazon SQS 佇列、AWS Lambda 函數和 HTTP/S Webhook。透過 AWS 管理主控台、AWS 命令列界面 (CLI) 或 AWS 軟體開發套件 (SDK), 幾分鐘內就能開始使用 Amazon SNS。
---------------------------------------------------------

CloudFront

官方介紹:
---------------------------------------------------------
Amazon CloudFront 是快捷的內容交付網路 (CDN) 服務,可在開發人員容易使用的環境中,以低延遲、高速傳輸的方式,將資料、影片、應用程式和 API 安全地傳送到全球客戶手中。CloudFront 已與 AWS 完成整合,兩者可從其實體位置直接連線 AWS 全球基礎設施,以及其他 AWS 服務。CloudFront 可與多種服務流暢搭配,包含使用 AWS Shield 減少 DDoS 攻擊次數、以 Amazon S3、Elastic Load Balancing 或 Amazon EC2 做為應用程式的來源,以及使用 Lambda@Edge 在更靠近客戶使用者的位置執行自訂程式碼,並自訂使用者體驗。 您可以透過 API、AWS 管理主控台、AWS CloudFormation、CLI 和軟體開發套件等熟悉的 AWS 工具,快速開始使用內容交付網路。Amazon 的 CDN 提供簡單的按使用量付費定價模式,無需預付費用或簽訂長期合約,同時 CDN 支援也會內含在您現有的 AWS Support 訂閱中。
---------------------------------------------------------

2018年10月25日 星期四

AWS 學習筆記 (三) - 資料庫

Relational Database Service (RDS)

官方介紹:
---------------------------------------------------------
合作夥伴 Amazon Relational Database Service (Amazon RDS) 讓使用者能夠在雲端中輕鬆設定、操作和擴展關聯式資料庫。它提供經濟實惠且可調整大小的容量,且可自動處理硬體佈建、資料庫設定、修補程式和備份等耗時的管理任務。這讓您有更多時間專注在應用程式,以提供其所需的快速效能、高可用性、安全性和相容性。 針對記憶體、效能或 I/O 進行優化的多種資料庫執行個體類型都提供 Amazon RDS,並可讓您選擇六種熟悉的資料庫引擎,包括 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 和 Microsoft SQL Server。您可以使用 AWS Database Migration Service 輕鬆地將現有的資料庫遷移或複寫到 Amazon RDS。
---------------------------------------------------------

筆記:
為了提供 RDS 的 high-availability,AWS 提供了 Multi-AZ 的部署機制,只要將其設定打開,AWS 便會將該 DB instance 設為主要 (Primary) 資料庫,並將資料同步覆寫到備份 (Standby) 資料庫,只有在主要資料庫 fail-over 時,應用程式將自動被導到備份資料庫。與 Multi-AZ 不同,Read Replicas 是為了減少主要資料庫的負載,而將請求導向其他副本資料庫。

DynamoDB

官方介紹:
---------------------------------------------------------
Amazon DynamoDB 是非關聯式資料庫,無論任何規模均能提供可靠效能。它是全受管、多區域、多主機的資料庫,可提供穩定的小於 10 毫秒延遲,還包括內建安全性、備份和還原以及記憶體內快取。
超過 100,000 個 AWS 客戶已選擇將 DynamoDB 運用在需要低延遲資料存取的行動應用程式、Web、遊戲、廣告技術、IoT 和眾多其他應用程式。為應用程式建立新表格,然後讓 DynamoDB 處理後續動作。 
---------------------------------------------------------

筆記:
DynamoDB 是 AWS 自家的一套 NoSQL DB,所謂 NoSQL DB 即是沒有 schema 概念的,而是已 JSON 格式為主的 document 形式。DynamoDB 除了以空間計價之外,也以讀取寫入容量單位 (Read/Write Capacity Unit) 來做計價,1 RCU 等同於每秒讀取 4KB,1 WCU 等同於每秒寫入 1KB。如果我們預期每秒要能讀取 20KB,並保證 eventually consistent,那 RCU 就應該要設成 5,若是要 strong consistent,則 RCU 要兩倍算,即是 10。
除此,DynamoDB 也有 Autoscaling 的機制跟 DynamoDB Accelerator (DAX),DAX 是透過 In-memory cache 的方式將毫秒的請求縮短到微秒。

Aurora

官方介紹:
---------------------------------------------------------
Amazon Aurora 是一種關聯式資料庫引擎,結合了高階商業資料庫的速度和可靠性,以及開放原始碼資料庫簡單和經濟實惠的優點。Amazon Aurora MySQL 可提供比 MySQL 高五倍的效能,大多數 MySQL 應用程式都無須任何變更;同樣地,Amazon Aurora PostgreSQL 可提供比 PostgreSQL 高三倍的效能。Amazon RDS 可管理您的 Amazon Aurora 資料庫,處理各種耗時的任務,如佈建、修補、備份、恢復、故障偵測和修復。您只需每月針對所使用的每個 Amazon Aurora 資料庫執行個體支付費用。不需要預先支付費用或簽訂長期合約。
---------------------------------------------------------


2018年10月23日 星期二

AWS 學習筆記 (二) - 資料儲存

Elastic Block Store (EBS)

官方介紹:
---------------------------------------------------------
Amazon Elastic Block Store (Amazon EBS) 可在 AWS 雲端提供用於 Amazon EC2 執行個體的持久性區塊儲存磁碟區。每個 Amazon EBS 磁碟區會在其可用區域內自動複寫,以保護您免於元件故障的威脅,同時提供高可用性和耐久性。Amazon EBS 磁碟區為您提供執行工作負載所需的一致性和低延遲效能。使用 Amazon EBS,您可在幾分鐘內調整用量大小 – 您只需為佈建的資源量支付低廉的價格。 

Amazon EBS 是專為應用程式工作負載所設計,而這些工作負載可從效能、成本和容量的微調中獲益。典型的使用案例包含大數據分析引擎 (像是 Hadoop/HDFS 生態系統和 Amazon EMR 叢集)、關聯式和 NoSQL 資料庫 (像是 Microsoft SQL Server 和 MySQL 或 Cassandra 和 MongoDB)、串流和日誌處理應用程式 (像是 Kafka 和 Splunk),以及資料倉儲應用程式 (像是 Vertica 和 Teradata)。
---------------------------------------------------------

筆記:
EBS Volume 的好處是在任何時間可以從一 EC2 Instance detach 然後 attach 到另一 EC2 Instance 上,並且在任何時間調整容量大小與加密。備份 EBS Volume 的方法是為其建立一個 snapshot,並在需要時用其建立一個新的 Volume 在指定的 AZ 或複製 snapshot 到其他 Region 後為其建立備份。

EBS 提供四種 volume 選項:
  1. EBS Provisioned IOPS SSD (io1) - 專為對延遲敏感的交易工作負載而設計的最高效能 SSD 磁碟區。
  2. EBS General Purpose SSD (gp2) - 針對各種交易工作負載平衡價格效能的一般用途 SSD 磁碟區。
  3. Throughput Optimized HDD (st1) - 專為經常存取、輸送量密集型工作負載而設計的低成本 HDD 磁碟區。
  4. Cold HDD (sc1) - 專為存取頻率較低工作負載而設計的最低成本 HDD 磁碟區。

Elastic File System (EFS)

官方介紹:
---------------------------------------------------------
Amazon Elastic File System (Amazon EFS) 提供簡單,可擴展的彈性檔案儲存,可與 AWS 雲端服務和現場部署資源搭配使用。 它不但易於使用,而且提供簡單的界面,讓您能夠快速輕鬆地建立和設定檔案系統。Amazon EFS 的設計可隨需彈性地擴展且不會中斷應用程式,可隨著您新增和移除檔案自動擴展和縮減,讓您的應用程式隨時都能獲得所需的儲存。它的設計旨在提供數千個 Amazon EC2 執行個體的大量平行共享存取,以便您的應用程式達到高標準的彙總輸送量和 IOPS,其可隨檔案系統成長而擴展,同時維持一致的低延遲。Amazon EFS 是地區性服務,其設計目的是提供高可用性和耐久性,以冗餘方式跨多個可用區域存放資料。 有了這些能力,Amazon EFS 非常適用於支援廣泛類型的使用案例,包括:Web 服務和內容管理、企業應用程式、媒體和娛樂處理工作流程、主目錄、資料庫備份、開發人員工具、容器儲存,以及大數據分析工作負載。
---------------------------------------------------------

筆記:
EBS Volume 同一時間只能 attach 於一個 EC2 Instance,若資料需要共享於多個 EC2 Instance 之間就需要 EFS,EFS 是透過網路介面與 EC2 Instance 建立連線。


Simple Storage Service (S3)

官方介紹:
---------------------------------------------------------
現在的公司需要具備以簡單且安全的方式收集、存放和分析大規模資料的能力。Amazon S3 是專為從任何位置存放和擷取任何數量資料所建立的物件儲存 – 網站和行動應用程式、公司應用程式,以及來自 IoT 感應器或裝置的資料。它的設計是為了提供 99.999999999% 的耐久性,並可為每個產業市場領導者所用的數百萬個應用程式存放資料。S3 提供完整的安全與合規功能,甚至可符合最嚴格的法規需求。它提供客戶彈性,使其可針對成本優化、存取控制和合規管理資料。S3 提供就地查詢功能,可讓您直接對 S3 中的靜態資料執行強大的分析。Amazon S3 是目前最受支援的雲端儲存服務,可與最大的第三方解決方案社群、系統整合商合作夥伴和其他 AWS 服務整合在一起。
---------------------------------------------------------

Glacier

官方介紹:
---------------------------------------------------------
Amazon Glacier 是成本極低的雲端儲存服務,為資料存檔和長期備份提供安全且耐用的儲存。它旨在提供 99.999999999% 的耐久性,並提供全面的安全性和合規功能,有助於滿足最嚴格的監管要求。Amazon Glacier 提供就地查詢功能,允許您直接在靜態存檔資料上執行強大的分析功能。客戶儲存資料時,每月每 GB 只要 0.004 USD,與現場部署解決方案相比,顯著降低了成本。為了保持低成本兼適用於各種擷取需求,Amazon Glacier 提供三個存取存檔的選項,擷取時間從數分鐘到數小時。
---------------------------------------------------------

筆記:
Glacier 讀取的選項有三種:

  1. Expedited - 當有急需,並針對大部分 250MB 以下的檔案,只要等一到五分鐘後就才能下載。
  2. Standard - 預設的選項,通常需要等候三到五個小時之後才能下載。
  3. Buck - 最便宜的選項,通常需要等候五到十二個小時之後才能下載。

2018年10月1日 星期一

AWS 學習筆記 (一) - Basic 基礎

Global Infrastructure

官方介紹:
---------------------------------------------------------
AWS 雲端遍及全球 18 個地理區域內的 55 個可用區域和 1 個當地區域,而且已宣布計劃在巴林、開普敦、香港特別行政區、斯德哥爾摩增加 15 個可用區域和五個 AWS 區域,以及在美國增加第二個 GovCloud 區域。
---------------------------------------------------------

AWS Global Infrastructure
圖片來源:https://aws.amazon.com/about-aws/global-infrastructure/?nc1=h_ls

筆記:

AWS Regions and Availability Zones

AWS 雲端基礎設施是以區域 (Region) 與可用區域 (Available Zone,簡稱 AZ) 為中心來建置的。AZ 其實就是由 AWS 一或多個個資料中心所組成的,而資料中心的功能即是置放多台實體伺服器的一棟建築。舉上圖來說,可以看到其中亞太地區,新加坡有三個 AZ、東京有四個 AZ,而北京有兩個 AZ。那為什麼每個 Region 都要有那麼多 AZ 呢?試想當我們的 AWS 資源建立在新加坡的 AZ_A 上,但 AZ_A 好死不死出現了跳電、網路斷線或者是設備壞損時該怎麼辦,這時 AZ_B, AZ_C 就變成了救援。後面會在介紹什麼是 High Availibility。

Virtual Private Cloud (VPC)

官方介紹:
---------------------------------------------------------
Amazon Virtual Private Cloud (Amazon VPC) 允許您在 AWS 雲端佈建一個在邏輯上隔離的部分,並在自己定義的虛擬網路中啟動 AWS 資源。您可以完全掌控虛擬聯網環境,包括選擇自己的 IP 地址範圍、建立子網路,以及配置路由表和網路閘道。您可以在 VPC 中同時使用 IPv4 與 IPv6 來安全且輕鬆地存取資源和應用程式。 您可以輕鬆自訂 Amazon VPC 的網路配置。例如,您可以為可存取網際網路的 Web 伺服器建立公有子網路,而將資料庫或應用程式伺服器等後端系統放在不能存取網際網路的私有子網路。您可以利用安全群組和網路存取控制清單等多種安全層,對各個子網路中 Amazon EC2 執行個體的存取進行控制。 此外,您也可以在公司資料中心和 VPC 之間建立硬體虛擬專用網路 (VPN) 連線,利用 AWS 雲端來擴展公司資料中心。
---------------------------------------------------------


筆記:
看完 Global Infrastructure 後,想像其就是一朵 AWS Cloud 大雲,而 VPC 則是用戶在這朵大雲中可以佈建的多個小雲,我們可以在這朵小雲裡,使用許多 AWS 資源。
階層範例如下:
AWS Cloud
|__Asia_Pacific
|   |__AZ_A
|   |   |__ VPC_1
|   |   |__ VPC_2
|   |   |__ ...
|   |__AZ_B
|   |   |__ VPC_1
|   |   |__ VPC_2
|   |   |__ ...
|   |__AZ_C
|__China
|   |__AZ_1
|   |__AZ_2
|__ ...

Elastic Compute Cloud (EC2)

官方介紹:
---------------------------------------------------------

Amazon Elastic Compute Cloud (Amazon EC2) 是一種 Web 服務,可在雲端提供安全、可調整大小的運算容量。該服務旨在降低開發人員進行 Web 規模雲端運算的難度。 Amazon EC2 的 Web 服務界面非常簡單,您可以輕鬆獲取和配置容量。使用本服務,您可以完全控制運算資源,並在成熟的 Amazon 運算環境中執行。Amazon EC2 讓獲取與啟動新伺服器執行個體所需的時間縮短至幾分鐘,如此一來,當您的運算要求發生變化時,便能快速擴展運算容量。Amazon EC2 按您實際使用的容量收費,從而改變了成本結算方式。Amazon EC2 還為開發人員提供了建置故障恢復應用程式以及排除常見故障情況的工具。
---------------------------------------------------------

筆記:
基本上,可以視為一個 EC2 即是一台 server,而我們可以在同一個 VPC 裡,根據需求而建立許多個 EC2。


VPCs and Subnets

官方介紹:
---------------------------------------------------------

Amazon Elastic Compute Cloud (Amazon EC2) 是一種 Web 服務,可在雲端提供安全、可調整大小的運算容量。該服務旨在降低開發人員進行 Web 規模雲端運算的難度。 Amazon EC2 的 Web 服務界面非常簡單,您可以輕鬆獲取和配置容量。使用本服務,您可以完全控制運算資源,並在成熟的 Amazon 運算環境中執行。Amazon EC2 讓獲取與啟動新伺服器執行個體所需的時間縮短至幾分鐘,如此一來,當您的運算要求發生變化時,便能快速擴展運算容量。Amazon EC2 按您實際使用的容量收費,從而改變了成本結算方式。Amazon EC2 還為開發人員提供了建置故障恢復應用程式以及排除常見故障情況的工具。
---------------------------------------------------------

筆記:
我。

Bastion Host

Bastion host 基本上就是一台 Proxy Server,用來存取私有網路,例如 DB Server 等等。簡單來說,我要對 DB Server 做操作,我得連進這台 Proxy Server,在連進 DB Server 對其 做操作。這樣設計的好處是,我們可以透過限定 SSH 連線,降低 Proxy Server 被攻擊的風險。

Network Address Translation (NAT)

官方介紹:
---------------------------------------------------------

您可以使用 NAT 裝置來使私有子網路中的執行個體連線到網際網路 (例如進行軟體更新) 或其他 AWS 服務,但防止網際網路初始化與執行個體的連線。NAT 裝置會將流量從私有子網路中的執行個體轉送至網際網路或其他 AWS 服務,然後將回應送回執行個體。當流量傳向網際網路時,來源 IPv4 地址會替換為 NAT 裝置的地址;同樣,當回應流量傳向這些執行個體時,NAT 裝置會將地址轉換為這些執行個體的私有 IPv4 地址。 NAT 裝置不支援 IPv6 流量,而是使用僅限傳出的網際網路閘道。如需更多詳細資訊,請參閱 輸出限定網際網路閘道。 注意 我們在此文件中使用 NAT 以遵循通用 IT 實務,但是 NAT 裝置的實際角色同時包含地址轉換和連接埠地址轉換 (PAT)。 AWS 提供兩種 NAT 裝置:「NAT 閘道」和「NAT 執行個體」。建議您使用 NAT 閘道,因為相較於 NAT 執行個體,NAT 閘道可提供較佳的可用性和頻寬。NAT 閘道服務也是一種受管服務,不需要您管理。NAT 執行個體從 NAT AMI 啟動。您可以選擇將 NAT 執行個體用於特別用途。
---------------------------------------------------------

筆記:
以上面提到的 Bastion Host 為例,因為 DB Server 位於 Private Subnet 中,沒有與網際網路連線的能力,若今天需要透過網際網路來連外更新軟體,但仍不允許從外部網際網路連入該 DB Server,這時就可以架設 NAT 達成,所有 DB Server 對外連線的請求,都將透過 NAT。設定 NAT 有兩種方式,一種是新建一個 NAT (EC2) Instance,或是新建一 NAT Gateways。


NAT Gateways

官方介紹:
---------------------------------------------------------
您可以使用網路位址轉譯 (NAT) 閘道讓私有子網路中的執行個體連線至網際網路或其他 AWS 服務,但防止網際網路啟動與這些執行個體的連線。如需 NAT 的詳細資訊,請參閱「NAT」。 
您將需要為您帳戶中建立及使用的 NAT 閘道支付費用。適用的費率為 NAT 閘道的每小時用量率及資料處理率。同時也適用 Amazon EC2 資料傳輸費。
如需詳細資訊,請參閱「Amazon VPC 定價」。 NAT 閘道不支援 IPv6 流量,而是使用僅限輸出的網際網路閘道。如需更多詳細資訊,請參閱 輸出限定網際網路閘道。
---------------------------------------------------------

筆記:
使用 NAT Gateways 的時機是,當你有很多 Instance 要對外連線時,唯一的 NAT Instance 可能會造成效能上的瓶頸,此時維護該 NAT Instance 也變得麻煩,這時就是使用 NAT Gateways 好時機。