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

全部開發(fā)者教程

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

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

Python 領(lǐng)域運用:自動化運維

1. 自動化運維簡介

1.1 什么是運維

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

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

1.2 自動化運維

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

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

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

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

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

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

圖片描述

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

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

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

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

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

2. 運維的基礎(chǔ)知識

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

2.1 nginx 簡介

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

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

圖片描述

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

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

2.2 docker 簡介

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

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

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

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

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

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

2.3 mysql 簡介

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

mysql 的重要特性包括:

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

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

2.4 redis 簡介

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

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

redis 提供了大量的配置選項,例如:

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

3. 為什么用 Python 進行運維

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

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

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

3.2 方便定制需求

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

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

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

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

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

4. 常用的自動化運維模塊

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

  1. psutil

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

  1. dnspython

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

  1. smtplib

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

  1. IPy

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

  1. pycurl

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

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

  1. scapy

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

  1. ansible

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

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

  1. saltstack

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

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

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