Ansible自動部署nginx+keepalived高可用負載均衡
本公眾號內容大多由平時操作整理記錄,如果有錯誤的地方歡迎留言指正
本篇文章記錄通過Ansible自動化部署nginx的負載均衡高可用,前端代理使用nginx+keepalived,後端web server使用3台nginx用於負載效果的體現,結構圖如下:
部署前準備工作
主機規劃
Ansible : 192.168.214.144
Keepalived-node-1 : 192.168.214.148
Keepalived-node-2 : 192.168.214.143
web1 : 192.168.214.133
web2 : 192.168.214.135
web3 : 192.168.214.139
Ansible主機與遠程主機秘鑰認證
iplist.txt
執行腳本
[root@Ansible script]# ./autokey.sh
測試驗證
配置Ansible基於主機名認證,方便單獨管理遠程主機
安裝配置Ansible
編寫roles,實現web的部署
先看一下web的目錄結構
編寫user.yml
編寫install_nginx.yml
創建nginx配置文件的template模板
由於是測試,後端web服務的nginx.conf配置文件基本保持默認,只只更具後端主機情況設置worker進程數,使用ansible的setup模塊中的變數獲取遠程主機的cpu的數量值
編寫temps.yml
編寫start.yml
編寫main.yml
編寫執行主文件web_install.yml,執行文件不能與web角色放在同一目錄,通常放在roles目錄
安裝前測試: -C選項為測試
如沒有問題則執行安裝
測試訪問
編寫roles角色部署nginx+keepalived
部署高可用集群需要注意各節點包括後端主機的時間問題,保證各主機時間一致。
編寫roles角色
編寫user.yml
編寫install_server.yml
編寫temps.yml
配置nginx proxy配置文件模板
配置keepalived配置文件模板
同樣,在master_keepalived.conf.j2基礎修改另存為backup_keepalived.conf.j2,只修改角色與優先順序即可。注意:master_keepalived.conf.j2文件中的檢測故障降低優先順序的值要確保降低後MASTER優先順序小於BACKUP的優先順序
編寫start.yml
編寫main.yml
編寫執行主文件
執行檢測roles
執行測試沒問題即可執行自動部署
執行過程如下:
至此,自動部署nginx+keepalived高可用負載均衡完成了
最後看一下roles目錄的結構
下面測試服務:keepalived的服務沒有在ansible中設置自動啟動,到keepalived節點啟動即可。
測試node節點
將node-1 的MASTER服務停掉測試故障轉移,同時查看node-2狀態變化
執行: nginx -s stop
查看vrrp通知,可以看到主備切換正常:
再測試訪問:
node-1恢復主節點,搶回MASTER角色
node-1節點執行nginx指令,可以看到VIP漂移回到node-1節點,測試訪問
其他問題
上面的自動部署方式還有可以改進的地方,比如,可以將配置keepalived的配置文件中的許多參數在roles中以統一變數的方式定義,然後在template模板文件中引用參數就可以了
此外還有一個需要注意的地方是:keepalived的配置文件中使用了killall指令檢測本地的nginx服務狀態,如果檢測結果狀態為非0就會執行vrrp_script中定義的降級操作,要確保系統這個指令可以執行,有時該指令沒有被安裝,如果該指令沒有存在,即使MASTER節點發生故障也不會發生變化
GIF


TAG:Linux日記 |