uWSGI叢集平臺
叢集是uWSGI伺服器的關鍵功能之一,該功能從0.9.7-dev開始提供。
首先我們看一個通過TCP套接字實現的簡單應用:
./uwsgi -w werkzeug.testapp:test_app -s 192.168.173.100:3032 -M -p 4 |
現在我們想將應用程式移動到第二個伺服器上,一個首要的問題就是第二個伺服器需要第二個ip地址,這樣由於兩臺機器的ip不同,因此就不可能通過NFS來共享一個xml檔案來實現。
幸運的是,我們能夠使用依賴於叢集的魔術選項,例如:
./uwsgi -w werkzeug.testapp:test_app -s 192.168.173.*:3032 -M -p 4 |
這如你看到的,在ip地址中包含了一個*號,這意味著uWSGI伺服器將會在本地機器中自動的搜尋第一個可以的ip地址。
因此,我們同樣可以在第二臺機器上執行這條命令來啟動第二個uWSGI伺服器。這樣啟動問題就解決了。
現在我們的伺服器已經啟動執行了,但是其它的問題又可能有來了,例如,我們想對uWSGI伺服器進行調整,那麼每一次的調整,即進行修改,都必須在第二臺uWSGI伺服器上做同樣的操作,並且都需要重新載入。看一下怎麼解決這個問題。
下面是一個uWSGI叢集結構:
在這個結構中我們假如有4個節點:
node1 192.168.173.100 node2 192.168.173.101 node3 192.168.173.102 node4 192.168.173.103 |
在node1上啟動uWSGI,但是這次要選擇一個"叢集名稱",叢集的名稱是一個簡單的多播地址,這個地址將會被這個叢集內的所有叢集所共享。在這裡我們將選擇225.1.1.1:3333地址,這個地址可以隨便選擇,但前提條件必須是在我們環境中所沒有使用的一個多播地址,例如(這裡我們假設在node1上執行):
./uwsgi -w werkzeug.testapp:test_app -s 192.168.173.*:3032 -M -p 4 --cluster 225.1.1.1:3333 |
好了,我們的叢集啟動了,但是這意味著什麼呢?
從現在開始,叢集中所有的節點都將會共享這些選項,因此,在node2、 node3 和 node4上只需簡單的執行以下命令:
./uwsgi --cluster 225.1.1.1:3333 |
叢集中的各個節點將會從已經啟動的任何一個節點上獲取配置(在這裡具體的就是node1)。那麼在叢集中所有的節點都正常啟動並且執行後,如果node1死掉會出現什麼問題?沒關係,即使node1當機,而其它的伺服器,比如 node3要重啟,它還可以從node2或者node4上獲取配置。
下面我們看兩個選項--cluster-reload和--cluster-log。
如果我們刪除一些不需要的配置檔案,或者是編輯一些配置檔案,那麼每一次類似這樣的事情都得對叢集中的每一個uWSGI例項進行重新啟動?不用那麼麻煩,只需在其中的一個例項上簡單的執行以下命令就可以了:
./uwsgi --cluster-reload 225.1.1.1:3333 |
這條命令執行後,所有叢集中的節點都將會被重新載入。這就是--cluster-reload的功能。
另一個有用的選項是 --cluster-log,通過該選項可以向叢集中的所有例項傳送訊息,並且所有節點都會將其記錄到它們的日誌。
例如:
echo "i love uWSGI" | ./uwsgi --cluster-log 225.1.1.1:3333 |
在這個例子中,我們通過在標準的輸入裝置用echo命令將字串在通過管道傳遞給uWSGI,然後會組播到各個例項。
uWSGI代理
uWSGI伺服器包含了一個高效能的路由/代理/負載均衡器。對於uWSGI代理伺服器而言,叢集對它完全支援。只要在啟動時新增一個--cluster選項那麼將會自動的新增或者是移除一個節點。例如:
./uwsgi --proxy 127.0.0.1:3031 --cluster 225.1.1.1:3333 |
這樣啟動之後,簡單的將127.0.0.1:3031指向了文字伺服器 uwsgi處理程式,並且也會自動新增節點,而且會實現負載均衡和健康檢查。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-732188/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL DB 叢集管理平臺--orchestratorMySql
- 容器叢集管理平臺的比較
- 大資料平臺Hadoop叢集搭建大資料Hadoop
- 容器雲平臺物理叢集配置實踐
- 高可用Hadoop平臺-HBase叢集搭建Hadoop
- HADOOP叢集在Linux平臺的搭建HadoopLinux
- OpenPAI:大規模人工智慧叢集管理平臺AI人工智慧
- 【MongoDB】windows平臺搭建Mongo資料庫複製集(相似叢集)(一)MongoDBWindows資料庫
- 國內 Linux 伺服器叢集管理的平臺Linux伺服器
- 日誌分析平臺ELK之搜尋引擎Elasticsearch叢集Elasticsearch
- mongodb 3.4 叢集搭建升級版 五臺叢集MongoDB
- 使用 Velero 跨雲平臺遷移叢集資源到 TKE
- 基於Python+Django的Kubernetes叢集管理平臺PythonDjango
- Linux平臺上搭建apache+tomcat負載均衡叢集LinuxApacheTomcat負載
- 基於X-86平臺的達夢8守護叢集搭建
- Zookeeper叢集 + Kafka叢集Kafka
- LNMP 分散式叢集(一):Nginx+PHP平臺搭建與負載均衡配置LNMP分散式NginxPHP負載
- Oceanbase 4.0 三節點叢集x86平臺安裝實踐
- 搭建zookeeper叢集(偽叢集)
- web叢集與ejb叢集Web
- 支撐微博億級社交平臺,小白也能玩轉Redis叢集(實戰篇)Redis
- 支撐微博億級社交平臺,小白也能玩轉Redis叢集(原理篇)Redis
- 遊戲平臺採集資料遊戲
- zookeeper叢集及kafka叢集搭建Kafka
- HACMP的叢集檢視後臺程式命令ACM
- 自媒體採集平臺免費,免費的自媒體採集平臺
- Redis一站式管理平臺工具,支援叢集建立,管理,監控,報警Redis
- WGCLOUD 叢集監控平臺 v2.1,正式釋出原始碼,支援開源GCCloud原始碼
- Centos7下ELK+Redis日誌分析平臺的叢集環境部署記錄CentOSRedis
- Hadoop叢集安裝-CDH5(5臺伺服器叢集)HadoopH5伺服器
- Hadoop叢集安裝-CDH5(3臺伺服器叢集)HadoopH5伺服器
- redis偽叢集配置Cluster叢集模式Redis模式
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- Redis叢集 - cluster叢集、資料分片Redis
- 電商平臺資料採集介面
- 基於 Clusternet 與 OCM 打造新一代開放的多叢集管理平臺
- linux下搭建ZooKeeper叢集(偽叢集)Linux
- Zookeeper叢集 + Kafka叢集 + KafkaOffsetMonitor 監控薦Kafka