2014年11月5日 星期三

Update Linux Server Notes


最近自己常用的Linux Server的OS( CentOS 6 )又更新了!每次更新都會自己測試一下,是否自己所管的Server也能夠安穩的升級上去,或者,是有那些東西要特別注意呢?

有些Server可能是不能整體更新的狀態(單純指不能全系統更新,若是遇到有重大漏洞的弱點更新,不管怎樣還是非得更新不可),所以就簡單整理了一下在Linux Server上更新時的注意事項,一方面做個記錄,另一方面也提醒自己一下。

  • 備份才是王道:
  • 其實無論何種系統,備份絕對都是首要注意的事項,更何況是Server端的系統,那更是不用多說,不過,基於Server的特性不同,要備份的資料可能會包含三個部分:

    1.應用程式的設定與資料:
    只要是安裝於這台Server上所有對外營運(提供)服務的應用程式,都包含在內,一般來說,最為常見的就是Web Service上的資料,例:Apache、Tomcat......等、或者其它服務相關資料,基本上在更新之前最後都先備份至本機端的儲存空間上。

    千萬不要以為有備份就好,所以就把資料備份在該台遠端的Server上,自己心想,若是更新失敗至少還可以復原!(若是更新失敗或連開機進去都有問題時,那些資料形同白廢,尤其實租用遠端的Hosting空間時,千萬不要這麼做,而且這樣子的備份策略也是有問題的。

    2.資料庫的內容:
    既然是對外服務的Server,絕大部分應該都同時具備有資料庫的應用,因此在備份完應用程式的相關資料後,接著千萬不要忘記再更新系統前,一並將該應用程式所對應的資料庫內容一併進行備份。

    在進行資料庫備份前,最好是先將相關的應用程式先停止後,再進行資料庫的備份,否則輕則有最新的資料沒有備份成功,重則備份的資料有誤,無論是那一種結果,會於事後的復原都會是一件相當棘手的工作,因此,資料庫的備分平時應該就應該有定期的異地備份才是,

    3.登錄檔:
    為什麼連登錄檔也要備份呢?凡走過必留下痕跡,對於Server上所發生的許多事件,原則上都可以從登錄檔中窺知一二,因此在更新前最好同時也將登錄檔一併進行備分,以利明哲保身,或是在遇到什麼狀況時,至少還有跡可尋,而不會因為更新失敗後,就只能默默地挨打,無論對錯全盤皆收。

    相隊重要的登錄檔內容包括:SSH連線Web Service的存取和資料庫的相關異動(若是有開啟log的相關功能)雖然備份起來的資料量不小,但是絕對會對之後狀況的處理有相當的幫助,所以在時空條件可行的狀況下,最好還是先備份起來較安全。

  • 自動更新的風險:
  • 其實針對Server的備份來說,其實應該是平常在營運的主機上,應該都有一定的備份策略,所以在更新系統之前,若是忘了備份的話,最糟就是回復到最近一次備份的時間,一般外面代管主機的狀態,可能是只會幫你保留近七天的備份。

    不過除了備份之外,其實還有一個潛在的風險就是自動更新,為什麼我會這麼說呢?

    因為其實在自動更新的背後,經常有許多你所不知情的狀況會發生,舉個例子來說,如果在你很開心的輸入了「yum -y update」的指令之後,剩下的就是完全由系統來定生死。

    若是不巧地有新版本的 tomcat 發布,你就會遇到一種狀況,那就是你原本安裝在預設應用程式目錄(例:webapps下)的資料會直接消失,若是該應用程式的資料也是存在該路徑底下,你也只能夠以最近一次的備份來還原資料。

    一般來說,Server端的Service是不會這麼處理才是,但是只要碰到一次,就足夠讓你玩上好一陣子。

    所以,在更新時,如非必要還是不要亂加上-y的參數,以免造成悲劇,在更新前先確認一下會更新些什麼東西吧!畢竟針對在提供服務的Server來說,無論需要多久的停機時間,只要是需要進行資料復原,都不會是件馬上就可以完成的事,除非有先預做可接替的主機來撐著。

  • 相對保守的虛擬化主機:
  • 除了上述兩點之外,還有一項要特別注意的就是虛擬化主機的配置,若是你是租用遠端的虛擬化主機,若沒有一定的把握,也不要輕易地進行系統端的版本更新,有租用過相關主機的經驗,其實都會發現有許多虛擬主機商所使用的系統版本,大多是兩三版以前,甚至有些主機商還會提供它們客制好的IMAGE讓妳直接掛載,通常也不太可能會是最新版本,而是經過時間驗證後,相對穩定後的版本。

    這就跟企業端採購電腦時一樣,跟家用主機相比,企業端的商用主機能夠選用的款式其實也相對較少(這也有可能是因為商業考量所造成的差異)不過,可以確定的就是,在虛擬化主機上,還是相對保守的沒錯,尤其是對於Server端的主機來說,有時穩定性會遠比它能夠包山包海來得重要。

    最後,希望在每次更新Server時(以CentOS來說,若無重大事件,約每9個月至一年就會有新版出現),有需要進行相關更新的人,還是先確認好手邊的機器,是否真能如願地無痛升級上去。

    此外,千萬不要因噎廢食,因為擔心更新上去可能會掛點而完全不做任何補強的動作,例:先前公告的OPENSSL弱點 (相關檢測:http://heartbleed.com/),這類的影響可大可小,畢竟對於Server端的主機來說,弱點還是能補就盡量補吧!