㈠ 如何升級Nginx到最新穩定版
nginx升級最新版本有兩種方法:
如果流量不大,就可以先把老的nginx關閉,然後部署新的nginx二進制文件,最後重新啟動nginx就可以。
如果流量較大,希望能夠在升級過程中不影響服務,那麼可以採用平滑的升級二進制文件的方式。具體的做法如下:
首先,備份老的nginx可執行文件:mv nginx nginx.bak;
然後把新的nginx的二進制文件拷貝到之前的nginx目錄下;
看一下之前nginx的pid(cat nginx.pid),然後向master進程發送USR2信號,kill -USR2 pid;
關閉老的nginx進程,kill -QUIT pid
㈡ mongodb 能平滑升級嗎。我之前用nginx實現過平滑升級。可以做到保證老用戶的同時遷移到新版本上。
Replica Set(復制集)滾動升級步驟如下:
檢查次節點是否沒有訪問,如有訪問,需要先切換到主節點上
mongostat 查看qps等
關閉次節點資料庫,替換mongod版本,重新啟動
db.shutdownServer()
替換版本;
啟動mongod進程
主節點進行降級,選舉出新的主節點
rs.stepdown()
關閉原主節點,替換mongod版本,重新啟動。
數據節點全部更新完畢後,替換arbiter節點mongod版本。
如方便進行操作,將主、次節點切換為原狀態,並進行監控。
sharding(分片)升級
sharding 滾動升級操作較為繁瑣,停止相應進程時一定要考慮清楚對整個MongoDB集群的影響,如果需要同時關閉一台伺服器所有進程,一定要確保主節點正常服務或投票能產生新的主節點。參考步驟如下:
禁用balancer
sh.stopBalancer()
首先升級mongos(mongos,mongod之外的工具如mongo mongostat等可先替換)
停止一台mongos,用新版本mongs覆蓋原來的版本後,啟動mongs;再同樣升級其他mongos版本。
升級config server,至少保留一個 config server始終正常狀態,依次升級。
停止一台config server,通常同一台伺服器上還有mongod數據節點,需要停止該伺服器所有
mongod節點,確認停止後能不影響主節點的投票產生(優先升級對應secondary節點)。替換
config server 對應的mongod文件。同樣升級其他config server節點。
升級每個分片的復制集,操作同升級Replica Set,若復制集mongod和config server在同一台,則和config server一起升級。
啟用balancer
sh.startBalancer()