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