第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Python 進(jìn)階應(yīng)用教程

Python 進(jìn)階應(yīng)用教程
01 Python 的對(duì)象和類 02 Python 類屬性和實(shí)例屬性 03 Python類的構(gòu)造方法、析構(gòu)方法、實(shí)例方法 04 Python 類的私有屬性和私有方法 05 Python 類的繼承和多繼承 06 Python 類實(shí)戰(zhàn) 07 Python 中的迭代器實(shí)現(xiàn)原理 08 Python 中的迭代器趣味實(shí)踐 09 Python 中的生成器實(shí)現(xiàn)原理 10 Python 中的生成器趣味實(shí)踐 11 Python 中的錯(cuò)誤和異常 12 Python 中的異常處理 13 Python 中的模塊 14 Python 標(biāo)準(zhǔn)庫(kù)之 os 模塊 15 Python 標(biāo)準(zhǔn)庫(kù)之 sys 模塊 16 Python 標(biāo)準(zhǔn)庫(kù)之 math 模塊 17 Python 標(biāo)準(zhǔn)庫(kù)之 random 模塊 18 Python 標(biāo)準(zhǔn)庫(kù)之 Json 模塊 19 Python 標(biāo)準(zhǔn)庫(kù) datetime 模塊 20 Python 中的常用第三方模塊 21 Python 中的命名空間 22 Python 中的作用域 23 Python 中的文件 IO 操作 24 Python 基礎(chǔ)實(shí)戰(zhàn) 25 Python 內(nèi)置函數(shù) 26 Python 中使用正則表達(dá)式 27 使用 Python 操作 MySQL 數(shù)據(jù)庫(kù) 28 使用 Python 操作 Mongo 數(shù)據(jù)庫(kù) 29 使用 Python 操作 Redis 數(shù)據(jù)庫(kù) 30 使用 Python 發(fā)送一封郵件 31 threading 之 Thread 的使用 32 threading 之 Lock 的基本使用 33 Python 生產(chǎn)者消費(fèi)者模型 34 Python 的內(nèi)存管理與垃圾回收 35 Python 領(lǐng)域運(yùn)用:網(wǎng)絡(luò)爬蟲 36 Python 領(lǐng)域運(yùn)用:Web 開發(fā) 37 Python 領(lǐng)域運(yùn)用:自動(dòng)化運(yùn)維 38 Python 領(lǐng)域運(yùn)用:自動(dòng)化測(cè)試
首頁(yè) 慕課教程 Python 進(jìn)階應(yīng)用教程 Python 進(jìn)階應(yīng)用教程 37 Python 領(lǐng)域運(yùn)用:自動(dòng)化運(yùn)維

Python 領(lǐng)域運(yùn)用:自動(dòng)化運(yùn)維

1. 自動(dòng)化運(yùn)維簡(jiǎn)介

1.1 什么是運(yùn)維

運(yùn)維是指對(duì)硬件和軟件進(jìn)行運(yùn)營(yíng)和維護(hù),保障業(yè)務(wù)能夠長(zhǎng)期穩(wěn)定運(yùn)行。運(yùn)維,通常屬于技術(shù)部門,運(yùn)維、研發(fā)與測(cè)試同為互聯(lián)網(wǎng)產(chǎn)品技術(shù)支撐的 3 大部門。運(yùn)維的職責(zé)包括:

  • 保障業(yè)務(wù)長(zhǎng)期穩(wěn)定運(yùn)行,例如,保障網(wǎng)站服務(wù)器 7 x 24 小時(shí)不間斷的運(yùn)行
  • 負(fù)責(zé)服務(wù)器的網(wǎng)絡(luò)設(shè)置、網(wǎng)絡(luò)管理與系統(tǒng)性能優(yōu)化
  • 保障數(shù)據(jù)安全可靠,如用戶名密碼、游戲數(shù)據(jù)、交易數(shù)據(jù)等
  • 對(duì)軟件和硬件進(jìn)行日常監(jiān)控與維護(hù),隨時(shí)解決報(bào)警故障
  • 業(yè)務(wù)程序更新

1.2 自動(dòng)化運(yùn)維

系統(tǒng)管理員日常會(huì)進(jìn)行大量的重復(fù)性操作,例如安裝軟件、修改配置文件、創(chuàng)建用戶、批量執(zhí)行命令等等。如果主機(jī)數(shù)量龐大,單靠人工維護(hù)實(shí)在讓人難以忍受??紤]如下需求:

需求 1: 某大型企業(yè)的生產(chǎn)網(wǎng)絡(luò)里有 100 臺(tái)思科交換機(jī),最近公司更換了 TACACS (終端訪問控制器訪問控制系統(tǒng)) 服務(wù)器,需要在這 100 臺(tái)交換機(jī)上進(jìn)行重新配置。

需求 2: 公司的網(wǎng)絡(luò)安全部門提醒這 100 臺(tái)思科交換機(jī)現(xiàn)有的 IOS 版本有很多安全漏洞,需要盡快升級(jí)它們的 IOS 版本。

有兩種方式實(shí)現(xiàn)這樣的需求:

  • 手工的方式,使用 ssh 依次登錄到這 100 臺(tái)思科交換機(jī)上,輸入命令進(jìn)行配置和升級(jí)系統(tǒng)。
  • 自動(dòng)的方式,編寫 Python 腳本,用程序自動(dòng)登錄到 100 臺(tái)思科交換機(jī)上并執(zhí)行相應(yīng)的命令。在登錄交換機(jī)的過程中,腳本會(huì)自動(dòng)的輸入用戶名和密碼。

自動(dòng)化運(yùn)維就是把那些傳統(tǒng)上需要手工操作進(jìn)行維護(hù)自動(dòng)化。在上面的例子中,編寫程序?qū)?100 臺(tái)交換機(jī)進(jìn)行配置和升級(jí),就是典型的自動(dòng)化運(yùn)維。在計(jì)算機(jī)專業(yè)的招聘網(wǎng)站,能搜索到大量的運(yùn)維崗位招聘,如下所示:

圖片描述

Shell 腳本是實(shí)現(xiàn) Linux 系統(tǒng)自動(dòng)管理以及自動(dòng)化運(yùn)維所必備的工具,除了 Shell,能夠用于 Linux 運(yùn)維的腳本語(yǔ)言還有 Python。

現(xiàn)在越來越多的公司要求運(yùn)維人員會(huì) Python 自動(dòng)化開發(fā),在計(jì)算機(jī)專業(yè)的招聘網(wǎng)站中,查詢 baidu 發(fā)布的運(yùn)維的招聘要求:

工作職責(zé)
- 負(fù)責(zé)百度運(yùn)維基礎(chǔ)設(shè)施(監(jiān)控 部署 名字服務(wù) 容器托管)的穩(wěn)定高效運(yùn)行

任職資格
- 熟練掌握 Python/Go/Perl/Shell 至少一門語(yǔ)言

從招聘可以看到,Python 成了運(yùn)維人員必備的技能,每一個(gè)運(yùn)維人員在熟悉了 Shell 之后,都應(yīng)該再學(xué)習(xí) Python 語(yǔ)言。

2. 運(yùn)維的基礎(chǔ)知識(shí)

運(yùn)維人員需要掌握掌握互聯(lián)網(wǎng)常用的中間件維護(hù)、管理,例如 nginx、docker、mysql、redis 和 mongodb等。

2.1 nginx 簡(jiǎn)介

Nginx 是一款輕量級(jí)的 Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,由于它的內(nèi)存占用少、啟動(dòng)快、高并發(fā)能力強(qiáng),在互聯(lián)網(wǎng)項(xiàng)目中廣泛應(yīng)用。中國(guó)大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。

Nginx 服務(wù)器的反向代理服務(wù)是其最常用的重要功能,當(dāng)下流行的技術(shù)架構(gòu)如下所示:

圖片描述

  • 整個(gè)系統(tǒng)由兩部分構(gòu)成:
    • nginx 反向代理服務(wù)器
    • 多個(gè)應(yīng)用服務(wù)器
  • 客戶端將請(qǐng)求發(fā)送到 nginx 反向代理服務(wù)器
  • ngnix 根據(jù)請(qǐng)求的參數(shù)和配置將請(qǐng)求轉(zhuǎn)發(fā)給應(yīng)用服務(wù)器
  • nginx 從應(yīng)用服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端

通常 ngnix 作為整個(gè)應(yīng)用的入口,運(yùn)維人員需要熟練掌握 nginx 的配置和優(yōu)化。

2.2 docker 簡(jiǎn)介

Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到其它 Linux 系統(tǒng)上。

把一個(gè)應(yīng)用部署到生產(chǎn)環(huán)境中,需要進(jìn)行各種安裝和配置:

  • 安裝各種依賴包
  • 安裝相關(guān)的應(yīng)用程序并進(jìn)行配置,例如 nginx、mysql 等

配置非常繁瑣、容易出錯(cuò),使用 docker 可以有效的解決問題:

  • 開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像
  • 在生產(chǎn)環(huán)境下拉取一份鏡像(已經(jīng)配置好各種依賴包),直接運(yùn)行鏡像

Docker 對(duì)于顯著的降低了應(yīng)用部署的工作量,是運(yùn)維人員必須掌握的技術(shù)。

2.3 mysql 簡(jiǎn)介

mysql 是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。目前 mysql 被廣泛地應(yīng)用在 Internet 上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了 mysql 作為網(wǎng)站數(shù)據(jù)庫(kù)。

mysql 的重要特性包括:

  • 使用 C 和 C++ 編寫,源代碼的可移植,支持Linux、BSD 和 Windows 等多種操作系統(tǒng)。
  • 為多種編程語(yǔ)言提供了 API。這些編程語(yǔ)言包括C、C++、Java、PHP、Python等。
  • 支持多線程,充分利用CPU資源,支持多用戶。
  • 優(yōu)化的SQL查詢算法,有效地提高查詢速度。
  • 提供多語(yǔ)言支持,常見的編碼如中文的GB

運(yùn)維人員需要熟練掌握管理、檢查、優(yōu)化 mysql 數(shù)據(jù)庫(kù)操作的管理工具。

2.4 redis 簡(jiǎn)介

redis 是一個(gè)高性能的 key-value 數(shù)據(jù)庫(kù)。redis 是非關(guān)系型數(shù)據(jù)庫(kù),將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,訪問的速度很快,能夠顯著的提高運(yùn)行效率;與之相比,mysql 是關(guān)系型數(shù)據(jù)庫(kù),主要用于存放持久化數(shù)據(jù),將數(shù)據(jù)存儲(chǔ)在硬盤中,訪問速度較慢。

redis 的配置文件位于 redis 安裝目錄下,文件名為 redis.conf,通過修改 redis.conf 文件或使用 CONFIG set 命令來修改配置。

redis 提供了大量的配置選項(xiàng),例如:

  • maxmemory bytes
    • 指定 Redis 最大內(nèi)存限制,Redis 在啟動(dòng)時(shí)會(huì)把數(shù)據(jù)加載到內(nèi)存中,達(dá)到最大內(nèi)存后,Redis 會(huì)先嘗試清除已到期或即將到期的 Key
  • vm-enabled no
    • 指定是否啟用虛擬內(nèi)存機(jī)制,VM 機(jī)制將訪問量較少的頁(yè)即冷數(shù)據(jù) swap 到磁盤上,將訪問多的頁(yè)面由磁盤 swap 到內(nèi)存中

3. 為什么用 Python 進(jìn)行運(yùn)維

現(xiàn)階段,掌握 Python 開發(fā)語(yǔ)言已經(jīng)成為高級(jí)運(yùn)維工程師的必備技能,其原因如下:

3.1 復(fù)雜的系統(tǒng)管理

在大型的互聯(lián)網(wǎng)公司中,網(wǎng)絡(luò)包含有成千上萬臺(tái)服務(wù)器,shell 腳本語(yǔ)言適合簡(jiǎn)單的系統(tǒng)管理工作,遇到復(fù)雜的自動(dòng)化任務(wù)需要用專門的開發(fā)語(yǔ)言。Python 由于語(yǔ)法簡(jiǎn)單、擁有強(qiáng)大的第三方庫(kù),是完成復(fù)雜自動(dòng)化任務(wù)的首選編程語(yǔ)言。

3.2 方便定制需求

存在有大量的自動(dòng)化運(yùn)維工具,但是現(xiàn)有的運(yùn)維軟件如 puppet、saltstack、zabbix 和 nagio 多為通用的軟件,不可能完全適用公司的所有需求,當(dāng)需要做定制、做二次開發(fā)的時(shí)候,如果掌握 Python 編程語(yǔ)言即可輕松完成需求,實(shí)現(xiàn)一個(gè)定制的運(yùn)維工具:

  • 利用 Python 的第三方庫(kù),可以滿足絕大部分自動(dòng)化運(yùn)維的需求
  • 利用 Python 強(qiáng)大的 WEB 框架,能夠快速開發(fā)出一個(gè)運(yùn)維管理的 WEB 界面,

3.3 幫助調(diào)試優(yōu)化程序

在開發(fā)環(huán)境中,可能沒有充分測(cè)試程序的性能;而在生產(chǎn)環(huán)境中,一個(gè)業(yè)務(wù)上線了,通過監(jiān)控發(fā)現(xiàn): CPU 使用過高、內(nèi)存占用過大。

如果運(yùn)維人員完全不懂開發(fā),只能定位到進(jìn)程級(jí)別,即找到占用資源過多的進(jìn)程,然后將問題交給開發(fā)人員處理。如果運(yùn)維人員掌握一門編程語(yǔ)言、懂開發(fā),能夠深入到業(yè)務(wù)代碼,幫助調(diào)試、優(yōu)化開發(fā)人開發(fā)的程序。

4. 常用的自動(dòng)化運(yùn)維模塊

Python 的第三方模塊提供了自動(dòng)化運(yùn)維所需的功能,如:監(jiān)控系統(tǒng)資源、網(wǎng)絡(luò)配置等,常用的模塊如下:

  1. psutil

psutil 是一個(gè)跨平臺(tái)庫(kù)能夠?qū)崿F(xiàn)獲取系統(tǒng)運(yùn)行的進(jìn)程和系統(tǒng)利用率(內(nèi)存,CPU,磁盤,網(wǎng)絡(luò)等),主要用于系統(tǒng)監(jiān)控,分析和系統(tǒng)資源及進(jìn)程的管理。

  1. dnspython

dnspython 是一個(gè) DNS 工具包,可以用于查詢、傳輸并動(dòng)態(tài)更新 DNS 區(qū)域信息,在系統(tǒng)管理方面,可以利用查詢功能來實(shí)現(xiàn) DNS 服務(wù)監(jiān)控以及解析結(jié)果的校驗(yàn)。

  1. smtplib

smtplib 是一個(gè)發(fā)送電子郵件的工具包,它對(duì) smtp 協(xié)議進(jìn)行了簡(jiǎn)單的封裝。當(dāng)監(jiān)控系統(tǒng)發(fā)現(xiàn)問題時(shí),通過調(diào)用 smtplib 發(fā)送報(bào)警郵件。

  1. IPy

IPy 提供了對(duì)地址進(jìn)行處理的功能,主要提供了包括網(wǎng)段、網(wǎng)絡(luò)掩碼、廣播地址、子網(wǎng)數(shù)、IP類型的處理等功能。

  1. pycurl

cURL 是一個(gè)利用 URL 語(yǔ)法在命令行下工作的文件傳輸工具,cURL支持的通信協(xié)議有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。

pycurl 是一個(gè)用 C 語(yǔ)言寫的 libcurl Python實(shí)現(xiàn),可以理解為 linux 下 curl 命令功能的 Python 封裝。

  1. scapy

scapy 是一個(gè)由 Python 編寫的數(shù)據(jù)包處理程序,它能夠?qū)?shù)據(jù)包進(jìn)行偽造或解包,提供發(fā)送數(shù)據(jù)包、包嗅探、應(yīng)答和反饋等功能,目前很多優(yōu)秀的網(wǎng)絡(luò)掃描攻擊工具都使用了這個(gè)模塊。

  1. ansible

ansible 是一個(gè)綜合的自動(dòng)化運(yùn)維工具,基于 Python 開發(fā),集合了眾多運(yùn)維工具的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能。

ansible 提供了二次開發(fā)的接口,可以編寫 python 腳本請(qǐng)求 ansible 的 接口,開發(fā)自己的運(yùn)維工具。

  1. saltstack

saltstack 是一種基于 C/S 架構(gòu)的集中化管理平臺(tái),管理端稱為 Master,客戶端稱為 Minion。saltstack 具備配置管理、遠(yuǎn)程執(zhí)行、監(jiān)控等功能,saltstack 本身是基于 Python 語(yǔ)言開發(fā)實(shí)現(xiàn),結(jié)合了輕量級(jí)的消息隊(duì)列軟件 ZeroMQ 與 Python 第三方模塊構(gòu)建。

通過部署 SaltStack 環(huán)境,運(yùn)維人員可以在成千上萬臺(tái)服務(wù)器上做到批量執(zhí)行命令,根據(jù)不同的業(yè)務(wù)特性進(jìn)行配置集中化管理、分發(fā)文件、采集系統(tǒng)數(shù)據(jù)及軟件包的安裝與管理等。

saltstack 提供了二次開發(fā)的接口,可以編寫 python 腳本請(qǐng)求 saltstack 的 接口,開發(fā)自己的運(yùn)維工具。