多服務器操作利器 - Polysh


多台服務器下的痛苦人生

分布式架構下的系統,可以說每個服務都是分別部署在多台服務器上的,有的甚至還需要多機房,在這種架構下可以說可以很好的做到了易擴展、容災等功能。推薦的服務部署為一服務多機器、一機器一服務、多機器多機房,上線之前做好壓測,留有一定的水位線。以此作為此類服務的容量配置標准,服務壓力上漲之后,按標准配置加機器即可,這是目前我們系統服務部署原則。

那么問題來了?這么多服務多機器下,如何快速定位一個 Bug 呢?
例如我們定位到 bug 來自某一個服務,這時候這個服務后端有 5 台服務器做負載。常規操作是,我們依次登錄到這 5 台服務器上去查詢服務日志,定位該操作具體在哪一台執行,運氣好的話,你登錄的第一台就找到問題,如果你運氣差的話,呵呵,你可能會查詢了前 4 台的機器都沒有找到問題,偏偏在最后一台機器上找到了問題原因。
當然,你可能會說,既然你們分布式架構了,為什么沒有做集中日志處理?這個今天不重要,其實我們有日志中心的。

Polysh 是個什么鬼?

Polysh is a tool to aggregate several remote shells into one. It is
used to launch an interactive remote shell on many machines at once.
It is written in Python and requires Python ≥ 2.4.

官網簡介的上面一段話很清楚了,它是用來在一台機器上可以連接多台機器后,然后一條命令可以發送到多台機器執行后並在這一台機器上顯示結果。可以說就是分布式架構下,一個服務部署在多台機器下的運維必備利器。

Polysh 安裝及配置

首先 python 版本要大於等於 2.4。
1. 登錄機器,找到一個合適的文件目錄
下載安裝文件,解壓文件。
wget http://guichaz.free.fr/polysh/files/polysh-0.4.tar.gz
tar -zxvf polysh-0.4.tar.gz
wget

2. 進入解壓后的文件目錄,安裝
cd polysh-0.4
python setup.py install --home=~/polysh
這里命令是安裝 polysh 到當前用戶的主目錄。
setup

3.添加 polysh 執行目錄到環境變量
echo "export PATH=~/polysh/bin:$PATH" >> ~/.bash_profile
echo "export PYTHONPATH=~/polysh/lib/python/:$PYTHONPATH" >> ~/.bash_profile
或者你打開文件自行添加:vim ~/.bash_profile;
最后要執行如下命令要使配置生效:source ~/.bash_profile

.bash_profile

到這里的話,我們安裝就算完成了。當然你可以接着配置免密登錄,這里不再演示,就是使用 ssh-keygen 的命令創建公鑰,然后把公鑰內容添加到目標機器。

Polysh 的使用

使用起來非常簡單,直接輸入你想登錄到的線上機器名即可。
舉個栗子:我們有十台機器,機器名分別為 mafly01、mafly02,到 mafly10 這樣,輸入 polysh 'mafly0{1,2}' 命令后,即可登錄到服務所部署的 mafly01、mafly02 兩台機器,然后可以像以前一樣輸入你想執行的命令即可,這時候就是操作兩台服務器哦。
當然,polysh 支持多種登錄姿勢,全憑自己高興,例如:

  1. polysh mafly0{1,2}
  2. polysh mafly01 mafly03
  3. polysh 'mafly0<1-4>' gg-mafly01 gg-order01
  4. polysh gg-{mafly01,order01} mafly01

date

總結

有了這個利器后,對多個服務器的操作簡直是流暢到不行,尤其是你的機器名特別長的情況下,你再也不用記復雜的機器名了,完全就是解放了自己。我就重新寫了腳本,簡化了機器名。

當然,對於機器特別多,超過五台以上就不建議使用了,還有對性能有影響的命令也不建議使用,最方便的場景可能就是查日志、看下磁盤、同步修改機器時間這些小操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM