鄒國(guó)平(新余學(xué)院數(shù)學(xué)與計(jì)算機(jī)學(xué)院 江西 新余 338000)
SaltStack本身是一種開(kāi)源的基礎(chǔ)架構(gòu)集中化管理平臺(tái),相比其它商業(yè)產(chǎn)品,其部署及配置稍顯雜。Saltstack是基于python開(kāi)發(fā)的一套C/S架構(gòu)配置管理工具,SaltStack使用SSL證書(shū)簽方的方式進(jìn)行認(rèn)證管理,而底層使用ZeroMQ消息隊(duì)列pub/sub方式通信。SaltStack具備配置管理、遠(yuǎn)程執(zhí)行、監(jiān)控等功能。通過(guò)部署 SaltStack環(huán)境,運(yùn)維人員可以在成千上萬(wàn)臺(tái)服務(wù)器上做到批量執(zhí)行命令,根據(jù)不同的業(yè)務(wù)特性進(jìn)行配置集中化管理、分發(fā)文件、采集系統(tǒng)數(shù)據(jù)及軟件包的安裝與管理等。SaltStack具有以下特性,幫助企業(yè)IT更好的實(shí)現(xiàn)系統(tǒng)批量管理:部署簡(jiǎn)單、管理方便;支持大部分的操作系統(tǒng),如 Unix/Linux/Windows環(huán)境;架構(gòu)上使用C/S管理模式,易于擴(kuò)展;配置簡(jiǎn)單、功能覆蓋廣;主控端(Master)與被控端(Minion)基于證書(shū)認(rèn)證,確保安全可靠的通信;支持API及自定義Python模塊,輕松實(shí)現(xiàn)功能擴(kuò)展;
SaltStack采用C/S結(jié)構(gòu)來(lái)對(duì)云環(huán)境內(nèi)的服務(wù)器操作管理及配置管理。SaltStack客戶(hù)端(Minion)在啟動(dòng)時(shí),會(huì)自動(dòng)生成一套密鑰,包含私鑰和公鑰。之后將公鑰發(fā)送給服務(wù)器端,服務(wù)器端驗(yàn)證并接受公鑰,以此來(lái)建立可靠且加密的通信連接。同時(shí)通過(guò)消息隊(duì)列ZeroMQ在客戶(hù)端與服務(wù)端之間建立消息發(fā)布連接。
SaltStack的所有被管理客戶(hù)端節(jié)點(diǎn)都是通過(guò)密鑰進(jìn)行加密通信,使用端口為4506。客戶(hù)端與服務(wù)器端的內(nèi)容傳輸,是通過(guò)消息隊(duì)列完成,使用端口為4505。Master可以發(fā)送任何指令讓Minion執(zhí)行,salt有很多可執(zhí)行模塊,比如說(shuō)CMD模塊,在安裝minion的時(shí)候已經(jīng)自帶了,它們通常位于python庫(kù)中,locate salt|grep/usr/可以看到salt自帶的所有東西。
Salt命令,將 cmd.run ls 命令從 salt.client.LocalClient.cmd_cli發(fā)布到 Master,獲取一個(gè)Jodid,根據(jù) jobid獲取命令執(zhí)行結(jié)果。Master接收到命令后,將要執(zhí)行的命令發(fā)送給客戶(hù)端 minion。Minion從消息總線(xiàn)上接收到要處理的命令,交給 minion._handle_aes處理。Minion._handle_aes發(fā)起一個(gè)本地線(xiàn)程調(diào)用 cmdmod執(zhí)行l(wèi)s命令。線(xiàn)程執(zhí)行完 ls后,調(diào)用Minion._return_pub方法,將執(zhí)行結(jié)果通過(guò)消息總線(xiàn)返回給master。
Master接收到客戶(hù)端返回的結(jié)果,調(diào)用master.handle_aes方法將結(jié)果寫(xiě)的文件中 Salt.client.LocalClient.cmd_cli通過(guò)輪詢(xún)獲取 Job執(zhí)行結(jié)果,將結(jié)果輸出到終端。
3.1依賴(lài)組件的安裝。首先下載并安裝epel源,執(zhí)行以下指令,將epel.repo 存儲(chǔ)到/etc/yum.repos.d 目錄下。wget– o/etc/yum.repos.d/epel.repohttp://mirrors.a(chǎn)liyun.com/repo/epel-6.repo 并通過(guò) Yum list命令來(lái)校驗(yàn)安裝源是否生效。
3.2Master角色的安裝。配置好yum源之后,只需要輸入正確的命令,就可以在自動(dòng)安裝SaltStack的同時(shí),將依賴(lài)包安裝好。安裝完成后,輸入chkconfig salt-master on將master服務(wù)加入到開(kāi)機(jī)啟動(dòng)項(xiàng),這樣每次系統(tǒng)啟動(dòng),都會(huì)自動(dòng)加載master服務(wù)。輸入service salt-master start啟動(dòng)master服務(wù)。之后通過(guò)netstat–antp查詢(xún)服務(wù)狀態(tài),顯示安裝生效。
3.3Minion角色的安裝。安裝完成后,輸入 chkconfig salt-minion on,將minion服務(wù)加入到開(kāi)機(jī)啟動(dòng)項(xiàng),這樣每次系統(tǒng)啟動(dòng),都會(huì)自動(dòng)加載minion服務(wù)。輸入service salt-minion start,啟動(dòng)minion服務(wù)。
3.4Master端配置。SaltStack-Master是 SaltStack組件的核心服務(wù),負(fù)責(zé)發(fā)布指令及配置文件的分發(fā)與管理,及客戶(hù)端的管理功能。Master要想正常提供服務(wù),需要接受客戶(hù)端的證書(shū)認(rèn)證請(qǐng)求。輸入salt-key–l來(lái)查詢(xún)客戶(hù)端證書(shū)狀態(tài),再輸入salt-key–A接受客戶(hù)端認(rèn)證。
3.5SaltStack測(cè)試。通過(guò)兩個(gè)測(cè)試案例,可以驗(yàn)證 SaltStack是否運(yùn)行正常,是否可以完成預(yù)定的功能。我們可以通過(guò) salt'*'test.ping來(lái)測(cè)試客戶(hù)端是否在線(xiàn),并被master管理,如果返回True,則說(shuō)明客戶(hù)端已經(jīng)被master管理,并處于在線(xiàn)狀態(tài)。
總之,使用自動(dòng)化運(yùn)維工具 SaltStack來(lái)部署云數(shù)據(jù)庫(kù),實(shí)現(xiàn)了云計(jì)算平臺(tái)的集中管理和服務(wù),能夠提高數(shù)據(jù)運(yùn)維團(tuán)隊(duì)的工作效果,同時(shí)降低了數(shù)據(jù)庫(kù)服務(wù)器運(yùn)維成本,值得技術(shù)推廣。