AWS全稱Amazon Web Service,和Amazon的關係就像阿里雲和淘寶的關係。大家都是電商起家,一個賣書,一個為商家提供線上商鋪。做著做著,用戶越來越多,業務需求越來越複雜,要求也越來越苛刻,面對的技術挑戰隨之越來越大。比如巨大的流量會在促銷活動時,一股腦兒湧過來。用戶遍佈在世界各地,如何給不同區域的用戶提供良好的用戶體驗。如何按照需求動態的調整服務器的配備,避免浪費,等等。這些統統都是他們自己面對過的問題。然後這些聰明的工程師們想到了辦法,並完美的解決了這些問題。這是起源。
在軟件領域,大家面對的業務場景多多少少都會不太一樣,但技術方案大部分卻是類似的。如何讓這些沉澱下來的技術經驗發揮更大的價值,而這一部分的需求又是如此的大,“歪打正著”。這是AWS們的由來。
按照二八定律,和Amazon有同樣高要求的服務畢竟是少數,絕大多數的服務並沒有那麼複雜的應用場景。今天我們就來看一看用AWS,如何滿足大部分Web服務對基礎設施的需求:
自定義域名,默認HTTPS為用戶提供穩定可靠的服務,七層負載均衡服務可以按需拓展,水平拓展保證服務的安全性,公有服務和私有服務的隔離和交互自定義域名,默認HTTPS
互聯網聯接了世界,而域名則是這世界的入口。拿sunwei.xyz舉例,用AWS的服務支持,如下所示:
DNS
如果要支持HTTPS?根據 ,HTTPS屬於應用層,Route53只是負責網絡層,自然對應的服務不應該Route53,而是ALB。AWS有提供Certificate Manager服務提供免費的證書,也可以參考 這篇文章來進行更直觀的理解。畢竟知其然,並知其所以然才能做計算機的好朋友嘛。
為用戶提供穩定可靠的服務,七層負載均衡
ALB
根據上圖,我們看到了針對sunwei.xyz的服務分佈。可以看出:
那麼ALB是如何做到精準投遞的呢?
服務可以按需拓展,水平拓展
流量已經清晰的知道從哪兒來到哪兒去了,那麼接下來就是服務的可靠性,我們可以按需來配置拓展規則:
Scalling Group(可拓展群組):
Capability(能力): 可以指定最大,最小的服務器數量。數量越多,可承載的流量就越大。Policy(政策): 可以更加明確不同情況下服務器是新啟還是關停;在服務啟動的過程中多長時間不受政策的干擾,也就是冷靜時長,以避免陷入正在準備,一直響應政策的死循環Alarm(預警): 當碰到了以下的實際預警時,需要能採取措施,消除預警。光預警,沒有行動是沒有意義的。比如當cpu的使用量到達一定值時,需要採取行動保證服務的安全性,公有服務和私有服務的隔離和交互
可以看到服務的可靠性已經得到了保證,那服務的安全性呢?哪些服務因該是公有可訪問的,而哪些服務是不因該被暴露到公網的?
入網:
公網流量,首先經過Internet Gateway,經過路由器Router的轉換,通過EIP(Elastic IP)訪問公網流量不能直接訪問私有子網(Private Subnet)裡的服務出網:
公有子網(public subnet),直接通過路由器Router,通過Internet Gateway訪問外網私有子網(private subnet),不能直接訪問外網,需要通過路由器Router,將自己請求投遞到NAT gateway(網絡地址轉換網關),再像公有子網的服務一樣,通過路由器,經Internet Gateway發出以上流程還有一個專有的名詞,叫VPC(Virtual Private Cloud - 虛擬私有云),是AWS用來協調管理網絡的通用組件。
可以看出AWS提供了所有我們需要的網絡服務,來滿足我們的需求。如何管理好這些服務將會是另一個話題,如AWS推出的CloudFormation,我們可以通過這個服務,很方便的對這些基礎設施進行管理,就像現在DevOps所推崇的IaC - Infrastructure as code(基礎設施即代碼)。
待續