本篇文章主要探討Saltstack自動(dòng)化運(yùn)維工具的使用方法。有一定的參考價(jià)值,有需要的朋友可以參考一下,跟隨小編一起來看使用方法吧。
創(chuàng)新互聯(lián)是專業(yè)的耿馬網(wǎng)站建設(shè)公司,耿馬接單;提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行耿馬網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!1.1 githup 地址;
https://github.com/ansible/ansible
https://github.com/saltstack/salt
1.2.執(zhí)行記錄到mysql;
https://docs.saltstack.com/en/latest/ref/returners/all/
一.自動(dòng)化運(yùn)維工具Saltstack和Ansible 對(duì)比;
1.ansible 介紹
1.1 無Agent去中心化,采用原生SSH協(xié)議進(jìn)行管理(需要提前打通SSH免密鑰登陸)
1.2 其實(shí)ansible也支持agent的方式,即所謂的“pull”的模式,就是通過一個(gè)客戶端去拉取要執(zhí)行的任務(wù)。
1.3 開源社區(qū)活躍度Github上,ansbile有 42.2k 統(tǒng)計(jì)來源地址:https://github.com/ansible/ansible
1.4 主要功能
1.4.1 Ansible完全基于Python開發(fā),方便Ansible二次開發(fā);
1.4.2 豐富的內(nèi)置模塊,學(xué)習(xí)門檻較低;
1.4.3 Playbook 劇本讓環(huán)境部署簡單化。
1.5 Ansible只是提供一種框架。
主要包括:
1.5.1 連接插件connection plugins:負(fù)責(zé)和被監(jiān)控端實(shí)現(xiàn)通信;
1.5.2 host inventory:指定操作的主機(jī),是一個(gè)配置文件里面定義監(jiān)控的主機(jī);
1.5.3 各種模塊核心模塊、command模塊、自定義模塊;
1.5.4 借助于插件完成記錄日志郵件等功能;
1.5.5 playbook:劇本執(zhí)行多個(gè)任務(wù)時(shí),讓節(jié)點(diǎn)一次性運(yùn)行多個(gè)任務(wù)。
1.6 執(zhí)行原理過程;
2. Saltstack 介紹;
2.1 Agent 化連被控機(jī)器需要安裝Agent端需要配置master地址,建立信任關(guān)系 開放通信端口默認(rèn):4506/4505
2.2 大規(guī)模并發(fā)的能力:實(shí)現(xiàn)機(jī)制的差異,也導(dǎo)致saltstack在這方面是占優(yōu)的.一次操作的機(jī)器過千臺(tái),還是用saltstack效率更高一些。
2.3 開源社區(qū)活躍度Github上 Saltstack 10.7k 統(tǒng)計(jì)來源地址: https://github.com/saltstack/salt
2.4 主要功能:
2.4.1 主從集中化管理;
2.4.2 配置簡單、功能強(qiáng)大、擴(kuò)展性強(qiáng);
2.4.3 主控端(master)和被控端(minion)基于證書認(rèn)證,安全可靠;
2.4.4 支持API及自定義模塊,可通過Python輕松擴(kuò)展;
2.5 saltstack 內(nèi)部工作原理圖
2.4.1 Minion 是 SaltStack 需要管理的客戶端安裝組件,會(huì)主動(dòng)去連接 Master 端,并從 Master 端得到資源狀態(tài)信息,同步資源管理信息
2.4.2 Master 作為控制中心運(yùn)行在主機(jī)服務(wù)器上,負(fù)責(zé) Salt 命令運(yùn)行和資源狀態(tài)的管理。
2.4.3 ZeroMQ 是一款開源的消息隊(duì)列軟件,用于在 Minion 端與 Master 端建立系統(tǒng)通信橋梁。
2.4.4 Daemon 是運(yùn)行于每一個(gè)成員內(nèi)的守護(hù)進(jìn)程,承擔(dān)著發(fā)布消息及通信端口監(jiān)聽的功能。
2.6 執(zhí)行過程;
二.Satstack 部署實(shí)戰(zhàn);
1.系統(tǒng)環(huán)境列表;
系統(tǒng)版本 | 內(nèi)核版本 | 系統(tǒng)python版本 | saltstack-master 版本 | saltstack-minion版本 |
CentOS 7.2.1511 | 3.10.0-862.6.3.el7.x86_64 | Python 2.7.5 | salt 2015.5.10 | salt-minion 2015.5.10 |
2.部署規(guī)劃;
部署建議:
1.在生產(chǎn)環(huán)境操作業(yè)務(wù)量較大且資源允許的情況下采用集群部署.杜絕單點(diǎn)故障
3.簡單化部署;
3.1 本文環(huán)境部署描述: mysql 一臺(tái) saltstack-matser 端一臺(tái) saltstack-monion 端5臺(tái); 3.2 獲取軟件包; root@salt-master ~]# yum -y install epel-release && yum -y install salt-maste 3.3 配置salt-master配置文件; root@salt-master ~]# grep -v "^#" /etc/salt/master |grep -v "^$" interface: 192.168.54.12 #執(zhí)行管理端的ip地址 publish_port: 4505 ##執(zhí)行管理端服務(wù)監(jiān)聽端口 user: ops ##執(zhí)行管理端用戶地址 max_open_files: 100000 ###大文件打開數(shù) worker_threads: 16 ##moinon端工作線程數(shù) 建議不要大于系統(tǒng)cpu核數(shù) ret_port: 4506 #數(shù)據(jù)采集上報(bào)端口 pidfile: /var/run/salt-master.pid ##允許pid timeout: 5 ##數(shù)據(jù)采集超時(shí)時(shí)間 base: - /etc/salt #saltstack 配置文件編寫yaml 存放的根目錄 pillar_roots: #pillar 執(zhí)行的目錄 base: - /etc/pillar syndic_master_port: 4506 ###同步信息端口 log_file: /var/log/salt/chj-salt-master ##日志文件路徑 log_level: warning log_level_logfile: warning #日志級(jí)別 client_acl: ops: ##授權(quán)可執(zhí)行salt命令用戶 - '*' return: mysql #執(zhí)行命令返回結(jié)果統(tǒng)計(jì) 用于安全審核和命令審核. master_job_cache: mysql #數(shù)據(jù)庫授權(quán)信息; mysql.host: '192.168.54.23' #連接地址 支持其他數(shù)據(jù)庫類型見:https://docs.saltstack.com/en/latest/ref/returners/all/ mysql.user: 'salt' #連接用戶 mysql.pass: 'saltstack' #連接密碼 mysql.db: 'salt' #連接數(shù)據(jù)庫 mysql.port: 3306 #數(shù)據(jù)庫端口
3.4 安裝salt-minion 端;
3.4.1 為了節(jié)約安裝時(shí)間采用ansible 進(jìn)行批量
3.5 安裝salt-monion 客戶端;
1.執(zhí)行遠(yuǎn)程安裝salt-minion 端 [ops@devops-manager-dev tools]$ ansible -i ip.txt all -m shell -a "yum -y install epel-release && yum -y install salt-minion" -b -f 3 2.分發(fā)修改配置文件腳本; 2.1.腳本內(nèi)容: #/bin/bash minid=$(echo $RANDOM |md5sum|cut -c 1-6) sed -i '1imaster: 192.168.54.12' /etc/salt/minion sed -i '2ilog_file: /var/log/salt/chj-minion.log' /etc/salt/minion sed -i '3iuser: root' /etc/salt/minion sed -i "4iid: chj_salt_$minid" /etc/salt/minion mkdir /var/log/salt/ touch /var/log/salt/chj-minion.log chown ops:ops /var/log/salt -R 3 開始分發(fā); ansible -i ip.txt all -m copy -a "src=./salt_minon.sh dest=/tmp/salt_minon.sh" -b -f 3 4.執(zhí)行修改文件腳本 ansible -i ip.txt all -m shell -a "/bin/bash /tmp/salt_minon.sh" -b -f 3 5.啟動(dòng)salt-minion服務(wù) [ops@salt-master devops]$ ansible -i ip.txt all -m shell -a "systemctl start salt-minion " -b -f 3 Thursday 12 March 2020 21:33:02 +0800 (0:00:00.090) 0:00:00.090 ******** 192.168.46.21 | CHANGED | rc=0 >> 192.168.46.18 | CHANGED | rc=0 >> 192.168.46.20 | CHANGED | rc=0 >> 192.168.46.224 | CHANGED | rc=0 >> 192.168.46.158 | CHANGED | rc=0 >>
3.6.salt test.ping 測(cè)試;
3.7.ansible 和saltstack 執(zhí)行耗時(shí)對(duì)比;
3.8 驗(yàn)證執(zhí)行結(jié)果返回mysql數(shù)據(jù)庫;
查看mysql 表中有沒有數(shù)據(jù)返回 (時(shí)間戳問題因?yàn)闇y(cè)試環(huán)境mysql 使用docker 沒有修改時(shí)區(qū)差距8小時(shí))
關(guān)于Saltstack自動(dòng)化運(yùn)維工具的使用方法就分享到這里了,解決問題并不止文章中和大家分析的辦法,不過本文分析的方法準(zhǔn)確性是不容置疑的。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。