天天看點

如何運維網站能讓其穩定高效——穩定篇

作為一名運維工程師,工作中最大的希望就是自己運維的網站能夠穩定高效運作,但理想很豐滿現實很骨感,實際情況是總會有各種各樣狀況導緻網絡、伺服器或者應用環境發生故障。面對這種情況,我覺得還是要能從故障中總結出經驗規律,讓發生的幾率不斷的降低。要完成穩定和高效兩者中的任何一個都是一個極具挑戰的事情,這裡我以維護自己的blog為例來闡述一下我對穩定這個詞的诠釋和了解。

       我的blog架設在wordpress環境上的,記錄了工作中的一些經驗總結和随筆文章,雖然是個人網站,但麻雀雖小,五髒俱全,有一定的代表性。

如何運維網站能讓其穩定高效——穩定篇

一. 穩定之硬體穩定

       硬體是基礎設施,必須打好硬體穩定的基礎。傳統的硬體選型一般都是購買hp,dell的機架式伺服器,根據自己的需求選擇cpu,記憶體,硬碟等,這種方式有一個弊端就是不能很友善的對硬體進行後期擴容,買了後一般情況下就定型了,而且還要托管,購買帶寬,後期的硬體維護也是需要自己來做。面對這些問題,我覺得選擇當下比較炙手可熱的雲伺服器是個不錯的選擇。它解決了:

1)硬體型号不再重要,自然也就不會成為網站發展的瓶頸,cpu,記憶體,硬碟等硬體的大小都是彈性的,根據自己使用的情況随時可以增大和減小

2)雲伺服器提供商提供托管場地和網絡帶寬設施

3)因為雲伺服器提供商一般都有大量的伺服器,是以會專門有一個機房工程師每天做硬體,網絡的巡檢工作,及時發現問題并将基礎問題處理在萌芽階段

4)對磁盤io要求比較高的,可以選擇購買本地磁盤和ssd磁盤來解決問題

總的來說,選擇雲伺服器比較省心,而且國内的雲伺服器也逐漸的成熟起來,我個人使用雲伺服器這種方式7個月了,截止目前,硬體,網絡都沒有出現過問題,還是比較穩定的。當然大型雲伺服器提供商是比較好的選擇,阿裡雲、騰訊雲、ucloud都不錯。具體選擇哪家,可以根據自己的實際情況來酌情選擇。

如何運維網站能讓其穩定高效——穩定篇

二. 穩定之軟體穩定

       軟體是具體提供服務的應用元件,要做好這個穩定我覺得比硬體難一些了,方方面面都要考慮清楚,這裡從下往上來逐個分析吧:

1)wordpress是一個php環境的程式,那麼linux作為系統環境就是一個很好的選擇,其實穩定的另一個特征就是當出現了故障時能夠很快的排除故障,在成百上千的linux釋出系統中很多人最終選擇redhat,centos肯定是有其原因的,centos是基于企業級linux系統釋出redhat編譯而來,相容性好而且免費使用,網絡中有大量的技術文章可以借閱參考,64位也會逐漸的取代32位系統,我最後選擇的是centos6 64位系統環境。這裡不是說讓大家全部選擇此發行版,而是一個建議,在實際選擇過程中最好根據自己的業務類型,選擇一個能用上3到5年的系統,不折騰。

2)nginx、mysql、php的搭檔組合有逐漸取代amp組合的趨勢,v1.0以上的nginx,v5.1以上的mysql,v5.4以上的php,這個版本選擇是目前比較實用的組合,能夠支撐一段時間不需要在更新了。

3)元件選擇好後,比較關鍵的就是配置好這些元件了,配置這個過程沒有一個統一的标準,需要不同參數也就不同,但不管環境怎樣,還是有幾個比較通用的法則:

a. 一個php和nginx程序大約占用記憶體20m,最大允許的程序數是要根據自己的實際記憶體大小來動态調整,否則可能導緻記憶體耗盡而系統崩潰

b.調整參數的原則就是讓自己的硬體資源能夠充分利用,最大使用率根據28原則

c.配置的過程是一個循序漸進的過程,很多時候也是在處理問題時逐漸總結出來最優配置

三. 穩定之實時監控

       網站對外釋出後,剩下的任務就是要保證網站不出故障,持久穩定運作了。要做到這一點,就要對網站和硬體的運作情況有一個全面的了解才可以。掌握的資料越多,就對自己的網站運作情況越有利。

可用性監控:

網站當下是否能夠正常通路,這是一個最基本的要求。但我們不可能實時去盯着,這裡需要有個實時監控的服務去不斷的探測,提供這樣服務的工具有很多,例如nagios,zabbix等開源産品就是專門做這個事情的,周期性的探測網站的可用性,不過這種産品有一個很大的局限性,就是nagios和zabbix是部署在和自己網站同樣的網絡環境中,常常會出現nagios探測是好的,但外部通路卻不行的狀況。

這裡我選擇了一個第三方公司的産品——雲智慧的監控寶,來做我的blog的可用性監控,其實作原理是使用它在全世界托管的監測伺服器來周期性的通路我的blog,這種監控比較接近于實際使用者通路,比較有說服力,如果發現了問題,會有一個告警資訊發送到手機、郵件上。

如何運維網站能讓其穩定高效——穩定篇
如何運維網站能讓其穩定高效——穩定篇

四. 穩定之壓力測試

       壓力測試的目的是為了能夠對自己網站的最大負載能力有一個預估值,原則是測試一個有複雜業務邏輯的動态頁面為好,通過壓力測試得出自己網站的最大并發值和承載能力。得出這個值之後,剩下的在配置參數的時候就有依據了。壓力測試的方法有很多種,比較常見的有ab,loadrunnner等工具。

五.穩定之硬體資源使用監控和并發數監控

       壓力測試的目的就是為了能夠在這一環節有的放矢,網站上線後通過可用性監控得知網站是否能正常通路。在通過硬體資源使用情況和web服務的并發數監控,在監控中将告警閥值設定為壓力測試過程中的80%為準。通過這樣的實時監控,就對自己的伺服器的運作情況有一個立體式的掌控,讓其能夠運作在正常的區間中。

如何運維網站能讓其穩定高效——穩定篇
如何運維網站能讓其穩定高效——穩定篇

總結:

保證服務的穩定是一個持續的過程,通過時間的積累對自己維護的業務運作情況越來越熟悉,對架構的掌握也越來越透徹,将網站架構中的薄弱環節加強,再通過後期的實時監控,對網站的整體運作情況有一個清晰的認識,由此來讓自己運維的網站穩定運作。以上五點算是抛磚引玉吧,如果你有好的方法,随時溝通交流

本文來自雲栖社群合作夥伴“linux中國”,原文釋出日期:2015-08-10