孫春雨
[摘 要] 本文首先對Linux系統(tǒng)集群進(jìn)行研究,其次對 Ansible在Linux集群下的部署與自動化管理方法進(jìn)行研究,最后提出一種基于Linux集群下的Ansible工具部署與自動化管理方法。
[關(guān)鍵詞] Linux;Ansible部署;自動化管理
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2019. 09. 074
[中圖分類號] TP14 [文獻(xiàn)標(biāo)識碼] A [文章編號] 1673 - 0194(2019)09- 0165- 02
0 引 言
Linux系統(tǒng)發(fā)行版本正在迅速變得功能完善,尤其在集群中得到了越來越廣泛的應(yīng)用,Linux集群節(jié)點(diǎn)的自動化管理是非常重要的一項(xiàng)工作。由于集群節(jié)點(diǎn)數(shù)目龐大,因此這項(xiàng)工作的實(shí)施過程顯得過于煩瑣,為提高Linux集群節(jié)點(diǎn)自動化管理的效率,在研究Ansible工具的基礎(chǔ)上,提出一種基于Linux集群下的Ansible工具部署與自動化管理方法,實(shí)現(xiàn)集群節(jié)點(diǎn)自動化管理。
1 Linux集群介紹
Linux最常見的兩種群集分為負(fù)載均衡群集和高可用性群集。
1.1 負(fù)載均衡群集
負(fù)載均衡集群,需要有一臺服務(wù)器作為分發(fā)器,它負(fù)責(zé)把用戶的請求分發(fā)給后端的服務(wù)器處理,在這個集群里,除了分發(fā)器外,就是給用戶提供服務(wù)的服務(wù)器了,這些服務(wù)器數(shù)量至少為2,實(shí)現(xiàn)負(fù)載均衡的開源軟件有LVS、keepalived、haproxy、nginx,商業(yè)的有F5、Netscaler。
1.2 高可用性群集
高可用集群即“HA集群”,也常稱作“雙機(jī)熱備”,用于關(guān)鍵業(yè)務(wù)。通常為兩臺服務(wù)器,一臺工作,另外一臺作為冗余,當(dāng)提供服務(wù)的機(jī)器宕機(jī),冗余將接替繼續(xù)提供服務(wù),實(shí)現(xiàn)高可用的開源軟件有:heartbeat、keepalived,核心原來都是通過心跳線連接兩臺服務(wù)器。
2 Ansible工具介紹
Ansible是基于一致性、安全性、高可靠性設(shè)計(jì)的輕量級自動化工具,具有部署便捷、描述清晰等特性。
2.1 任務(wù)執(zhí)行模式
Ansible任務(wù)執(zhí)行模式可分為兩種:ad-hoc與Playbook。其中ad-hoc模式為使用單個模塊,支持批量執(zhí)行單挑命令。Playbook是Ansible主要管理方式,它主要通過多個task集合完成一類功能,如Web服務(wù)的安裝部署、數(shù)據(jù)庫服務(wù)器的批量備份等。
2.2 Ansible工具特點(diǎn)
Ansible工具具有以下特點(diǎn),應(yīng)用代碼自動化、系統(tǒng)管理配置自動化、輕量級管理,無須在客戶端安裝Agent、批量執(zhí)行任務(wù)可編寫成腳本,不用分發(fā)到遠(yuǎn)程就可執(zhí)行等。
3 Ansible工具部署方法
3.1 定義主機(jī)hosts表
參照圖1方式定義主機(jī)/etc/hosts表,其內(nèi)容分別為需要管理的集群節(jié)點(diǎn)IP地址與對應(yīng)的節(jié)點(diǎn)名稱。
3.2 定義主機(jī)與規(guī)則組
Ansible通過定義好的主機(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無密碼登錄
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): (回車)
Created directory ‘/root/.ssh
Enter passphrase (empty for no passphrase):(回車)
Enter same passphrase again:(回車)
3.3.2 將秘鑰發(fā)送給每一個集群管理節(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)對應(yīng)的ip,依次輸入。
4 Ansible自動化管理研究
4.1 ad-hoc命定模塊
ad-hoc命令模塊即為單個命令執(zhí)行模塊,主要實(shí)現(xiàn)對集群節(jié)點(diǎn)執(zhí)行單個命令,ansible常用命令模塊有copy、touch、shell、file、ping等,在本文簡單介紹下ping命令模塊,例如查看某個節(jié)點(diǎn)是否能ping通,在管理界面輸ansible dell47 -m ping 其中dell47為集群節(jié)點(diǎn)名稱,ping為需要執(zhí)行的命令模塊,顯示結(jié)果如下:
dell47 | SUCCESS => {
“changed”: false,
“ping”:pong
}
如果需要對多節(jié)點(diǎn)輸入命令管理模塊,只需將命令中的dell47換成集群節(jié)點(diǎn)所對應(yīng)的組名稱即可,例如ansible dzzgz1 –m ping ,其中dzgzz1 為組名稱。
4.2 Playbook命令模塊
在日常工作中Playbook是ansible主要管理方式,它是一個簡單的配置管理和多主機(jī)部署系統(tǒng),它主要通過多個task集合完成一類功能,Playbook工具的使用思路為在系統(tǒng)中創(chuàng)建一個.yml腳本文件,將想應(yīng)用的命令寫入腳本文件中,然后執(zhí)行。例如對一個集群中的多個節(jié)點(diǎn),在/tmp/sunchunyu目錄下創(chuàng)建一個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é) 語
本文在對Linux集群研究的基礎(chǔ)上,研究自動化管理工具Ansible在集群當(dāng)中的部署方式,通過研究ad-hoc命令模塊管理方式與Playbook管理方式,提出了一種基于Linux集群下的Ansible工具部署與自動化管理方法。
主要參考文獻(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é)報,2005(3):73-75.
[5]張權(quán),胡曉勤.一種基于Linux標(biāo)準(zhǔn)分區(qū)的快照方法[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2017(7).