Ansible 是大家非常熟悉的輕量級的自動化運維工具。在小規模的應用叢集中,使用ansbile來對叢集中的應用進行管理是一個非常高效的方法。
Ansible本身支援非常多的子產品,并且操作非常簡單學習容易。關于ansible的安裝以及各個子產品的使用,此處不再詳細的描述。
在實際的應用場景中,如果進行了負載均衡,那麼後端伺服器對使用者的session記錄就是一個比較令人頭疼的問題。一般需要進行單獨的處理。現在已經有很多的成熟的解決方案。例如使用Tomcat+Memcached來實作使用者的會話保持。但是Memcached緩存是基于記憶體的,如果SessionServer當機了,還是會影響系統的使用,是以又有另外一種解決方案,就是使用Tomcat+redis來實作會話的永久存儲。因為redis可以對緩存進行持久化處理。但是本文還是以memcached為例,來介紹使用Ansible自動化部署實作Tomcat會話保持。
在開始這篇博文的時候,需要重新給大家介紹一下本次實驗的基本環境。
序号
擔任角色
主機名
位址
功能描述
對應軟體版本
A
Nginx均衡排程器
nginx
192.168.0.20
利用Nginx的排程功能首先負載均衡
Nginx-1.12.2
B
web伺服器
tomcat1
192.168.0.21
安裝tomcat,用來提供動态web服務
tomcat-7.0.76-2.e17
C
tomcat2
192.168.0.22
安裝tomcat,用來提供動态的web服務
tomcat-7.0.76-2.el7
D
SessionServer
memcached1
192.168.0.26
安裝memcached,提供Session存儲服務,同時充當SessionServer的主節點
memcached-1.4.15
E
memcached2
192.168.0.27
安裝memcached,提供session存儲服務,同時充當SessionServer備用節點
O
ansible主機
ansible
192.168.0.19
安裝ansible,通過Ansible對其他主機進行管控
ansible-2.4.1
此次執行個體是基于github上的example進行的修改編寫。主要在下面貼出其中幾個比較重要的檔案,整個編寫的ansible腳本可以在下面的連結中進行下載下傳。
<a href="http://down.51cto.com/data/2387189">點我下載下傳</a>
roles/lb-nginx/tasks/main.yml
roles/tomcat/tasks/main.yml
roles/memcached/tasks/main.yml
其餘的資料可以直接從上面的下載下傳連結中去下載下傳。
ansible對遠端主機的管理是通過SSH來進行連結的,是以可以設定遠端主機免密登陸,使用shh-keygen 指令。
設定成功之後,使用SSH登陸遠端主機就可以不用再輸入密鑰了。
在對遠端主機進行操作之前,要確定叢集内的所有主機的時間已經進行了同步,否則會有很多問題。因為是個人實驗環境,同時關閉了selinux 和 iptables。
執行下面的腳本,對編寫的ansible主機進行檢查,并運作ansible-playbook.
在搭建tomcat叢集的過程中,memcached隻是其中一種實作方式,實際生産中,redis也是一種比較常用的實作方式,後面的文章中會介紹redis的使用方式。
自動化運維工具有很多,ansible隻是其中一個。同時ansbile隻适用于小規模的伺服器叢集,如果規模不大的話可以考慮。還有其他的自動化運維工具如puppet和saltstack我們會在後面的文章中進行介紹。
本文轉自Eumenides_s 51CTO部落格,原文連結:<b>http://blog.51cto.com/xiaoshuaigege/2056103</b>,如需轉載請自行聯系原作者