我常常收到客戶問我這樣的問題,
還帶著質問的口氣,好像是我們的錯。
每次回答,我都要寫一整篇來跟他解釋這件事情發生的原由,很累。
我就在這裡分享給大家,到底為什麼主機被重開機 。
先講結論,因為 Google 在維護你的主機。
為什麼 Google 那麼雞婆?
畢竟你用的是 GCP,Google 還是要讓你的主機可以好好運作啊!
維護的原因有三個:
1.基礎建設維護:主機所在的硬體、網路、電源、作業系統和BIOS。
2.安全更新:安全補丁、root 分割區更改。
3.硬體錯誤:記憶體、CPU、網卡和磁碟。
你可以在官方文件看到他詳細的說明。
其實所有的公有雲都要維護的,
你可以查詢其他的公有雲,
他們會特別安排一個維護時間,讓你的主機在那個時候維護,
而且不只是主機被重開機,有一些情況是是完全無法使用機器的,
GCP 最多只是幫你重開,他們是有可能完全不給你用的。
好,就給 Google 維護,那維護都會被重開機嗎?
不一定。
它會先遷移,把機器移到其他比較適合運作的地方,
這樣並不會重開你的主機,主機效能也不會有太大影響。
除非是硬體完全故障或其他原因,
無法遷移的情況下,才會重開。
而這其實是有地方可以設定的,
當你在建立新機器的時候,
你會看到主機規格下方有一個「可用性政策」,
再往下一點你會看到「 VM 佈建模式與進階設定」,

當你展開之後,會看到:
「在主機維護期間」,你要:
1.遷移 VM 執行個體 (建議做法)
2.終止 VM 執行個體

當然還是讓它遷移啊!
不然,它就把你主機關機了耶!
不過也還好啊,只是遷移,主機影響不大。
再往下這個選項 「自動重新啟動」:
1.啟用 (建議)
2.停用

就是如果主機發生錯誤,連遷移都不行的時候
要不要讓Google幫你重開機?
當然,你可以拒絕。
但是這台主機可能會累積一些潛在的問題,
導致你的主機運作效能很差。
當這台主機硬撐到一個極限之後,完全死當,
就算你重開機也連不進去,
讓你想要救援機器的機會都沒有,更麻煩。
所以我們還是乖乖的接受它的選項,
保持讓它自動重新啟動。
當然你可能會想,
你的主機這麼重要,難道不能24小時永不停機嗎?
不可能。
你對雲端似乎有點誤會,
對你來說是雲端服務,但是對 Google 來說,
它還是硬體設備在那邊跑,
機器也是會老舊的。
那這樣還要用雲端嗎?
是,當然要用。
不過,你用雲端的方法需要調整。
雲端可以讓你達到「高可用、永遠不停的服務」
但是你必須要設定出來。
你從頭到尾都是只有一台機器對外,
根本就沒有「高可用」。
你必須要透過「執行個體群組」(Instance Group),
至少設定兩台機器同時對外,
然後透過負載平衡器來幫你分散流量。
你的機器有可能因為流量太大撐不住,
導致機器有問題,執行個體群組會幫你刪機器,
再重建新的機器,同時你另一台機器還是能持續對外服務。
同樣的,你的機器如果是本身硬體發生問題,
也會被判定為不健康,執行個體群組也會幫你重建,
所以你使用虛擬機器,
你還是要有這樣的心理準備,
不可能單台機器永遠對外,
然後期待它不會有任何狀況發生。
你可能會覺得,這樣成本不是很高嗎?
那你乾脆讓群組只有一台機器,
只要有問題,它還是會被刪除重建,
只是對外中斷的時間比較長,
因為你的主機需要時間重新開機,
這就是一個勉強可以接受的選項。
不過話說回來,
若要建立執行個體群組,
你得先找一台範本機器做出映像檔,再做範本,
又是另一個浩大的工程啊。
之後有機會再分享~
順便置入一下,關於更多 GCP 相關的概念和實作教學,都在東東的 GCP 線上課程《雲端架構師養成班》,有需要可以進來看喔!