运维管理架构方案
由于要申請運(yùn)維管理機(jī)器資源,應(yīng)領(lǐng)導(dǎo)要求要寫一個方案出來,今天就分享一下我寫的一篇運(yùn)維管理架構(gòu)方案,很多內(nèi)容都是來自官網(wǎng)和網(wǎng)上找的,不過還好公司領(lǐng)導(dǎo)已經(jīng)通過了。由于以前從來沒寫過運(yùn)維方面的方案,自認(rèn)為文字水平也很一般,所以寫的不好請見諒,希望大家能多給些建議,共同提高!
第一章 前言
1.1.?落后的運(yùn)維管理方式
傳統(tǒng)運(yùn)維管理方式即是對服務(wù)器的操作全部都是手動,手動安裝系統(tǒng)、手動部署應(yīng)用、手動更新等,隨著信息化科技的不斷發(fā)展,各種應(yīng)用系統(tǒng)的不斷推出,服務(wù)器數(shù)量的不斷增加,運(yùn)維人員的良莠不齊,從而暴發(fā)出越來越多運(yùn)維管理上的缺陷,導(dǎo)致運(yùn)維事故頻發(fā),主要存在以下問題:
(1)用戶身份不唯一,運(yùn)維人員通過統(tǒng)一的賬號和密碼登陸設(shè)備(服務(wù)器),無法準(zhǔn)確識別用戶的身份。
(2)缺乏嚴(yán)格的訪問控制,任何人登陸到其中一臺設(shè)備后,就可以訪問所有設(shè)備。
(3)大量賬號和密碼的管理工作,大大降低了工作效率的同時,運(yùn)維人員的流動還會存在密碼外泄的風(fēng)險。
(4)無法管控運(yùn)維人員登陸到設(shè)備后的操作權(quán)限。
(5)無法知道運(yùn)維人員的操作是否違規(guī)、是否存在風(fēng)險,缺乏有效的技術(shù)手段來監(jiān)管運(yùn)維人員的操作。
(6)操作無審計(jì),事故發(fā)生后無法快速定位事故原因和責(zé)任人。
(7)賬號和密碼存在安全隱患,×××/惡意訪問有可能獲取到系統(tǒng)權(quán)限,從而造成不可估量的損失。
(8)成百上千臺服務(wù)器,通過手動方式一臺一臺部署、更新,運(yùn)維效率大打折扣。
(9)服務(wù)器發(fā)生故障或者業(yè)務(wù)系統(tǒng)出現(xiàn)問題,運(yùn)維人員無法第一時間知道,從而無法快速排查問題、快速處理故障、快速恢復(fù)業(yè)務(wù)。
(10)以傳統(tǒng)的方式登陸到服務(wù)器上查看應(yīng)用日志,效率低下不說,還無法對日志做出有效的處理和分析。
運(yùn)維操作不規(guī)范,運(yùn)維操作不透明,運(yùn)維操作不可控,運(yùn)維工作效率低下,一次又一次地將運(yùn)維人員推向風(fēng)口浪尖。
1.2.?高效的運(yùn)維管理方式
由于上述問題的不斷出現(xiàn),各大中小型企業(yè)對運(yùn)維管理逐漸的重視起來,之后cacti、nagios、zabbix等開源監(jiān)控工具出來了,2000年左右跳板機(jī)概念出現(xiàn)在了人們眼前,2005年前后在跳板機(jī)的基礎(chǔ)上應(yīng)運(yùn)而生了堡壘機(jī)概念,然后伴隨著saltstack、ansible等自動化運(yùn)維管理工具的出現(xiàn),使運(yùn)維管理工作向自動化邁進(jìn)。此時各大企業(yè)紛紛在saltstack、ansible等工具的基礎(chǔ)上進(jìn)行二次開發(fā),推出自己的自動化運(yùn)維管理平臺,運(yùn)維管理工作正式進(jìn)入自動化時代。
如何讓運(yùn)維操作規(guī)范、可控、透明化?-堡壘機(jī)/跳板機(jī)系統(tǒng)
如何第一時間發(fā)現(xiàn)故障問題,從而快速排查處理問題?-監(jiān)控報警系統(tǒng)
如何管理大批量服務(wù)器,實(shí)現(xiàn)批量分發(fā)、批量部署、批量更新?-自動化運(yùn)維管理工具
如何集中管理服務(wù)器日志,并對日志進(jìn)行可視化分析、檢索?-集中式日志分析平臺
第二章 Jumpserver堡壘機(jī)
2.1.?堡壘機(jī)/跳板機(jī)概念
什么是堡壘機(jī)?什么是跳板機(jī)?為什么要部署堡壘機(jī)/跳板機(jī)?
跳板機(jī):跳板機(jī)屬于內(nèi)控堡壘機(jī)范疇,是一種用于單點(diǎn)登陸的主機(jī)應(yīng)用系統(tǒng)。2000年左右,高端行業(yè)用戶為了對運(yùn)維人員的遠(yuǎn)程登錄進(jìn)行集中管理,會在機(jī)房里部署跳板機(jī)。跳板機(jī)就是一臺服務(wù)器,維護(hù)人員在維護(hù)過程中,首先要統(tǒng)一登錄到這臺服務(wù)器上,然后從這臺服務(wù)器再登錄到目標(biāo)設(shè)備進(jìn)行維護(hù)。但跳板機(jī)并沒有實(shí)現(xiàn)對運(yùn)維人員操作行為的控制和審計(jì),使用跳板機(jī)過程中還是會有誤操作、違規(guī)操作導(dǎo)致的操作事故,一旦出現(xiàn)操作事故很難快速定位原因和責(zé)任人。此外,跳板機(jī)存在嚴(yán)重的安全風(fēng)險,一旦跳板機(jī)系統(tǒng)被攻入,則將后端資源風(fēng)險完全暴露無遺。同時,對于個別資源(如telnet)可以通過跳板機(jī)來完成一定的內(nèi)控,但是對于更多更特殊的資源(ftp、rdp等)來講就顯得力不從心了。
堡壘機(jī):人們逐漸認(rèn)識到跳板機(jī)的不足,需要更新、更好的安全技術(shù)理念來實(shí)現(xiàn)運(yùn)維操作管理,需要一種能滿足角色管理與授權(quán)審批、信息資源訪問控制、操作記錄和安全審計(jì)、系統(tǒng)變更和維護(hù)控制要求,并生成一些統(tǒng)計(jì)報表配合管理規(guī)范來不斷提升IT內(nèi)控的合規(guī)性的產(chǎn)品。在這些理念的指導(dǎo)下,2005年前后,在跳板機(jī)的基礎(chǔ)上應(yīng)運(yùn)而生了堡壘機(jī)概念,運(yùn)維堡壘機(jī)開始以一個獨(dú)立的產(chǎn)品形態(tài)被廣泛部署,有效地降低了運(yùn)維操作風(fēng)險,使得運(yùn)維操作管理變得更簡單、更安全。
2.2.?Jumpserver開源堡壘機(jī)介紹
Jumpserver 是全球首款完全開源的堡壘機(jī),使用 GNU GPL v2.0 開源協(xié)議,是符合 4A 的專業(yè)運(yùn)維審計(jì)系統(tǒng)。
Jumpserver 使用 Python / Django 進(jìn)行開發(fā),遵循 Web 2.0 規(guī)范,配備了業(yè)界領(lǐng)先的 Web Terminal 解決方案,交互界面美觀、用戶體驗(yàn)好。
Jumpserver 采納分布式架構(gòu),支持多機(jī)房跨區(qū)域部署,中心節(jié)點(diǎn)提供 API,各機(jī)房部署登錄節(jié)點(diǎn),可橫向擴(kuò)展、無并發(fā)訪問限制。
為什么選擇Jumpserver?
混合云下更好用的堡壘機(jī):
1. 分布式架構(gòu)設(shè)計(jì)無限擴(kuò)展,輕松對接混合云資產(chǎn);
2. 支持使用云存儲(AWS S3, ES等)存儲錄像、命令;
顛覆傳統(tǒng)堡壘機(jī):
1. 無主機(jī)和并發(fā)數(shù)量限制,支持水平擴(kuò)容;
2. FIT2CLOUD提供完備的商業(yè)服務(wù)支持,用戶無后顧之憂;
極致的用戶體驗(yàn):
1. 極致UI體驗(yàn),完勝傳統(tǒng)堡壘機(jī);
2. 容器化的部署方式,部署過程方便快捷,可持續(xù)升級;
2.3.?服務(wù)器配置
Jumpserver完全免費(fèi),只需要一臺云主機(jī)的費(fèi)用即可。
l?CPU:4核
l?內(nèi)存:8G
l?硬盤:200G
l?網(wǎng)卡:千兆雙網(wǎng)卡
l?操作系統(tǒng):CentOS 7 64位
2.4.?網(wǎng)絡(luò)拓?fù)鋱D
運(yùn)維人員統(tǒng)一通過堡壘機(jī)入口登陸服務(wù)器,避免了直接登陸服務(wù)器帶來的安全隱患。
2.5.?Jumpserver主要功能
2.5.1.???用戶管理
可對用戶實(shí)行分組、分權(quán)限管理方式,在分配資產(chǎn)權(quán)限的時候,針對某個用戶組下的所有用戶,可以為一個用戶分配多個用戶組。
2.5.2.???資產(chǎn)管理
可自動獲取服務(wù)器資產(chǎn)的硬件等信息,可以對資產(chǎn)創(chuàng)建標(biāo)簽,還可以給用戶分配登陸服務(wù)器的系統(tǒng)賬號等。
2.5.3.???授權(quán)管理
授權(quán)用戶可以登陸的主機(jī)組、主機(jī)。
2.5.4.???日志審計(jì)
日志審計(jì)很重要,會自動記錄下用戶登陸服務(wù)器后執(zhí)行的所有命令,運(yùn)維人員操作違規(guī)、誤操作等一目了然。
2.6.?通過堡壘機(jī)登陸服務(wù)器
Jumpserver提供兩種登陸方式:1、web終端 2、命令行登陸
2.6.1.???web終端方式登陸服務(wù)器
運(yùn)維人員通過瀏覽器訪問Jumpserver主頁,會話管理-web終端里可登陸自己名下的服務(wù)器,參見下圖,此時已經(jīng)登陸到192.168.2.249這臺windows服務(wù)器。
2.6.2.???命令行方式登陸服務(wù)器
注意:命令行方式不支持windows,只能登陸Linux主機(jī)。
2.6.2.1. ?Mac/Linux系統(tǒng)登陸方式
$ ssh -p端口 堡壘機(jī)賬號@堡壘機(jī)IP
$?ssh?-p2222?xuad@192.168.2.164輸入密碼回車,登陸成功后會看到如下頁面
按照提示可以登陸自己名下的服務(wù)器。
$?sftp?-P2222?xuad@192.168.2.164????#?FTP登陸方式2.6.2.2. ?Xshell登陸方式
$ ssh 堡壘機(jī)賬號@堡壘機(jī)IP 端口
$?ssh?xuad@192.168.2.164?2222第三章 zabbix監(jiān)控系統(tǒng)
3.1.?zabbix開源監(jiān)控軟件介紹
基于Web界面的分布式系統(tǒng)監(jiān)控的企業(yè)級開源軟件。可以監(jiān)控各種系統(tǒng)與設(shè)備,網(wǎng)絡(luò)參數(shù),保證服務(wù)器設(shè)備安全運(yùn)營;提供靈活的通知機(jī)制。
為什么選擇zabbix?
相比與cacti、nagios等監(jiān)控軟件,zabbix具有分布式監(jiān)控、自動化功能、自定義監(jiān)控項(xiàng)方便、支持多種監(jiān)控方式、提供api功能等優(yōu)勢。具體監(jiān)控項(xiàng)目如下:
系統(tǒng)監(jiān)控:
可監(jiān)控linux和windows主機(jī),例如CPU的負(fù)載、上下文切換、內(nèi)存使用率、磁盤讀寫、磁盤使用率、磁盤inode節(jié)點(diǎn)等。
服務(wù)監(jiān)控:
可監(jiān)控服務(wù)進(jìn)程的存活、心跳等,通過apache/nginx的status獲取并發(fā)數(shù)、訪問量等參數(shù)監(jiān)控,還可以監(jiān)控mysql的相關(guān)參數(shù)等。
網(wǎng)絡(luò)監(jiān)控:
可以監(jiān)控機(jī)房網(wǎng)絡(luò)流量、機(jī)器內(nèi)外網(wǎng)卡流量、網(wǎng)絡(luò)I/O等。
業(yè)務(wù)監(jiān)控:
業(yè)務(wù)層面這塊的監(jiān)控需要與開發(fā)對接,監(jiān)控比較重要,如API等。開發(fā)需要開放程序相關(guān)的接口,然后通過簡單的腳本就可以實(shí)現(xiàn)監(jiān)控。
mysql監(jiān)控:
可監(jiān)控mysql端口、進(jìn)程狀態(tài)、進(jìn)程心跳等,還可以監(jiān)控mysql的參數(shù),例如最大連接數(shù)、索引大小、打開表的數(shù)量、使用內(nèi)存大小、IO讀線程的數(shù)量、IO寫線程的數(shù)量等等。
3.2.?服務(wù)器配置
zabbix完全免費(fèi),只需要一臺云主機(jī)費(fèi)用即可。
l?CPU:8核
l?內(nèi)存:16G
l?硬盤:500G
l?網(wǎng)卡:千兆雙網(wǎng)卡
l?操作系統(tǒng):CentOS 7 64位
考慮到zabbix監(jiān)控?cái)?shù)據(jù)日后會逐漸越來越大,另外Jumpserver和zabbix共用一個mysql實(shí)例,故此硬盤空間需求500G以上。
3.3.?zabbix邏輯圖
zabbix服務(wù)器通過自己的agent客戶端程序獲取要監(jiān)控的數(shù)據(jù),不需要安裝第三方協(xié)議,例如snmp等。
3.4.?zabbix報警方式
zabbix的報警方式主要有桌面報警、郵件報警、短信報警等,桌面報警即是在zabbix登陸后儀表板首頁會顯示有問題的監(jiān)控項(xiàng)和所對應(yīng)的設(shè)備,郵件報警即是把有問題的設(shè)備和監(jiān)控項(xiàng)信息以郵件的形式發(fā)送到運(yùn)維人員的郵箱,短信報警即是以短信的形式發(fā)送到運(yùn)維人員的手機(jī)上。
3.5.?zabbix的監(jiān)控效果圖展示
CPU負(fù)載:
磁盤使用率:
內(nèi)存使用情況:
網(wǎng)卡流量:
nginx并發(fā)情況:
apache并發(fā)情況:
第四章 ansible自動化運(yùn)維工具
4.1.?ansible介紹
ansible是新出現(xiàn)的自動化運(yùn)維工具,基于Python開發(fā),集合了眾多運(yùn)維工具(puppet、cfengine、chef、func、fabric)的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能。
ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運(yùn)行的模塊,ansible只是提供一種框架。主要包括:
(1)、連接插件connection plugins:負(fù)責(zé)和被監(jiān)控端實(shí)現(xiàn)通信;
(2)、host inventory:指定操作的主機(jī),是一個配置文件里面定義監(jiān)控的主機(jī);
(3)、各種模塊核心模塊、command模塊、自定義模塊;
(4)、借助于插件完成記錄日志郵件等功能;
(5)、playbook:劇本執(zhí)行多個任務(wù)時,非必需可以讓節(jié)點(diǎn)一次性運(yùn)行多個任務(wù)。
為什么選擇ansible?
相比于saltstack而言,ansible屬于輕量級自動化運(yùn)維工具,無需在管理節(jié)點(diǎn)安裝agent客戶端,便能實(shí)現(xiàn)saltstack批量管理服務(wù)器的能力。對于服務(wù)器數(shù)量不多的情況下,例如100臺服務(wù)器以下規(guī)模,對于中小型企業(yè)而言,ansible無疑是最好的選擇。
4.2.?服務(wù)器配置
ansible完全免費(fèi),只需要一臺云主機(jī)費(fèi)用即可。
l?CPU:4核
l?內(nèi)存:8G
l?硬盤:200G
l?網(wǎng)卡:千兆雙網(wǎng)卡
l?操作系統(tǒng):CentOS 7 64位
4.3.?網(wǎng)絡(luò)拓?fù)鋱D
運(yùn)維人員通過堡壘機(jī)登陸到ansible服務(wù)器上,通過playbook作業(yè)執(zhí)行批量部署、批量更新、批量運(yùn)行命令等操作。
4.4.?批量操作實(shí)例
4.4.1.???批量執(zhí)行命令
要執(zhí)行一條命令的話只需要一條語句即可,要執(zhí)行多條命令的話可創(chuàng)建playbook作業(yè)實(shí)現(xiàn)批量運(yùn)行多條命令,相當(dāng)于批量運(yùn)行一個shell腳本的功能。
我們先在hosts文件里定義一個web_server主機(jī)組,下面共有三臺主機(jī)。
實(shí)例1:查看web_server主機(jī)組下所有主機(jī)的磁盤信息。
$?ansible?web_server?-a?"df?-h"??#?一條語句就行了實(shí)例2:將控制機(jī)上的/etc/ansible/yml_20180525.tar.gz文件拷貝至web_server主機(jī)組下的所有主機(jī)的/tmp目錄下并解壓,yml_20180525.tar.gz共包含nginx.yml和docker.yml兩個文件。
首先我們先創(chuàng)建一個playbook,命名為tarcopy.yml,內(nèi)容如下:
然后運(yùn)行這個playbook
$?ansible-playbook?tarcopy.yml從上圖中我們可以看到命令已經(jīng)執(zhí)行成功了,接下來我們登陸到節(jié)點(diǎn)主機(jī)上看一下結(jié)果吧。
很顯然是我們想要的結(jié)果,yml_20180525.tar.gz已經(jīng)成功拷貝過來并解壓了。
4.4.2.???批量啟動、重啟、停止nginx服務(wù)
首先創(chuàng)建一個playbook,然后執(zhí)行它就可以了,內(nèi)容如下:
$?ansible-playbook?nginx.yml?-t?start_nginx??#?啟動 $?ansible-playbook?nginx.yml?-t?stop_nginx??#停止 $?ansible-playbook?nginx.yml?-t?restart_nginx??#重啟
只需要創(chuàng)建一個簡單的playbook,就可以完成批量執(zhí)行任務(wù),用ansible管理服務(wù)器真的很方便。
第五章 ELK集中式日志分析平臺
5.1.?ELK介紹
ELK是三款開源軟件的縮寫,即:ElasticSearch + Logstash + Kibana。這三個工具組合形成了一套實(shí)用、易用的監(jiān)控架構(gòu),可抓取系統(tǒng)日志、apache日志、nginx日志、mysql日志等多種日志類型,目前很多公司用它來搭建可視化的集中式日志分析平臺。
ElasticSearch:是一個分布式的RESTful風(fēng)格的搜索和數(shù)據(jù)分析引擎,同時還提供了集中存儲功能,它主要負(fù)責(zé)將logstash抓取來的日志數(shù)據(jù)進(jìn)行檢索、查詢、分析等。
Logstash:日志處理工具,負(fù)責(zé)日志收集、轉(zhuǎn)換、解析等,并將解析后的日志推送給ElasticSearch進(jìn)行檢索。
Kibana:Web前端,可以將ElasticSearch檢索后的日志轉(zhuǎn)化為各種圖表,為用戶提供數(shù)據(jù)可視化支持。
Filebeat:輕量型日志采集器,負(fù)責(zé)采集文件形式的日志,并將采集來的日志推送給logstash進(jìn)行處理。
Winlogbeat:輕量型windows事件日志采集器,負(fù)責(zé)采集wondows的事件日志,并將采集來的日志推送給logstash進(jìn)行處理。
為什么選擇ELK?
ELK是目前比較流行的集中式日志分析平臺,能夠安全可靠地獲取任何來源、任何格式的日志數(shù)據(jù),并且能夠?qū)崟r地對數(shù)據(jù)進(jìn)行搜索、分析和可視化。相比于其他日志管理工具如logzilla等,ELK具有分布式搜索、各功能獨(dú)立(方便部署)、水平擴(kuò)展、可視化、高可用和管理便捷等諸多優(yōu)勢。
5.2.?服務(wù)器配置
ELK完全免費(fèi),只需要一臺云主機(jī)費(fèi)用即可。
l?CPU:8核
l?內(nèi)存:16G
l?硬盤:500G
l?網(wǎng)卡:千兆雙網(wǎng)卡
l?操作系統(tǒng):CentOS 7 64位
5.3.?網(wǎng)絡(luò)拓?fù)鋱D
運(yùn)維人員和開發(fā)人員通過通過瀏覽器訪問ELK主頁,查看各應(yīng)用服務(wù)器的日志。
5.4.?日志頁面展示
Linux服務(wù)器日志:
windows服務(wù)器日志:
轉(zhuǎn)載于:https://blog.51cto.com/andyxu/2140283
總結(jié)
- 上一篇: lighttpd防御 Slow HTTP
- 下一篇: Android rxjava2的disp