EC2的簡單介紹
區(qū)域(Region)和可用區(qū)(Availablity Zone)的概念
-
區(qū)域
每一個AWS區(qū)域都是一個獨立的地理區(qū)域焙蚓,分布在直接各地皿哨,AWS有不少服務(wù)都是無法直接跨區(qū)域交流的硼身,需要額外的配置。
截屏2021-01-31 下午8.06.35 -
可用區(qū)(AZ)
每個Region下都有多個AZ椎瘟,我們創(chuàng)建EC2的時候可以任意地選擇AZ來創(chuàng)建嫉沽,不會影響各個EC2之間的交互择诈。
AZ可以理解為一個Region下的不同的機房械蹋,這些機房通過高速網(wǎng)絡(luò)互相連接。
我們建議在同一個Region的不同AZ下部署服務(wù)羞芍,以實現(xiàn)高可用哗戈。(防止一個AZ不可用的時候,所有服務(wù)都宕機)
EC2是什么?
Elastic Compute Cloud, Amazon的web服務(wù)荷科,能在AWS云中提供安全且可調(diào)整大小的計算能力唯咬。
人聽得懂的版本:AWS云上的虛擬服務(wù)器,可以自己配置各個屬性畏浆。
EC2的定價類型
Ps:這個概念如果不是為了考證和節(jié)省資源胆胰,可以跳過。
EC2給我們提供了很多種計價方案刻获,我們可以通過項目需求來選擇不同的計價方案蜀涨,以此來節(jié)省費用。
按需實例(On Demand Instance)- 用多少時間付費多少蝎毡,費用精確到秒厚柳,不用則可以隨時關(guān)閉/終止并停止費用的產(chǎn)生
競價實例(Spot Instance)- 在aws上會有以拍賣的形式賣EC2的使用資源,我們可以以低于按需實例的價格競得實例沐兵,但價格高于設(shè)定得價格后會自動被終止别垮,適合可以隨時中斷,分割成子任務(wù)的計算任務(wù)扎谎。
保留實例(Reserved Instance) – 相當(dāng)于買斷一個實例1年/3年碳想,期間不管實例開不開都需要付總得費用烧董,但平均下來費用會比按需實例便宜
專用主機實例(Dedicated Hosts)- 涉及到軟件許可證的時候,會考慮使用專用主機實例
EC2的實例類型
怎么來連接EC2胧奔?
1.通過密鑰對連接
- 創(chuàng)建EC2的時候我們可以通過創(chuàng)建/選擇現(xiàn)有的密鑰對來連接
- 當(dāng)我們選擇實例進行連接逊移,就可以看到相關(guān)的命令,需要注意的是葡盗,我們需要把引號內(nèi)的字符串改成pem所在真實路徑螟左,然后再運行就能連接了。如下圖
2.通過Session Manager來連接
需要注意的點是觅够,要使用Session Manager來連接,在EC2內(nèi)需要先安裝SSM 代理巷嚣。
SSM 代理 在 2017.09 及以后日期版本的 Amazon Linux 基本 AMI 上默認(rèn)安裝喘先。默認(rèn)情況下,SSM 代理 還安裝在 Amazon Linux 2 AMI 上廷粒。
- 創(chuàng)建一個EC2角色窘拯,這個角色需要有SSM相關(guān)的權(quán)限,這里我們選用的是AWS已經(jīng)提供給我們的角色
- 將IAM角色附加到EC2上坝茎,點擊保存后需要等待幾分鐘涤姊,這確實比較慢。
- 通過這種方式我們就可以不用密鑰對來訪問EC2了嗤放,減少了管理思喊、輪換密鑰對的工作。
- 這其實是用了AWS的另一個服務(wù)——AWS System Manger來管理這個會話次酌。
存儲類別
-
實例存儲
實例存儲的實例不能被停止(只能重啟或終止)恨课,如果這個實例出現(xiàn)故障,那么在上面的所有數(shù)據(jù)將會丟失.
這里的停止可以類比于關(guān)機岳服,一般情況下關(guān)機之后我們可以重啟剂公。
終止可以類比于刪除這臺機器。
實例存儲只適合臨時存儲不重要的數(shù)據(jù)吊宋。
-
EBS (Elastic Block Storage)
可以理解為外接硬盤纲辽,但是這個硬盤只能被一個EC2使用,而且一開始設(shè)置的多少容量就不能改了璃搜,可以對其進行加密存儲拖吼。
一般我們會把根設(shè)備設(shè)置為EBS,默認(rèn)情況下終止EC2這個根EBS卷也會被刪除腺劣,當(dāng)然我們可以更改這個設(shè)定绿贞。
EBS也有很多種類,對于不同的使用場景有不同的特化橘原,參考鏈接:https://aws.amazon.com/cn/ebs/volume-types/
-
EFS(Elastic File System)
可以理解為外接硬盤籍铁,而這個硬盤可以掛載到不同的EC2上涡上,可以認(rèn)為這個硬盤的容量是無限大的,EFS的數(shù)據(jù)會被保存在多個可用區(qū)內(nèi)拒名,且具有讀寫一致性吩愧。
AMI(Amazon Machine Images)是什么?
預(yù)配置的EC2鏡像,一個AMI包含了你打包的好操作系統(tǒng),以及相應(yīng)的應(yīng)用程序和配置,可以省去一些裝軟件的時間增显。
我們也可以定制自己的AMI雁佳,通過AMI我們可以啟動完全相同的機器,這個在下面的Auto Scaling會被用到同云。
Auto Scaling
AS可以自動地伸縮EC2實例的數(shù)量糖权,我們可以設(shè)置在需求高峰增加實例,在低谷時減少EC2實例炸站。
如下圖所示星澳,我們甚至還能控制在什么時間點進行擴容。
這邊主要再介紹下兩個概念旱易,啟動配置(Launch Configuration)和彈性伸縮組(Auto Scanling Group)
啟動配置(Launch Configuration):
啟動配置是彈性伸縮組用來啟動EC2實例的時候所使用的模板
啟動配置包含了鏡像文件(AMI)禁偎,實例類型、密鑰對阀坏、安全組和掛載的存儲設(shè)備
一個啟動配置可以關(guān)聯(lián)多個Auto Scaling組
啟動配置一經(jīng)創(chuàng)建不能被更改如暖,只能刪除重建
啟動配置中可以使用CloudWatch的監(jiān)控
彈性伸縮組(Auto Scanling Group):
彈性伸縮組(ASG)是彈性伸縮的核心,它包含了多個擁有類似配置/類型的EC2實例忌堂,這些實例被邏輯上認(rèn)為是一樣的
-
彈性伸縮組需要的幾個參數(shù):
啟動配置(Launch Configuration):它決定了EC2使用什么模板盒至,模板內(nèi)容包括了鏡像文件(AMI),實例類型浸船、密鑰對妄迁、安全組和掛載的存儲設(shè)備
所需/最大/最小容量:決定了在彈性伸縮的情況下,EC2實例數(shù)量的浮動范圍
負(fù)載均衡器: 還可以直接向負(fù)載均衡器添加這個ASG李命,會在新實例啟動時自動向負(fù)載均衡器注冊新實例登淘。
可用區(qū)和子網(wǎng):定義EC2實例啟動時候所在的可用區(qū)和子網(wǎng)信息
參數(shù)和健康檢查:參數(shù)定義了何時啟動新實例,何時終止舊實例封字;健康檢查決定了實例的健康狀態(tài)黔州。
如果一個EC2實例的健康狀態(tài)變成“不健康”,那么ASG會終止這個EC2實例阔籽,并且自動啟動一個新的EC2實例流妻,需要特別注意的是,啟動的實例會有不同的IP,某些情況下(比如安全組配置的是IP地址)會導(dǎo)致新的實例不能被訪問笆制,是個坑绅这。
彈性伸縮組(ASG)只能在某一個AWS區(qū)域內(nèi)運行,不能跨越多個區(qū)域
如果啟動配置(Launch Configuration)有更新在辆,那么之后啟動的新EC2實例會使用新的啟動配置证薇,而舊的EC2實例不受影響
彈性IP地址(Elastic IP)
彈性IP是什么度苔?
彈性IP地址是專為動態(tài)云計算設(shè)計的靜態(tài) IPv4 地址,可以快速將地址重新映射到您的賬戶中的另一個實例浑度,從而屏蔽實例故障寇窑。
ps:一個彈性ip正在被使用時是不收費的,當(dāng)我們申請一個彈性IP卻不把他與其他資源關(guān)聯(lián)起來時箩张,是要收費的甩骏。
為什么我們需要彈性IP?
我們可以通過機器的共有IP來通過Internet訪問我們的機器先慷,但是每次啟動這個實例的時候饮笛,這個地址都會變。
當(dāng)我們啟動一臺相同的EC2實例论熙,希望來替換原來的EC2時缎浇,一般情況下無法設(shè)置他的公有IP地址。
基于上述的情況赴肚,我們有了彈性IP的服務(wù),我們可以可以將彈性IP地址分配給EC2實例二蓝,使其成為這個EC2實例的共有IP地址誉券,
這樣我們就可以保證這個EC2實例的公網(wǎng)IP不會被改變。
負(fù)載均衡器(Elastic Load Balancer)
目前推薦使用的前兩種ELB刊愚,兩者有不少共同點和概念踊跟,我們一起來看一下吧。
-
共同點
用戶不需要考慮ELB的高可用性鸥诽,不需要為其設(shè)計高可用的架構(gòu)設(shè)計商玫,它本身自己就可以彈性擴容
可以將入向流量自動分布到多個健康的EC2實例(或者其他的目標(biāo))上
能和AWS彈性伸縮(Auto Scaling)集成,從而能保證后臺運行的EC2實例能滿足流量的需求
ELB只在一個特定的AWS區(qū)域中工作牡借,不能跨區(qū)域(Region)拳昌,但可以跨可用區(qū)(AZs)
使用ELB時應(yīng)當(dāng)使用其DNS地址,因為ELB會自己進行彈性擴容钠龙,此時DNS對應(yīng)的IP可能改變
-
目標(biāo)組(Target Group)
我們可以將不同的目標(biāo)添加到目標(biāo)組中炬藤,再將ELB指向目標(biāo)組,以此來使用ELB碴里,目標(biāo)組和ELB是不能獨立使用的沈矿,沒有意義。
粘性連接,我們可以對目標(biāo)組開啟粘性連接咬腋,這可確保在一個會話期間將來自相同用戶的所有請求發(fā)送到相同的實例中羹膳。
目標(biāo)組可以進行健康檢查,以此來確定目標(biāo)是否可以處理請求根竿,如果檢查不健康則不會向該目標(biāo)發(fā)送請求(除非整個組內(nèi)都是不健康的目標(biāo))
-
目標(biāo)組支持多種目標(biāo)的配置陵像,如下圖就珠,還可以配置不同的協(xié)議,ELB會通過指定的協(xié)議來路由蠢壹。(比如HTTP/HTTPS嗓违,那么只能用ALB來路由,如果是TCP/UDP图贸,那么只能用NLB來路由)
截屏2021-02-02 上午1.48.42
-
應(yīng)用程序負(fù)載均衡器(Application Load Balancer)
工作在第七層(應(yīng)用層)
ALB可以承擔(dān)校驗HTTPS證書的工作蹂季,減少其后面負(fù)載均衡的實例的負(fù)擔(dān),并且能更好地專注于業(yè)務(wù)疏日。
-
在應(yīng)用程序負(fù)載均衡器中偿洁,ALB在收到請求之后,會按照優(yōu)先順序評估偵聽器(Listener)的規(guī)則沟优,然后根據(jù)定義的規(guī)則將流量轉(zhuǎn)發(fā)到特定的目標(biāo)組中涕滋。如下圖所示,你可以配置不同的偵聽器規(guī)則挠阁,然后根據(jù)流量的內(nèi)容(包括HTTP數(shù)據(jù)包頭部的信息)或者URL路徑來將不同的請求轉(zhuǎn)發(fā)到不同的目標(biāo)組內(nèi)宾肺,而一個目標(biāo)組又包含了若干個目標(biāo)。
舉個栗子:ALB可以將訪問https://guhao.com/posts/文章的流量轉(zhuǎn)發(fā)到目標(biāo)組1中的某臺機器侵俗,然后將訪問https://guhao.com/pages/頁面的流量轉(zhuǎn)發(fā)到目標(biāo)組2中的某臺機器锨用,以此來更好地劃分職責(zé)。
img
-
網(wǎng)絡(luò)負(fù)載均衡器(Network Load Balancer)
工作在第四層(傳輸層)
NLB可以基于協(xié)議隘谣、源 IP 地址增拥、源端口、目標(biāo) IP 地址寻歧、目標(biāo)端口和 TCP 序列號掌栅,使用流式哈希算法選擇目標(biāo)。
NLB可以每秒處理數(shù)百萬個請求
安全組(Security Group)
在每一個EC2實例創(chuàng)建的過程中码泛,你都會被要求為其指定一個安全組(Security Group)猾封。這個安全組充當(dāng)了主機的虛擬防火墻作用,能根據(jù)協(xié)議弟晚、端口忘衍、源IP地址來過濾EC2實例的入向和出向流量。
-
這里我們以入站規(guī)則舉例卿城,我們可以指定入站的協(xié)議(TCP/UDP/IPV6等)枚钓,不同的協(xié)議對應(yīng)不同的端口范圍,當(dāng)然我們也可以根據(jù)需要來開放瑟押,入站中的源指的則是這個請求來自于哪里搀捷,這邊需要細(xì)說一下,來源我們可以定義為指定的IP范圍,我們也可以指定來源是用的哪些安全組嫩舟。如下圖所示
舉個栗子:當(dāng)這臺機器指定的源是安全組B的時候氢烘,其他使用了安全組B的所有實例都能將流量發(fā)送到這臺機器。
-
安全組的有狀態(tài)的家厌,怎么理解這個有狀態(tài)呢播玖?我們再舉個栗子
如果某個流量被入方向的規(guī)則放行,那么無論它的出站規(guī)則如何饭于,它的出方向響應(yīng)流量都會被無條件放行
如果從主機發(fā)出去的出站請求蜀踏,無論入站規(guī)則如何,該請求的響應(yīng)流量都會被無條件放行
安全組我們只能設(shè)置允許哪些流量進入而不能設(shè)置去拒絕哪些流量
下圖中出站規(guī)則是(0.0.0.0/0)掰吕,這代表著任何位置果覆,(::/0)是IPV6的地址表示。
置放群組(Placement groups)
我們想要盡量將我們啟動的EC2放置在同一個可用區(qū)相互靠近一點殖熟,以實現(xiàn)低延遲的網(wǎng)絡(luò)性能局待,或者將一些實例嚴(yán)格放置在不同的硬件上以減少相關(guān)的故障,這個時候就輪到我們的置放群組出場了菱属。
舉個栗子:
-
集群置放群組
-
將一些可用區(qū)內(nèi)的EC2實例邏輯分組钳榨,這些EC2之間有更低的網(wǎng)絡(luò)延遲
集群置放群組
-
-
分區(qū)放置群組
-
Amazon EC2 確保置放群組中的每個分區(qū)具有自己的一組機架。每個機架具有自己的網(wǎng)絡(luò)和電源纽门。置放群組中的任何兩個分區(qū)將不會分享相同的機架重绷,從而讓您可以在您的應(yīng)用程序中隔離硬件故障的影響。
具有 3 個分區(qū)的分區(qū)置放群組
-
-
分布置放群組
- 每個實例放置在不同的機架上膜毁,并且每個機架具有各自的網(wǎng)絡(luò)和電源。
分布置放群組