給明智的系統管理員的 10 條提示

火星人 @ 2014-03-12 , reply:0
←手機掃碼閱讀

  
本傑明·富蘭克林是科學家、學者、政治家和……系統管理員?沒錯,早在 UNIX® 系統出現之前 200 年,富蘭克林已經對保持系統正常工作提出了建議。下面是富蘭克林最著名的 10 條提示。

如果向任何人問起本傑明·富蘭克林的成就,您很可能會聽到關於他的電學實驗、參與建立美國聯邦以及發明雙焦距眼鏡的故事(見 圖 1)。但是,富蘭克林還有許多不太為人熟知但同樣令人影響深刻的成就,他參與了紙幣的發行,在紙幣上採用新穎的防偽技術,建立美國郵政服務,於 1736 年在費城組建了殖民地的第一個火災保險公司(Union Fire Company)。實際上,早在 Smokey the Bear 出現之前幾個世紀,富蘭克林就提出了著名的防火口號,“預防勝於治療”。他的建議時至今日仍然是非常有意義的,對於 UNIX 系統管理尤其如此。


圖 1. 本傑明·富蘭克林:政治家、發明家和 UNIX 系統管理員(看看他的長頭髮吧),由畫家 Jean-Baptiste Greuze 於 1777 年創作

根據富蘭克林的名言(他也說過這樣的妙語,“客人就像魚,三天就發臭”),作者為系統管理員總結出 10 條保持 UNIX 系統正常工作的提示。

富蘭克林關於安全性的提示

“不輕信和謹慎是安全之母。”

保障系統安全是很困難的。僅僅購買並安裝某種產品,是不可能完全抵禦所有威脅的。相反,要想保護系統,必須時刻保持警惕,不斷創建、尋找、應用、測試和調整許多安全措施。有點兒妄想症是有益的。鑒於安全性的本質,富蘭克林悲觀地說,“三個人無法保住一個秘密,除非是其中兩個人死了。”

可以通過以下措施更好地保護系統:

  • 訂閱和閱讀安全公告,了解您的操作系統和應用程序軟體面臨的威脅,判斷這些問題是否會危害您的配置。(例如,最近發現 Apache HTTP Server 的 mod_proxy_ftp 模塊有漏洞,所以許多站點禁用了這個模塊)。在需要採取行動時,制定一個防禦威脅的計劃,比如對源代碼應用補丁並重新編譯,或通過廠商的包存儲庫更新軟體。
  • 只向每個用戶和應用程序授予最低限度的訪問權。只提供完成任務所需的許可權,絕不要超過這個範圍,絕不要允許直接訪問 root 登錄。如果應用程序必須作為根用戶運行,應該考慮替代解決方案。
  • 絕不要為了圖方便而降低安全性。
  • 部署 Monit 以檢測入侵。Monit 和相似的工具能夠監視文件和目錄的模式、時間戳、散列值和其他屬性,並在有人(有意或無意地)修改這些屬性時發出警告。Monit 還監視 Apache 等進程,可以在發生故障時重新啟動守護進程。圖 2 顯示 Monit 的運行效果。

    圖 2. Monit 監視文件、目錄、進程、網路等






富蘭克林關於一致性的提示

“防止壞習慣產生比克服壞習慣更容易。”

“一次性的” 東西是最讓系統管理員頭疼的 — 獨特的甚至只有細微差異的機器配置或實現某種目的所需的 “微小” 調整。一次性的東西很容易被遺忘,可能會造成損害,最好一開始就避免它們。

當然,排除所有例外是不現實的。正如另一位智者所說的,“某些事情總會發生!”。在一般情況下,保持一致性是最好的策略。但是,如果無法避免一次性的東西,那麼一定要仔細記錄這些特殊情況。

下面是一些建議:

  • 絕不要對正在運行的生產系統應用未經檢驗的修改。應該在一個專用的系統中準備和測試每個修改,然後再應用於生產環境。
  • 維護自己的軟體存儲庫,使用它作為組建系統的權威源。如果您的系統使用 Red Hat Package Manager (RPM) 包格式,那麼可以使用 Yum(見 參考資料)管理和分發本地軟體包。
  • 如果要多次重複執行一個手工任務,那麼應該在腳本中實現操作。shell 腳本可以簡化操作、避免錯誤和節省時間。順便說一句,如果要編寫實現修改的腳本,那麼也要同時編寫相反的腳本 — “撤消” 腳本。要測試這兩個腳本以確保健壯性。
  • 使用源代碼控制系統維護系統配置文件。源代碼控制系統允許用戶 “回滾” 到以前的文件版本,從而恢復以前的狀態或從錯誤中恢復。另外,可以使用資料庫或者 Trac 和 Lighthouse 等系統(見 參考資料 中的鏈接)在配置的整個生命周期內(從請求實現直至取消)跟蹤對配置的修改。
  • 為每個一次性的配置設置過期時間,在到期時撤消修改(可能有例外情況)。




富蘭克林關於準備的提示

“不做準備,就意味著失敗。”

危機肯定會發生。UNIX 系統及其設備往往可以長時間連續運行。但是,網路通信可能中斷,硬體可能出現故障,人會 犯錯誤。墨菲定律(“有可能出錯的東西,就一定會出錯”)是信息技術 (IT) 的首要法則。

但是,好在危機發生的頻率越來越低了,這使我們有足夠的時間準備和避免危機。管理員的日常工作必須包括備份、日誌輪轉、性能度量(稍後詳細討論)、應用補丁和保護所有系統。

下面是一些比較容易被忽視的日常維護任務:

  • 檢驗備份。當危機發生時,如果發現備份是不完整的或無法使用,那就真的有大麻煩了。應該常常進行恢復演習。另外,應該制定一個恢復計劃,以便在發生不可抗的災難時恢復業務運營。
  • 要注意即將到期的期限,要及時續約 — 尤其是系統所依賴的 Secure Sockets Layer (SSL) 證書和其他服務或產品,這方面的失誤可能會幹擾甚至中斷訪問或業務運營。應該至少每個月續約一次常規 SSL 證書,新的 Extended Validation (EV) 證書的續約周期可以長一些。當續約期限快要到了時,應該順便查詢或商談更合適的服務條款。
  • 對於升級失敗 一定要有心理準備,要制定恢復計劃。可能墨菲定律沒有發生,您的 Oracle 升級會順利地完成……但是不應該指望永遠這麼走運。業務連續性是非常重要的,您不能心存僥倖。




富蘭克林關於節儉的提示

“注意小開支。一個小洞也會弄沉大船。”

現實情況是,IT 預算不斷縮減,而同時對服務的廣度和深度的要求卻不斷增加。必須節省每一塊錢。富蘭克林對財政的感想也適用於當今的 IT 環境。

下面是幾點建議:

  • 雖然富蘭克林沒有首創 “簡單點兒,傻瓜!” 這句話,但是他不會介意這麼粗魯,反而會欣賞這種實用主義精神。儘可能每次只做一處修改,不要試圖一蹴而就。例如,如果要升級內核,就不要同時修改 Domain Name System (DNS) 條目。
  • 禁用(甚至刪除)不使用的服務和軟體。例如,對於面向公眾的 Web 伺服器,可能不需要運行用於發送郵件的 Simple Mail Transfer Protocol (SMTP) 或用於印表機管理的 Common UNIX Printing System (CUPS)。每個組件都可能增加管理員的工作量,可能出現問題,會佔用處理器周期、磁碟空間和時間;應該儘可能去除不必要的東西。
  • 優化,優化,再優化。按照 Bruce Schneier 的說法,“優化是一個過程,而不是產品”。與安全性一樣,沒有 “治療” 糟糕性能的萬靈藥。安裝更多的內存或處理器肯定會有幫助,但是它們僅僅是暫時掩蓋了效率低下的問題,當這些新資源也被消耗掉之後,性能問題會再次出現。




富蘭克林關於信息的提示

“你相信誰?我還是你自己的眼睛?”

實際上,這句話不是富蘭克林說的,而是馬克斯兄弟中的 Chico Marx(是經典作品 Duck Soup 中 Groucho Marx 的台詞)。

當然,人們總是希望根據可靠的數據做出決定,而不是根據傳言或猜測。因此,一定要收集系統指標,據此制定計劃和評估操作。應該連續監視系統的使用量和容量,以此了解什麼是 “正常情況”。這樣的話,可以很容易地發現異常。基線對於制定計劃也非常有價值,可以根據基線和預計或觀察到的使用量決定增加多少資源。

下面是一些建議:

  • 有許多自動化系統監視工具可供選用,其中大多數是開放源碼的。例如 ZABBIX、Nagios 和 Cacti(見 參考資料 中的鏈接)。應該把這種系統與電子郵件和傳呼機連接起來,在發生緊急問題時及時通知相關人員。
  • 如果系統支持的話,應該啟用 IBM® SMART HDD 警報等硬體監視機制。許多硬體廠商也提供用來監視硬體的軟體代理;應該安裝並運行這些守護進程。同樣,應該把警報傳播給相關人員,以便他們及時做出反應。
  • 應該觀察前 24 小時、前一周和前一個月的使用量模式。要特別注意平均負載、磁碟空間消耗量和內存使用量;然後,總結出變化趨勢。根據這些分析,提前添加所需的硬體。
  • 檢查系統日誌中的重要消息,比如失敗的登錄嘗試和出現問題的守護進程。




富蘭克林關於教育的提示

“花錢求知識,無人能奪去。”

很少有哪個行業的變化速度能有計算機行業這麼快,IT 業的變化甚至更快。任何系統管理員的最佳投資方向都是培訓。

參加培訓課程和獲取認證對於管理員的職業前途和應對大型項目非常重要。還應該通過閱讀雜誌增長見聞,逐漸形成自己的觀點和傾向。應該經常與同行交流實踐經驗。

最重要的是 “RTFM”。也就是,閱讀手冊、手冊頁、發布說明、README 和軟體附帶的其他文檔。





富蘭克林關於開放源碼的提示

“我們受益於別人的發明,也應該樂於用自己的發明幫助別人;我們應該慷慨無私。”

富蘭克林是一位非常多產的發明家,但是他不願意申請專利。實際上,當年賓夕法尼亞州州長要給富蘭克林的新型火爐授予專利權,這樣富蘭克林就可以在幾年內壟斷這種產品的生產,但是他用上面這段話表示拒絕。(在 1790 年之前,各個州有自己的專利權法規,它們各自頒發專利。於 1790 年通過的聯邦專利法把專利權劃歸聯邦管轄的範圍,由聯邦憲法的第 1 章第 8 節第 8 款加以規定)。

毫無疑問,富蘭克林會贊成開放源碼,很可能會激烈地反對軟體專利和版權法規。





富蘭克林關於協作的提示

“假使我們不團結在一起,我們將分開被絞死。”

IT 確實有自己的職責範圍。但是,IT 並不存在於真空中。它的目標、優先次序、開支和服務(包括日常任務)必須與企業的目標保持一致。

無論 UNIX 計算機調整得多麼好,它只對於一組條件是最優的;如果條件發生了變化,UNIX 管理員必須相應地進行調整。





富蘭克林關於廠商的提示

“通過體驗和觀察做出結論的關鍵在於評估可能性,也就是估計可能性是否足夠高,足以證明結論是客觀的。這種評估非常複雜,非常困難。這通常需要大大超越常人的智力水平。牛皮大王、巫士和鍊金術士(以及濫用公眾信任的所有人)的成功都是因為一般人無法正確評估可能性。”

借用一句老話:要有自己的標尺。

就像是鍊金術一樣,為您的應用程序找到最佳的硬體和軟體組合是一種神秘的藝術,需要不斷實踐才能取得最有效的結果。在考慮任何廠商的產品和技術之前,應該確定自己的需求和重要的性能基準。應該向多家廠商諮詢;對於比較中意的兩三家廠商,在購買之前先向它們要求借用您想要的設備。運行您的基準測試,甚至可以邀請廠商參與針對您的需求進行系統調優。





富蘭克林關於必然性的提示

“除了死亡和稅收之外,這個世界上沒有什麼是必然的。”

富蘭克林說的不完全正確。這樣說可能更準確,“除了死亡、稅收和系統崩潰之外,這個世界上沒有什麼是必然的。”

無論系統管理員多麼小心謹慎、多麼有天才,都不可能防止硬體故障,而且硬體故障常常在最不合時宜的時候發生。因此,一定要做好充分的準備並儲備備用硬體。在購買硬體時,要考慮它的平均故障間隔 (MTBF) 並相應地儲備備用硬體。下面是幾條經驗規則:

  • 至少為投入服務的每 10 到 15 個組件購買一個備用組件。同時購買備用設備和生產設備通常是最經濟的。
  • 在前一條規則的基礎上,對於部署的每種硬碟型號,至少購買一個備用硬碟。例如,如果購買用於生產的三個 Super Spindle 100 和兩個 Disc-o-Tech LX,那麼應該多購買一個 Super Spindle 100 和一個 Disc-o-Tech LX。如果需要,可以立即換上備用硬體。
  • 如果您的硬體逐漸過時了(誰不是呢?),那麼考慮購買兩三個替換硬體,以便在部件損壞時替換。硬體越老,就越難找到部件。在市場上還有供應時,儘可能提前做好準備。
  • 採用 Puppet 等功能豐富的配置管理和部署系統(見 參考資料 中的鏈接),以便快速地用新主機替換出故障的機器,儘可能避免操作人員手工操作。

對於儲備備用硬體,沒有惟一正確的戰略,您採用的方法必須符合體系結構的特點。如果伺服器部署在計算機集群中,那麼最前端的節點是惟一的關鍵機器;其他機器可以隨意啟動和停止,崩潰了也不要緊。如果您的系統相互連接,可以自動地故障轉移到熱備用機器上,那麼儲備可以少一些。

如果一台單獨的專用機器提供某種關鍵服務,比如 DNS 或集中的身份驗證,它就是致命的弱點,必須為它提供充足的備用硬體。另外,應該提前計劃在發生緊急事件時如何把關鍵服務遷移到其他系統上。





結束語

制憲元勛和喜劇演員本傑明·富蘭克林曾經說,“夾在兩個律師之間的老百姓就像是夾在兩隻貓之間的魚。”

除了本傑明·富蘭克林和 Chico Marx 之外,我還要感謝 Ted Boggs、Mark Bouman、Oleg Brodkin、Dana French、Tom Georgoulias、Steve Holdoway、Altan Khendup、Jeff Kimble、Lubos Kolouch、John Mascio、Philip Mather、Nathan McCourtney、Ray Robert、Matthew Sacks 和 Jesse Sipprell,本文引用了他們的話。

“無論 UNIX 計算機調整得多麼好,它只對於一組條件是最優的;如果條件發生了變化,UNIX 管理員必須相應地進行調整。” 這句話直接引自 Altan Khendup。

“絕不要為了圖方便而降低安全性。” 這句話直接引自 Dana French — 也是 IBM developerWorks® 的撰稿人。

希望富蘭克林和其他人的建議對您有幫助。誰知道呢?富蘭克林的話可能會幫助您獲得成功。 (責任編輯:A6)






[火星人 via ] 給明智的系統管理員的 10 條提示已經有288次圍觀

http://www.coctec.com/docs/linux/show-post-68889.html