追蹤
NEIL's_學而時習之x不學無術~私藏IT技術經驗分享部落
關於部落格
NEIL. Cheng....寫作只是為了日後工作之備忘操作參考

本部落格文章撰寫前進邁向第五年(since 2009 ~至今)仍繼續推進分享IT學習!!About Windows/Linux Server,Virtualization


分享網誌: 由於,本人預先完成LAB後,才補上撰寫文章與截圖,若發現文圖對照說明有誤..本人將盡快校正,也請不吝指教! Thanks!

  • 168105

    累積人氣

  • 35

    今日人氣

    0

    追蹤人氣

網管人工作日誌之-效能.可用性.企業網站平台架構思維分享-by Neil

 [ Web Group 架構區段介紹]   VLAN ID :10  

 本區段建置兩台軟體負載平衡器(使用CentOS 6.4 x64) 

  Linux virtual server (LVS) : DR  直接路由型模式,當對外連線該台Web Site 時將由Director

  參考所配置演算法或權重(weight) 轉發(forward) 給後端真實伺服器(Real Server) 處理

 下圖中我們配置兩台 Nginx Web Site 做伺服器間Server Load blance (wrr :權重值x輪詢演算法)


 回應則由Real Server 直接回覆給Client 端(將不透過LVS)處理(可減低LVS負擔 ) 

 [Web Server 選用: Nginx 1.4.4]  

 觀望"Nginx 伺服器"頗受美洲,中國大陸 虛擬主機服務商採用首選,輕量型特性,具高負載

 低耗損系統資源特性
(具優秀Proxy 反向/正向代理能力),本人認為比老牌Apache卓越許多

 [ 動態/靜態網頁分離處理設計] 參考下圖


     咱已計畫將Nginx Web Site(Static hadling node 1)
Nginx Web Site(Static 

      handling node 2) 限定只處理 靜態檔案格式(EX:  jpg|css|js|png|gif|html|htm) 

      當遇到副檔名 *.php  則轉交給其他負責動態檔案格式處裡節點 PHP-FPM(5.5.9)

     
node 1 ~ node 3 三台主機
負載處理*.php 程式處理 搭配nginx upstream 模組設計

       可實現對三節點 PHP-FPM 程序做健康檢查,偵測成員超過Timeout 秒數將不再

        轉發該死亡節點,選舉另一健康節點繼續維持運作.
達成網站高可用性/負載平衡效果

       (可達成動態/靜態網頁網頁 切割處理設計,減輕原單一伺服器處理壓力負擔)     
    
 備註:  當然也有不少企業選擇 Nginx+Apache 實現動靜態網頁分離設計(認為Apache處理php穩定)

    本例 
PHP-FPM(5.5.9) node 1 ~ node 3 三台主機僅安裝 php,php-fpm 程序獨立執行

   
(無另額外安裝Nginx Server) 來做測試, PHP-FPM Node 節點為 node1_ip:9000 ,

   node2_ip:9000
與node3_ip:9000  ,若您對動態網頁分割處理設計感興趣可參考庵

   之前寫的
(在此不贅述) [效能提升] Nginx 整合 PHP 實驗網頁"動靜態頁面分隔處理實現by Neil


[於PHP-FPM(5.5.9) node 1 ~ node 3  上安裝 Zend Opache 替PHP 執行加速,減少重複編譯]

我們前篇曾使用過Zend Guard Loader與Xcache 替PHP 程式執行 加速

現測試 "Zend Opache" 支持PHP 5.5.x 版本,  如果你有安裝remi repo 源站可網路直接安裝

zend Opache  
本例將使用編譯方式擴充此PHP模組

上網PHP官方網站下載 zend Opache 請點我       #目前最新版本: zendopcache-7.0.3.tgz 

等會用到phpsize 請先安裝好php-devel      #測試主機 Cent224

 yum -y install php-devel

 tar zxvf  zendopcache-7.0.3.tgz

cd   zendopcache-7.0.3

phpize  

./configure --with-php-config=/usr/bin/php-config 

make && make install 

編譯安裝完成後會提示opcache.so  安裝路徑   #本例:  /usr/lib64/php/modules/opcache.so

Then 編輯 /etc/php.ini   添加以下敘述

[Zend Opcache]
zend_extension=/usr/lib64/php/modules/opcache.so
opcache.memory_consumption=128        #配置多少內存供Zend Opcache 使用
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1


重啟php-fpm 服務,並檢視zend opcache 是否加載成功?  已成功加載


另外網路上由他人利用php 寫了一隻可監看Zend Opcache 狀況快取程式如下


 點此下載 儲存成test.php 來檢視看看

 內存: 128 MB , 已有11MB使用, 閒置117 Mb..可檢視目前Zend Opcache 使用狀況

  檢視2:    general 訊息 前運作正常



[叢集使用的iSCSI Storage]

為了實現叢集高可用性 可另佈署 兩台iSCSI Storage (一台做成Active/Standby 架構)

兩台做複寫同步(當一台掛點時可短時間喚醒另一台備份機) HA Cluster則依照各廠牌不同配置

本Lab 設計裡劃分一個容量100GB Lun  供 Nginx(static)x2  與 PHP-FPM node1 ~ node3 掛載

於本地端 "/data"路徑下以共用網站資料" ,並設計成Raid 1+0  磁碟陣列保護(Mirror)




 [  Database Group 架構區段介紹]  VLAN id : 20  

   捨棄過去常用MySQL 改採用Mariadb 5.5.x  版本運行DB服務

   此區段亦從在獨立一組 LVS (DR) keepalived x2 (Master / Backup)

   如同Web Group : 在LVS 我們可配置多個虛擬IP(VIP) 其實可減緩Ddos 攻擊

  (保護後端Real Server) 因已達成分散流量木的

   各台LVS上裝了keepalived 元件 實現failover 切換目標達成"高可用性"

   Server Load balancing : 負載調配四台資料庫連線與使用 

   複寫設計:  Mariadb Galera Cluster Replication : 多Node 之間資料彼此同步

    較過去使用  MySQL Master /Slave   Replication 設計  "複寫同步快速" , "擴充節點彈性"

    (各個Galera Node 皆 同步可讀可寫) 本人蠻推薦使用 , 本人過去曾寫過一篇實作介紹

    使用 Haproxy 搭建高可用與負載平衡叢集(二)MariaDB 應用..by Neil


最後[佈署Memcached 使分散各台達到Session共享]

使用 Magent 代理程序可實現 ,分散數台Memcached  資料同步(一對多同步),

並另有簡易備份設計(Failover) , 配置Memcached 時須考慮配置多少內存(RAM)給快取使用

memcached的API使用三十二位元的循環冗餘校驗(CRC-32)計算鍵值後,

將資料分散在不同的機器上。當表格滿了以後,接下來新增的資料會以LRU機制替換掉。

由於memcached通常只是當作快取系統使用,所以使用memcached的應用程式在寫回較慢的

系統時(像是後端的資料庫)需要額外的程式碼更新memcached內的資料。

分散多台Memcached 使用有助於防止只集中使用單一台 系統負載,分散流量..等

建立Memcached 主要是為了減低資料庫性能負載(於本例中我佈署三台)

Magent 應用: 

node 1  (active)寫入同步- > node2(active) , node3 (backup 節點fail 後接手)

關於Magent 整合Memcached 應用 本人過去曾寫過一篇實作介紹

Memcached 集群session 管理,組態,與監控實務by Neil



總結/心得 :

上述設計具高可用性兼具負載平衡 網站運行架構尚還有彈性改變與延展架構可能

(EX:異地機房備援..)
基於 Linux base 架構可替企業省下不少M$授權費用,在設計平台架構

上減少因為M$授權費用阻礙,頗具"彈性佈署" .

交換器選擇傾向推薦較好效能或可考慮 Layer3 Switch , Layer4 Switch 運作(前提$$預算夠力)

伺服器運作OS運行可折衷選擇使用 VMWARE(vSphere), Citrix (Xen Server)  這部分$$ hyper-v

授權具優勢(觀望不少企業因為$$而撲向微軟hyper-v...) 當然VMWARE vSphere 非常貴,我覺得

各部分功能設計也是較先進(老字號) , 但我還是較推薦 Citrix Xen Server ( Xen 耗損系統資源算低)

或許值得納入考慮!!


[LVS 與 Nginx Reverse !? which one ]

本Lab 中 LVS 與 Nginx Proxy 可相替換 ,或者相結合使用(LVS+Nginx Proxy) 經本人測試成果

LVS 效能優化略勝 Nginx Proxy !! (當然設計還是由系統管理員評斷決定用哪個好!?


時下使用Nginx 擔任網站前端Reverse Proxy (反向代理) 企業很多(在前端保護隱藏後端真實伺服器)

Nginx Reverse Proxy 不僅僅支援 後端 APACHE,Nginx 後端伺服器

亦支援代理 "Microsoft  IIS Web Server"  看重其具高平行負載,低耗損特性

觀望國外不少企業以Nginx  逐漸取代老牌SQUID , 另Varnish 也是一款受好評Proxy 代理軟體

本人過去亦寫過Nginx Reverse Proxy /Varnish 實做文章 有興趣可參考  

[終篇:伺服器負載/高可用性配置] 使用高速緩存Varnish Cache 加速網頁存取及回應 By Neil

Nginx Reverse Proxy Plus 添加 Cache(快取機制)加速網站回應 by Neil

[ 圖片儲存伺服器 配置]

倘若企業內部網站具大量圖檔儲存供網站伺服器處裡撈取,可設計成分散式儲存系統形式

 參考下圖: 為本人數年前設計Lab  :  Moosefs 為一款極受歡迎開源分散式儲存系統

 當資料掛載MFS 分享目錄後 當資料修改或新增
時將分散式 同步寫入指定Data Note 

 即下圖的.171.172
  兩節點, 中繼資料伺服器具HA高可用保護另建置一台中繼"日誌資料伺服器"

 當"中繼資料伺服器掛點時,可從中繼日誌資料伺服器回朔運作 (配置分散式儲存系統好處: 降低

 本機 I/O 讀取/寫入負擔 藉由MFS設計各節點分散流量處理


 最後分享過去亦寫過兩篇關於MFS 分散式儲存設計文章可供讀者參考


創建 GlusterFS 分散式儲存服務(DFS)by Neil 

#Neil現在比較傾向使用GlusterFS 因為被紅帽收購XD  哈哈哈  ,本篇純屬個人經驗談分享

啊...終於寫完了此篇...囧RZ....

相簿設定
標籤設定
相簿狀態