雲平臺基礎知識
常用的雲平臺:
雲平臺發展至今主流的平臺已成N足鼎立之勢,國外雲有AWS、Google雲、微軟雲,國內雲有阿里雲、騰訊雲、AWS中國,私有云有OpenStack。
AWS這裡單獨拿出來強調下,國際版與國內版需要區別對待,因為兩者的域名不一樣,而且國內版比國際版缺少很多功能,所以很多AWS開源的專案拿到國內不見得能使用。雖然國內版目前還在不斷優化,但是距離國際版還有不少的差距。所以如果要使用國內雲,不推薦AWS。
雲平臺的計費,國外統一隻有一種計費模式,流量模式,也叫後付費模式。國內的除開流量模式外,還有符合國情的包年包月模式,也叫預付費模式。後付費是按照水電煤的計費方式,用多少給多少錢;預付費模式是直接買斷一臺雲伺服器,價格大約是後付費的3-4折左右。
本人不推薦預付費模式,有以下幾個原因:
1 包年包月的模式違背了雲平臺設計的初衷,雲平臺本意是多使用者租用,大家只要拿著自己的賬號操作即可,不需要關心水電煤打哪來,有多少量。而包年包月模式還需要關心自己的伺服器IP等資訊,相當於在雲上租了臺物理機,這不是雲平臺使用的思路。
2 包年包月並沒有想象中的優惠,換句話說按流量並沒有想象中那麼貴。雲平臺會提供自動擴容縮容的技術,通過動態擴縮充分壓榨機器效能可以使單臺服務信價比更高,而包年的機器是無法動態擴縮的。
3 在CI、CD領域immutable的運維方式比面向IP的運維方式有巨大的優勢,而immutable必須建立在流量型雲平臺的基礎之上。
Openstack是非常流行的私有云技術,私有云在價格上可能會比公有云便宜(可能的意思是,也得需要考慮房產、電費、人力維護等成本),在使用時其實並沒有公有云來的那麼“痛快”。因為它的容量並不像公有云那樣無窮盡也,飽和時也會遇到捉襟見肘申請不到資源的問題。
雲平臺的幾種訪問方式:
1 Console方式,最簡單的,直接用賬號密碼登陸到雲平臺控制檯進行操作。
2 API方式,HttpRestFul請求的方式向平臺發起命令。
3 SDK方式,平臺提供Java、python、go、php等語言發開的擴充套件包,整合到專案中,用程式語言呼叫這些包向平臺發起命令。
4 命令方式,平臺提供二進位制的客戶端供客戶下載,下載安裝後用linux命令方式向平臺發起命令。
其中前兩種是平臺必備,SDK方式也基本是標配,命令方式只有極少平臺支援。
以上是對目前優秀的雲平臺做了簡單概括,要熟練使用平臺還需要掌握它的基礎名詞,請注意我們這裡側重於平臺的運算,儲存方面這裡暫不做介紹。
名詞解釋:
公共相關:
Region:區域,平臺的空間範圍的劃分。
Zone:Region下的第二級區域,一個Region包含多個Zone。
其中Region是平臺標配的區域單位,而Zone並不是每個平臺都支援。為什麼會有區域這種概念呢,你可以理解Region代表這這家雲平臺在某個省份拿下來的機房,經濟發展程度不一樣,機房的成本不一樣,那麼每個Region提供服務時相同流量的報價可能就不一樣。再比如有些黑科技,RegionA支援,但是RegionB並不一定可以支援。
例項相關:
Instance:例項的基本單元,相當於平臺上的一臺伺服器,承載運算的主體。
Image:映象,平臺會把Image劃分為共有映象、私有映象、第三方映象等,這個也好理解,Instance是由映象產生的。
InstanceType:例項規格,選定了例項規格,也就選定了你所建立的Instance的CPU、記憶體、磁碟、網路等規格。例項規格的意義在於兩方面,第一方便客戶使用,客戶不用自己去調配這些配置;第二方便平臺內部計算承載力。
SecurityGroup:安全組,對雲服務的訪問許可權,控制手段分為禁止和允許兩種配置,按流向可以分為input和output兩種,可以精確到埠,需要記住常用的埠。
網路相關:
LoadBalance:負載均衡,負責請求的轉發。在雲平臺的API中狹義的LB是指的單獨的一種例項,而單獨一個LB例項是不具備任何負載均衡的能力的。所以廣義的LB是一套負載均衡的元件,包括LB例項、轉發規則、健康檢查等。不同的平臺對LoadBalance的分類方式也不同,有的劃分為四層LB和七層LB,有的劃分為傳統型LB和應用型LB。
Listener:監聽,主流的有tcp、udp、http/https三種監聽,監聽是LB用來觀察其下面掛在的服務是否存活的手段,Listener會配置健康檢查的策略。
VPC:Virtual Private Cloud,從服務的角度來看是虛擬私有云,表示的公有云運營商提供給使用者的隔離資源的集合。它相當於是漂浮在公有云上的孤島。真正讓VPC變得強大的是它各式各樣的連線技術。VPC並不是必須的,但是對於大型專案要接入到企業內容組成混合網路的服務時,VPC才有意義。
彈性伸縮:
ServerGroup:我們把一組具備相同映象、相同服務、相同規格能力的一組instance的組合,稱為是一個ServerGroup。ServerGroup在不同平臺的實現方式略不一樣,例如在AWS中是通過自動擴容組,在阿里雲中是通過彈性伸縮組。與LoadBalance一樣,狹義上的彈性伸縮組並不具備自動伸縮等能力,廣義上配備有其它組建之後的ServerGroup才是我們想要的彈性伸縮組。
ScalingRule:伸縮規則,按照什麼樣的力度來進行一次伸縮。例如每次伸縮30%,或者每次伸縮5臺例項等。ScalingRule並沒有指定誰來觸發伸縮,所以只配置ScalingRule也是沒有任何意義的。
Schedule:定時任務,設定時間規則並執行某個ScalingRule。該功能適合潮汐規律的產品,例如我所從事的視訊行業,中午11-2點是個小高潮,晚上7-10點是個大高潮,凌晨和早上是個低谷,所以我們可以按照產品特性來設定Schedule在這些時間段進行擴容縮容。
AlarmPolicy:告警策略,是彈性伸縮的核心。我們可以配置一些策略規則,例如CPU使用率大於85%時執行某個ScalingRule,或者記憶體使用率小於30%時執行某個ScalingRule。它與Schedule的區別是,更智慧的動態的進行伸縮,可以規避我們計劃外的流量激增的情況。
生產環境一般Schedule+ AlarmPolicy配合使用。
其它:
CDN:Content Delivery Network,內容分發網路。十年前,我剛入行做IPTV流媒體業務時,都是自己寫程式碼來完成省份區縣間片源的排程的,無外呼是客戶機頂盒請求到中心服務,演算法會根據IP重定向到距離IP最近的機房提供服務,但是該機房不見得有客戶要點播的這個片源,所以還可能要從其它機房ftp過來或者重定向到其它機房。當時沒有大資料儲存,機房的磁碟可以儲存的片子也有限,所以還要計算哪些事熱門片源互相分享、哪些是冷門片源在該機房刪除,等等等等。現在這一切的一切,從大資料儲存和快取技術過來的靈感,我們只需要租用雲平臺的CDN服務,就都幫我們搞定了。CDN乾的事情,也就是十年前我寫程式碼乾的事情了,在距離客戶最近的服務點上快取服務內容,一來提高相應速率,二來減少核心資料中心的請求次數。瞭解了CDN的原理,也要注意雲平臺採購的問題了,例如你的服務物件都在國內,你買個國外的CDN,人家壓根在國內就沒有佈網,也就用不起來了。
S3:這是AWS中的叫法,Simple Storage Server,鍵值對形式儲存資料的一種雲端儲存。其他平臺也有類似的服務,只不過名稱不同。
容器服務:隨著Docker的發展,微服務的盛行,雲平臺產商們也與時俱進將K8s整合到平臺中提供容器服務。
Saas服務:一些成熟的方案也被搬遷到雲平臺中,雲平臺供應商拿這些SaaS服務來賣錢,本質是帶有某一個特定功能映象的instance,不再是隻提供簡單的運算、網路、儲存的租賃服務了。雲平臺推出SaaS服務國外廠商比較流行,例如AWS推出了Spinnaker服務來提供CI+CD的解決方案。