孫春雨
[摘 要] 本文首先對(duì)Linux系統(tǒng)集群進(jìn)行研究,其次對(duì) Ansible在Linux集群下的部署與自動(dòng)化管理方法進(jìn)行研究,最后提出一種基于Linux集群下的Ansible工具部署與自動(dòng)化管理方法。
[關(guān)鍵詞] Linux;Ansible部署;自動(dòng)化管理
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2019. 09. 074
[中圖分類號(hào)] TP14 [文獻(xiàn)標(biāo)識(shí)碼] A [文章編號(hào)] 1673 - 0194(2019)09- 0165- 02
0 引 言
Linux系統(tǒng)發(fā)行版本正在迅速變得功能完善,尤其在集群中得到了越來(lái)越廣泛的應(yīng)用,Linux集群節(jié)點(diǎn)的自動(dòng)化管理是非常重要的一項(xiàng)工作。由于集群節(jié)點(diǎn)數(shù)目龐大,因此這項(xiàng)工作的實(shí)施過(guò)程顯得過(guò)于煩瑣,為提高Linux集群節(jié)點(diǎn)自動(dòng)化管理的效率,在研究Ansible工具的基礎(chǔ)上,提出一種基于Linux集群下的Ansible工具部署與自動(dòng)化管理方法,實(shí)現(xiàn)集群節(jié)點(diǎn)自動(dòng)化管理。
1 Linux集群介紹
Linux最常見(jiàn)的兩種群集分為負(fù)載均衡群集和高可用性群集。
1.1 負(fù)載均衡群集
負(fù)載均衡集群,需要有一臺(tái)服務(wù)器作為分發(fā)器,它負(fù)責(zé)把用戶的請(qǐng)求分發(fā)給后端的服務(wù)器處理,在這個(gè)集群里,除了分發(fā)器外,就是給用戶提供服務(wù)的服務(wù)器了,這些服務(wù)器數(shù)量至少為2,實(shí)現(xiàn)負(fù)載均衡的開(kāi)源軟件有LVS、keepalived、haproxy、nginx,商業(yè)的有F5、Netscaler。
1.2 高可用性群集
高可用集群即“HA集群”,也常稱作“雙機(jī)熱備”,用于關(guān)鍵業(yè)務(wù)。通常為兩臺(tái)服務(wù)器,一臺(tái)工作,另外一臺(tái)作為冗余,當(dāng)提供服務(wù)的機(jī)器宕機(jī),冗余將接替繼續(xù)提供服務(wù),實(shí)現(xiàn)高可用的開(kāi)源軟件有:heartbeat、keepalived,核心原來(lái)都是通過(guò)心跳線連接兩臺(tái)服務(wù)器。
2 Ansible工具介紹
Ansible是基于一致性、安全性、高可靠性設(shè)計(jì)的輕量級(jí)自動(dòng)化工具,具有部署便捷、描述清晰等特性。
2.1 任務(wù)執(zhí)行模式
Ansible任務(wù)執(zhí)行模式可分為兩種:ad-hoc與Playbook。其中ad-hoc模式為使用單個(gè)模塊,支持批量執(zhí)行單挑命令。Playbook是Ansible主要管理方式,它主要通過(guò)多個(gè)task集合完成一類功能,如Web服務(wù)的安裝部署、數(shù)據(jù)庫(kù)服務(wù)器的批量備份等。
2.2 Ansible工具特點(diǎn)
Ansible工具具有以下特點(diǎn),應(yīng)用代碼自動(dòng)化、系統(tǒng)管理配置自動(dòng)化、輕量級(jí)管理,無(wú)須在客戶端安裝Agent、批量執(zhí)行任務(wù)可編寫(xiě)成腳本,不用分發(fā)到遠(yuǎn)程就可執(zhí)行等。
3 Ansible工具部署方法
3.1 定義主機(jī)hosts表
參照?qǐng)D1方式定義主機(jī)/etc/hosts表,其內(nèi)容分別為需要管理的集群節(jié)點(diǎn)IP地址與對(duì)應(yīng)的節(jié)點(diǎn)名稱。
3.2 定義主機(jī)與規(guī)則組
Ansible通過(guò)定義好的主機(jī)與規(guī)則組Inventory指定了Ansible起作用的主機(jī)列表,Ansible默認(rèn)讀取 /etc/ansible/hosts 其中[dzgzz1]為管理的組名,dell16、dell17、dell23等為需要管理的節(jié)點(diǎn),如下代碼所示:
[dzgzz1]
dell16
dell17
dell23
dell47
3.3 利用ssh-keygen設(shè)置SSH無(wú)密碼登錄
3.3.1 創(chuàng)建秘鑰
輸入ssh-keygen –t rsa命令,顯示如下:
Generating public/private rsa key pair
Enter file in which to save the key (/root/.ssh/id/rsa): (回車(chē))
Created directory ‘/root/.ssh
Enter passphrase (empty for no passphrase):(回車(chē))
Enter same passphrase again:(回車(chē))
3.3.2 將秘鑰發(fā)送給每一個(gè)集群管理節(jié)點(diǎn)
在系統(tǒng)中輸入ssh-copy-id –i /root/.ssh/id_rsa.pub root@192.168.1.205,其中192.168.1.205為集群管理節(jié)點(diǎn)對(duì)應(yīng)的ip,依次輸入。
4 Ansible自動(dòng)化管理研究
4.1 ad-hoc命定模塊
ad-hoc命令模塊即為單個(gè)命令執(zhí)行模塊,主要實(shí)現(xiàn)對(duì)集群節(jié)點(diǎn)執(zhí)行單個(gè)命令,ansible常用命令模塊有copy、touch、shell、file、ping等,在本文簡(jiǎn)單介紹下ping命令模塊,例如查看某個(gè)節(jié)點(diǎn)是否能ping通,在管理界面輸ansible dell47 -m ping 其中dell47為集群節(jié)點(diǎn)名稱,ping為需要執(zhí)行的命令模塊,顯示結(jié)果如下:
dell47 | SUCCESS => {
“changed”: false,
“ping”:pong
}
如果需要對(duì)多節(jié)點(diǎn)輸入命令管理模塊,只需將命令中的dell47換成集群節(jié)點(diǎn)所對(duì)應(yīng)的組名稱即可,例如ansible dzzgz1 –m ping ,其中dzgzz1 為組名稱。
4.2 Playbook命令模塊
在日常工作中Playbook是ansible主要管理方式,它是一個(gè)簡(jiǎn)單的配置管理和多主機(jī)部署系統(tǒng),它主要通過(guò)多個(gè)task集合完成一類功能,Playbook工具的使用思路為在系統(tǒng)中創(chuàng)建一個(gè).yml腳本文件,將想應(yīng)用的命令寫(xiě)入腳本文件中,然后執(zhí)行。例如對(duì)一個(gè)集群中的多個(gè)節(jié)點(diǎn),在/tmp/sunchunyu目錄下創(chuàng)建一個(gè)123的文件夾,再將本機(jī)中的/tmp/src/123.txt復(fù)制到節(jié)點(diǎn)/tmp/sunchunyu/123文件夾下,其代碼如下:
- hosts:
remote_user: root
- name: create directory123
file: path=/tmp/sunchunyu/123 state=directory
- name: copy 123
copy: src=/tmp/src/123.txt dest=/tmp/sunchunyu/123
在命令行輸入ansible-playbook dzgzz.yml 顯示結(jié)果如圖2所示。
在命令行輸入ansible dzgzz1 -m shell -a “l(fā)s /tmp/sunchunyu”檢查結(jié)果如下所示:
dell47 | SUCCESS | rc=0 >>
123
Dell17 | SUCCESS | rc=0 >>
123
Dell23 | SUCCESS | rc=0 >>
123
Dell116 | SUCCESS | rc=0 >>
123
5 結(jié) 語(yǔ)
本文在對(duì)Linux集群研究的基礎(chǔ)上,研究自動(dòng)化管理工具Ansible在集群當(dāng)中的部署方式,通過(guò)研究ad-hoc命令模塊管理方式與Playbook管理方式,提出了一種基于Linux集群下的Ansible工具部署與自動(dòng)化管理方法。
主要參考文獻(xiàn)
[1]戴波,豐佳.信息系統(tǒng)全業(yè)務(wù)集中運(yùn)維的實(shí)踐[J].電力信息化,2012(1):14-17.
[2]楊婧.SSH協(xié)議的研究與應(yīng)用[J].計(jì)算機(jī)與數(shù)字工程,2011(8):112-114.
[3]黃雋.Linux網(wǎng)絡(luò)編程的研究[J].電腦編程技巧與維護(hù),2017(6):21-22.
[4]王鵬.基于Linux集群的并行計(jì)算[J].喀什師范學(xué)院學(xué)報(bào),2005(3):73-75.
[5]張權(quán),胡曉勤.一種基于Linux標(biāo)準(zhǔn)分區(qū)的快照方法[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2017(7).