Linux 運維工程師一定要知道的六類好習慣和23個教訓

来源:https://www.cnblogs.com/qianyuliang/archive/2019/01/17/10280618.html
-Advertisement-
Play Games

一、線上操作規範 1.測試使用當初學習Linux的使用,從基礎到服務到集群,都是在虛擬機做的,雖然老師告訴我們跟真機沒有什麼差別,可是對真實環境的渴望日漸上升,不過虛擬機的各種快照卻讓我們養成了各種手賤的習慣,以致於拿到伺服器操作許可權時候,就迫不及待的想去試試。 記得上班第一天,老大把root密碼交 ...


一、線上操作規範

1.測試使用
當初學習Linux的使用,從基礎到服務到集群,都是在虛擬機做的,雖然老師告訴我們跟真機沒有什麼差別,可是對真實環境的渴望日漸上升,不過虛擬機的各種快照卻讓我們養成了各種手賤的習慣,以致於拿到伺服器操作許可權時候,就迫不及待的想去試試。

記得上班第一天,老大把root密碼交給我,由於只能使用putty,我就想使用xshell,於是悄悄登錄伺服器嘗試改為xshell+密鑰登錄,因為沒有測試,也沒有留一個ssh連接,所有重啟sshd伺服器之後,自己就被擋在伺服器之外了,幸好當時我備份了sshd_config文件,後來讓機房人員cp過去就可以了,幸虧這是一家小公司,不然直接就被幹了……慶幸當年運氣比較好。

第二個例子是關於文件同步的,大家都知道rsync同步很快,可是他刪除文件的速度大大超過了rm -rf,在rsync中有一個命令是,以某目錄為準同步某文件(如果第一個目錄是空的,那麼結果可想而知),源目錄(有數據的)就會被刪除,當初我就是因為誤操作,以及缺乏測試,就目錄寫反了,關鍵是沒有備份……生產環境數據被刪了

沒備份,大家自己想後果吧,其重要性不言而喻。

2. Enter前再三確認
關於rm -rf / var 這種錯誤,我相信手快的人,或者網速比較慢的時候,出現的幾率相當大。

當你發現執行完之後,你的心至少是涼了半截。

大家可能會說,我按了這麼多次都沒出過錯,不用怕,我只想說,當出現一次你就明白了,不要以為那些運維事故都是在別人身上,如果你不註意,下一個就是你。

3. 切忌多人操作
我在的上一家公司,運維管理相當混亂,舉一個最典型的例子吧,離職好幾任的運維都有伺服器root密碼。

通常我們運維接到任務,都會進行簡單查看。如果無法解決,就請求他人幫忙,可是當問題焦頭爛額的時候,客服主管(懂點linux),網管,你上司一起調試一個伺服器,當你各種百度,各種對照完了發現,你的伺服器配置文件,跟上次你修改不一樣了,然後再改回來,然後再谷歌,興衝衝發現問題,解決了,別人卻告訴你,他也解決了,修改的是不同的參數……這個,我就真不知道哪個是問題真正的原因了,當然這還是好的,問題解決了,皆大歡喜,可是你遇到過你剛修改的文件,測試無效,再去修改發現文件又被修改的時候呢?真的很惱火,切忌多人操作。

4.先備份後操作
養成一個習慣,要修改數據時,先備份,比如.conf的配置文件;

另外,修改配置文件時,建議註釋原選項,然後再複製,修改;

再者說,如果第一個例子中,有資料庫備份,那rsync的誤操作不久沒事了吧;

所以說丟資料庫非一朝一夕,隨便備份一個就不用那麼慘。

二、涉及數據

1.慎用rm -rf
網上的例子很多,各種rm -rf /,各種刪除主資料庫,各種運維事故……

一點小失誤就會造成很大的損失。如果真需要刪除,一定要謹慎。

2.備份大於一切
本來上面都有各種關於備份,但是我想把它劃分在數據類再次強調,備份非常之重要哇~

我記得我的老師說過一句話,涉及到數據何種的謹慎都不為過。

我就職的公司有做第三方支付網站和網貸平臺的。第三方支付是每兩個小時完全備份一次,網貸平臺是每20分鐘備份一次。

我不多說了,大家自己斟酌吧

3.穩定大於一切
其實不止是數據,在整個伺服器環境,都是穩定大於一切,不求最快,但求最穩定,求可用性。

所以未經測試,不要在伺服器使用新的軟體,比如nginx+php-fpm,生產環境中php各種掛啊~

重啟下就好了,或者換apache就好了。

4.保密大於一切
現在各種艷照門漫天飛,各種路由器後門,所以說,涉及到數據,不保密是不行的。

三、涉及安全

1. ssh

  • 更改預設埠(當然如果專業要黑你,掃描下就出來了)

  • 禁止 root 登錄

  • 使用普通用戶+key認證+sudo規則+ip地址+用戶限制

  • 使用hostdeny類似的防爆力破解軟體(超過幾次嘗試直接拉黑)

  • 篩選/etc/passwd中login的用戶

 

2. 防火牆
防火牆生產環境一定要開,並且要遵循最小原則,drop所有,然後放行需要的服務埠。

3.精細許可權和控制粒度
能使用普通用戶啟動的服務堅決不使用root,把各種服務許可權控制到最低,控制粒度要精細。

4.入侵檢測和日誌監控

  • 使用第三方軟體,時刻檢測系統關鍵文件以及各種服務配置文件的改動。比如,/etc/passwd,/etc/my.cnf,/etc/httpd/con/httpd.con等。

  • 使用集中化的日誌監控體系,監控/var/log/secure,/etc/log/message,ftp上傳下載文件等報警錯誤日誌。

  • 另外針對埠掃描,也可以使用一些第三方軟體,發現被掃描就直接拉入host.deny。這些信息對於系統被入侵後排錯很有幫助。有人說過,一個公司在安全投入的成本跟他被安全攻擊損失的成本成正比,安全是一個很大的話題。

也是一個很基礎的工作,把基礎做好了,就能相當的提高系統安全性,其他的就是安全高手做的了。

四、日常監控

1.系統運行監控

好多人踏入運維都是從監控做起,大的公司一般都有專業24小時監控運維。系統運行監控一般包括硬體占用率,常見的有,記憶體,硬碟,cpu,網卡,os包括登錄監控,系統關鍵文件監控。

定期的監控可以預測出硬體損壞的概率,並且給調優帶來很實用的功能。

2.服務運行監控

服務監控一般就是各種應用,web,db,lvs等,這一般都是監控一些指標,在系統出現性能瓶頸的時候就能很快發現並解決。

3.日誌監控

這裡的日誌監控跟安全的日誌監控類似,但這裡一般都是硬體,os,應用程式的報錯和警報信息。

監控在系統穩定運行的時候確實沒啥用,但是一旦出現問題,你又沒做監控,就會很被動了。

 

五、性能調優

1.深入瞭解運行機制
其實按一年多的運維經驗來說,談調優根本就是紙上談兵,但是我只是想簡單總結下,如果有更深入的瞭解,我會更新。

在對軟體進行優化之前,比如要深入瞭解一個軟體的運行機制,比如nginx和apache,大家都說nginx快,那就必須知道nginx為什麼快,利用什麼原理,處理請求比apache,並且要能跟別人用淺顯易懂的話說出來,必要的時候還要能看懂源代碼,否則一切以參數為調優對象的文檔都是瞎談。

2.調優框架以及先後
熟悉了底層運行機制,就要有調優的框架和先後順序,比如資料庫出現瓶頸,好多人直接就去更改資料庫的配置文件,我的建議是,先根據瓶頸去分析,查看日誌,寫出來調優方向,然後再入手,並且資料庫伺服器調優應該是最後一步,最先的應該是硬體和操作系統,現在的資料庫伺服器都是在各種測試之後才會發佈的

適用於所有操作系統,不應該先從他入手。

3.每次只調一個參數
每次只調一個參數,這個相比大家都瞭解,調的多了,你就自己就迷糊了。

4.基準測試
判斷調優是否有用,和測試一個新版本軟體的穩定性和性能等方面,就必須要基準測試了,測試要涉及很多因素。

測試是否接近業務真實需求這要看測試人的經驗了,相關資料大家可以參考《高性能mysql》第三版。

我的老師曾說過,沒有放之四海皆準的參數,任何參數更改任何調優都必須符合業務場景。所以不要再谷歌什麼什麼調優了,對你的提升和業務環境的改善沒有長久作用。

六、運維心態

1.控制心態
很多rm -rf /data都在下班的前幾分鐘,都在煩躁的高峰,那麼你還不打算控制下你的心態麽?

有人說了,煩躁也要上班,可是你可以在煩躁的時候儘量避免處理關鍵數據環境。

越是有壓力,越要冷靜,不然會損失更多。

大多人都有rm -rf /data/mysql的經歷,發現刪除之後,那種心情你可以想象一下,可是如果沒有備份,你急又有什麼用,一般這種情況下,你就要冷靜想下最壞打算了,對於mysql來說,刪除了物理文件,一部分表還會存在記憶體中,所以斷開業務,但是不要關閉mysql資料庫,這對恢復很有幫助,並使用dd複製硬碟,然後你再進行恢復

當然了大多時候你就只能找數據恢復公司了。

試想一下,數據被刪了,你各種操作,關閉資料庫,然後修複,不但有可能覆蓋文件,還找不到記憶體中的表了。

2.對數據負責

生產環境不是兒戲,資料庫也不是兒戲,一定要對數據負責。不備份的後果是非常嚴重的。

3.追根究底
很多運維人員比較忙,遇到問題解決就不會再管了,記得去年一個客戶的網站老是打不開,經過php代碼報錯,發現是session和whos_online損壞,前任運維是通過repair修複的,我就也這樣修複了,但是過了幾個小時,又出現了。反覆三四次之後,我就去谷歌資料庫表莫名損壞原因:一是myisam的bug,二是mysqlbug,三是mysql在寫入過程中被kill,最後發現是記憶體不夠用,導致OOM kill了mysqld進程,並且沒有swap分區,後臺監控記憶體是夠用的,最後升級物理記憶體解決。

4.測試和生產環境
在重要操作之前一定要看自己所在的機器,儘量避免多開視窗。

 

本文出處:http://www.cnblogs.com/yihr/p/9593795.html?from=groupmessage

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 秒級隨機值-常用方法: 上面的srand((unsigned)time(NULL));表示給rand()產生隨機值的種子. 其中(unsigned)time(NULL)則將當前時間轉為一個正整數,也就是說,如果我們如果在小於1秒之內多次運行該代碼,則隨機值都是相同的. 編譯運行-如下圖所示,可以看到 ...
  • 1.netstat -nap | grep 埠號 2.第一種的可以查看埠號對應的pid,但是會出現pid為空的情況,這種時候用:lsof -i:埠號 3.根據pid查看埠號 netstat -nap | grep 進程pid 4.查看pid ps aux | grep 進程名 ps -ef ...
  • 環境: HelperA64開發板 Linux3.10內核 時間:2019.01.17 目標:PCF8563實時時鐘驅動的使用 問題:因為pcf8563的驅動是linux內核自帶的,網上也有很多分析的方法,之後再深入分析下pcf的驅動,寫驅動,得首先使用它。 1.以前各大廠商都會有自己的arm架構代碼 ...
  • 如果按照上一篇記錄的那樣,只有本公司的人或者自己才能使用驅動。想寫出一個通用的驅動程式,讓其他應用程式來無縫移植,需要使用現成的驅動——輸入子系統。 /drivers/input/input.c #define EV_SYN 0x00 //同步類#define EV_KEY 0x01 //按鍵類#d ...
  • 在學校里使用校園網,難免會受到限制,比如無論有線網路還是無線網路必須使用客戶端,輸入帳號密碼才行,博主的情況就是這樣,一直苦於Ubuntu 16.04無法連接有線網路,這次由於需要用,所以嘗試各種辦法解決了這個問題。 ...
  • 一 基礎準備 參考《002.Ceph安裝部署》文檔部署一個基礎集群。 二 擴展集群 2.1 擴展架構 需求:添加Ceph元數據伺服器node1。然後添加Ceph Monitor和Ceph Manager node2,node3以提高可靠性和可用性。 2.2 添加元數據(metadata)伺服器 提示 ...
  • 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/fs.h> 4 #include <linux/init.h> 5 #include <linux/delay.h> 6 #include <linux ...
  • 1 實驗拓撲 2 需求 RS 01和RS 02對外提供WEB服務。 RS 01搭建LAMP,PHP通過http模塊方式提供。 RS 02搭建LAMP,PHP通過fpm方式提供。 RS 01和RS 02之間的關係。 RS 01對外提供NFS服務,作為兩個LAMP環境的共用存儲,負責存儲用戶上傳的資源, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...