一、什麼是運維?什麼是遊戲運維?
1)運維是指大型組織已經創建好的網絡軟硬件的維護,就是要保證業務的上線與運做的正常,
在他運轉的過程當中,對他進行維護,他集合了網絡、系統、數據庫、開發、安全、監控於一身的技術
運維又包括不少種,有DBA運維、網站運維、虛擬化運維、監控運維、遊戲運維等等
2)遊戲運維又有分工,分爲開發運維、應用運維(業務運維)和系統運維
開發運維:是給應用運維開發運維工具和運維平臺的
應用運維:是給業務上線、維護和作故障排除的,用開發運維開發出來的工具給業務上線、維護、作故障排查
系統運維:是給應用運維提供業務上的基礎設施,好比:系統、網絡、監控、硬件等等
總結:開發運維和系統運維給應用運維提供了「工具」和「基礎設施」上的支撐開發運維、應用運維 和系統運維他們的工做是環環相扣的
二、在工做中,運維人員常常須要跟運營人員打交道,請問運營人員是作什麼工做的?
遊戲運營要作的一個事情除了協調工做之外還須要與各平臺溝通,作好開服的時間、開服數、用戶導量、活動等計劃
三、如今給你三百臺服務器,你怎麼對他們進行管理?
管理3百臺服務器的方式:
1)設定跳板機,使用統一帳號登陸,便於安全與登陸的考量。
2)使用salt、ansiable、puppet進行系統的統一調度與配置的統一管理。
3)創建簡單的服務器的系統、配置、應用的cmdb信息管理。便於查閱每臺服務器上的各類信息記錄。
四、簡述raid0 raid1 raid5 三種工做模式的工做原理及特色html
RAID,能夠把硬盤整合成一個大磁盤,還能夠在大磁盤上再分區,放數據還有一個大功能,多塊盤放在一塊兒能夠有冗餘(備份)
RAID整合方式有不少,經常使用的:0 1 5 10
RAID 0,能夠是一塊盤和N個盤組合 前端
其優勢讀寫快,是RAID中最好的java
缺點:沒有冗餘,一塊壞了數據就全沒有了
RAID 1,只能2塊盤,盤的大小能夠不同,以小的爲準mysql
10G+10G只有10G,另外一個作備份。它有100%的冗餘,缺點:浪費資源,成本高
RAID 5 ,3塊盤,容量計算10*(n-1),損失一塊盤linux
特色,讀寫性能通常,讀還好一點,寫很差
冗餘從好到壞:RAID1 RAID10 RAID 5 RAID0
性能從好到壞:RAID0 RAID10 RAID5 RAID1
成本從低到高:RAID0 RAID5 RAID1 RAID10
單臺服務器:很重要盤很少,系統盤,RAID1
數據庫服務器:主庫:RAID10 從庫 RAID5RAID0(爲了維護成本,RAID10)
WEB服務器,若是沒有太多的數據的話,RAID5,RAID0(單盤)
有多臺,監控、應用服務器,RAID0 RAID5
咱們會根據數據的存儲和訪問的需求,去匹配對應的RAID級別nginx
五、LVS、Nginx、HAproxy有什麼區別?工做中你怎麼選擇?
LVS: 是基於四層的轉發
HAproxy: 是基於四層和七層的轉發,是專業的代理服務器
Nginx: 是WEB服務器,緩存服務器,又是反向代理服務器,能夠作七層的轉發
區別: LVS因爲是基於四層的轉發因此只能作端口的轉發而基於URL的、基於目錄的這種轉發LVS就作不了
工做選擇:
HAproxy和Nginx因爲能夠作七層的轉發,因此URL和目錄的轉發均可以作在很大併發量的時候咱們就要選擇LVS,像中小型公司的話併發量沒那麼大選擇HAproxy或者Nginx足已,因爲HAproxy由是專業的代理服務器配置簡單,因此中小型企業推薦使用HAproxy
六、Squid、Varinsh和Nginx有什麼區別,工做中你怎麼選擇?
Squid、Varinsh和Nginx都是代理服務器
什麼是代理服務器:
能當替用戶去訪問公網,而且能把訪問到的數據緩存到服務器本地,等用戶下次再訪問相同的資源的時候,代理服務器直接從本地迴應給用戶,當本地沒有的時候,我代替你去訪問公網,我接
收你的請求,我先在我自已的本地緩存找,若是我本地緩存有,我直接從我本地的緩存裏回覆你若是我在我本地沒有找到你要訪問的緩存的數據,那麼代理服務器就會代替你去訪問公網
區別:
1)Nginx原本是反向代理/web服務器,用了插件能夠作作這個副業可是自己不支持特性挺多,只能緩存靜態文件
2)從這些功能上。varnish和squid是專業的cache服務,而nginx這些是第三方模塊完成
3)varnish自己的技術上優點要高於squid,它採用了可視化頁面緩存技術
在內存的利用上,Varnish比Squid具備優點,性能要比Squid高。
還有強大的經過Varnish管理端口,可使用正則表達式快速、批量地清除部分緩存
它是內存緩存,速度一流,可是內存緩存也限制了其容量,緩存頁面和圖片通常是挺好的
4)squid的優點在於完整的龐大的cache技術資料,和不少的應用生產環境
工做中選擇:
要作cache服務的話,咱們確定是要選擇專業的cache服務,優先選擇squid或者varnish。
七、Tomcat和Resin有什麼區別,工做中你怎麼選擇?
區別:Tomcat用戶數多,可參考文檔多,Resin用戶數少,可考慮文檔少
最主要區別則是Tomcat是標準的java容器,不過性能方面比resin的要差一些
但穩定性和java程序的兼容性,應該是比resin的要好
工做中選擇:如今大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求穩定和程序的兼容
八、什麼是中間件?什麼是jdk?
中間件介紹:
中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不一樣的技術之間共享資源中間件位於客戶機/ 服務器的操做系統之上,管理計算機資源和網絡通信是鏈接兩個獨立應用程序或獨立系統的軟件。相鏈接的系統,即便它們具備不一樣的接口但經過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞經過中間件,應用程序能夠工做於多平臺或OS環境。
jdk:jdk是Java的開發工具包
它是一種用於構建在 Java 平臺上發佈的應用程序、applet 和組件的開發環境
九、講述一下Tomcat800五、800九、8080三個端口的含義?
8005==》 關閉時使用
8009==》 爲AJP端口,即容器使用,如Apache能經過AJP協議訪問Tomcat的8009端口
8080==》 通常應用使用
十、什麼叫CDN?
- 即內容分發網絡
- 其目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到
最接近用戶的網絡邊緣,使用戶可就近取得所需的內容,提升用戶訪問網站的速度
十一、什麼叫網站灰度發佈?
灰度發佈是指在黑與白之間,可以平滑過渡的一種發佈方式
AB test就是一種灰度發佈方式,讓一部用戶繼續用A,一部分用戶開始用B
若是用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把全部用戶都遷移到B上面 來
灰度發佈能夠保證總體系統的穩定,在初始灰度的時候就能夠發現、調整問題,以保證其影響度
十二、簡述DNS進行域名解析的過程?
用戶要訪問www.baidu.com,會先找本機的host文件,再找本地設置的DNS服務器,若是也沒有的話,就去網絡中找根服務器,根服務器反饋結果,說只能提供一級域名服務器.cn,就去找一級域名服務器,一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,二級域服務器只能提供三級域名服務器.baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網站www.baidu.com,而後發給請求的服務器,保存一份以後,再發給客戶端
13、RabbitMQ是什麼東西?
RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程當中保存消息的容器
消息中間件再將消息從它的源中到它的目標中標時充當中間人的做用隊列的主要目的是提供路由並保證消息的傳遞;若是發送消息時接收者不可用消息隊列不會保留消息,直到能夠成功地傳遞爲止,固然,消息隊列保存消息也是有期限地
1四、講一下Keepalived的工做原理?
在一個虛擬路由器中,只有做爲MASTER的VRRP路由器會一直髮送VRRP通告信息,
BACKUP不會搶佔MASTER,除非它的優先級更高。當MASTER不可用時(BACKUP收不到通告信息)多臺BACKUP中優先級最高的這臺會被搶佔爲MASTER。這種搶佔是很是快速的(<1s),以保證服務的連續性因爲安全性考慮,VRRP包使用了加密協議進行加密。BACKUP不會發送通告信息,只會接收通告信息
1五、講述一下LVS三種模式的工做過程?
LVS 有三種負載均衡的模式,分別是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)web
1、NAT模式(VS-NAT)面試
原理:就是把客戶端發來的數據包的IP頭的目的地址,在負載均衡器上換成其中一臺RS的 IP地址併發至此RS來處理,RS處理完後把數據交給負載均衡器,負載均衡器再把數據包 原IP地址改成本身的IP將目的地址改成客戶端IP地址便可期間,不管是進來的流量,還 是出去的流量,都必須通過負載均衡器正則表達式
優勢:集羣中的物理服務器可使用任何支持TCP/IP操做系統,只有負載均衡器須要一個 合法的IP地址算法
缺點:擴展性有限。當服務器節點(普通PC服務器)增加過多時,負載均衡器將成爲整個系 統的瓶頸由於全部的請求包和應答包的流向都通過負載均衡器。當服務器節點過多時
大量的數據包都交匯在負載均衡器那,速度就會變慢!
2、IP隧道模式(VS-TUN)
原理:首先要知道,互聯網上的大多Internet服務的請求包很短小,而應答包一般很大
那麼隧道模式就是,把客戶端發來的數據包,封裝一個新的IP頭標記(僅目的IP)發給
RS收到後,先把數據包的頭解開,還原數據包,處理後,直接返回給客戶端,不須要再通過
負載均衡器。注意,因爲RS須要對負載均衡器發過來的數據包進行還原,因此說必須支持
I PTUNNEL協議,因此,在RS的內核中,必須編譯支持IPTUNNEL這個選項
優勢:負載均衡器只負責將請求包分發給後端節點服務器,而RS將應答包直接發給用戶
因此,減小了負載均衡器的大量數據流動,負載均衡器再也不是系統的瓶頸,就能處理很 巨大的請求量這種方式,一臺負載均衡器可以爲不少RS進行分發。並且跑在公網上就 能進行不一樣地域的分發。
缺點:隧道模式的RS節點須要合法IP,這種方式須要全部的服務器支持」IP Tunneling」
(IP Encapsulation)協議,服務器可能只侷限在部分Linux系統上
3、直接路由模式(VS-DR)
原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應
全部RS對自己這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求全 部定向給DR,而DR收到數據包後根據調度算法,找出對應的RS,把目的MAC地址改成 RS的MAC(由於IP一致)並將請求分發給這臺RS這時RS收到這個數據包,處理完成之 後,因爲IP一致,能夠直接將數據返給客戶則等於直接從客戶端收到這個數據包無異, 處理後直接返回給客戶端因爲負載均衡器要對二層包頭進行改換,因此負載均衡器和RS 之間必須在一個廣播域也能夠簡單的理解爲在同一臺交換機上
優勢:和TUN(隧道模式)同樣,負載均衡器也只是分發請求,應答包經過單獨的路由方法 返回給客戶端與VS-TUN相比,VS-DR這種實現方式不須要隧道結構,所以可使用大 多數操做系統作爲物理服務器。
缺點:(不能說缺點,只能說是不足)要求負載均衡器的網卡必須與物理網卡在一個物理段 上。
mysql的innodb如何定位鎖問題:
在使用 show engine innodb status檢查引擎狀態時,發現了死鎖問題
在5.5中,information_schema 庫中增長了三個關於鎖的表(MEMORY引擎)
innodb_trx ## 當前運行的全部事務
innodb_locks ## 當前出現的鎖
innodb_lock_waits ## 鎖等待的對應關係
mysql如何減小主從複製延遲:
若是延遲比較大,就先確認如下幾個因素:
1. 從庫硬件比主庫差,致使複製延遲
2. 主從複製單線程,若是主庫寫併發太大,來不及傳送到從庫
就會致使延遲。更高版本的mysql能夠支持多線程複製
3. 慢SQL語句過多
4. 網絡延遲
5. master負載
主庫讀寫壓力大,致使複製延遲,架構的前端要加buffer及緩存層
6. slave負載
通常的作法是,使用多臺slave來分攤讀請求,再從這些slave中取一臺專用的服務器
只做爲備份用,不進行其餘任何操做.另外, 2個能夠減小延遲的參數:
–slave-net-timeout=seconds 單位爲秒 默認設置爲 3600秒
#參數含義:當slave從主數據庫讀取log數據失敗後,等待多久從新創建鏈接並獲取數據
–master-connect-retry=seconds 單位爲秒 默認設置爲 60秒
#參數含義:當從新創建主從鏈接時,若是鏈接創建失敗,間隔多久後重試
一般配置以上2個參數能夠減小網絡問題致使的主從數據同步延遲
MySQL數據庫主從同步延遲解決方案
最簡單的減小slave同步延時的方案就是在架構上作優化,儘可能讓主庫的DDL快速執行
還有就是主庫是寫,對數據安全性較高,好比sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 之類的設置,而slave則不須要這麼高的數據安全,徹底能夠講sync_binlog設置爲0或者關閉binlog
innodb_flushlog也能夠設置爲0來提升sql的執行效率。另外就是使用比主庫更好的硬件設備做爲slave
1、 在已知MYSQL數據庫的ROOT用戶密碼的狀況下,修改密碼的方法:
一、 在SHELL環境下,使用mysqladmin命令設置:
mysqladmin –u root –p password 「新密碼」 回車後要求輸入舊密碼
二、 在mysql>環境中,使用update命令,直接更新mysql庫user表的數據:
Update mysql.user set password=password(‘新密碼’) where user=’root’;
flush privileges;
注意:mysql語句要以分號」;」結束
三、 在mysql>環境中,使用grant命令,修改root用戶的受權權限。
grant all on *.* to root@’localhost’ identified by ‘新密碼’;
2、 如查忘記了mysql數據庫的ROOT用戶的密碼,又如何作呢?方法以下:
一、 關閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加爲系統服務)
二、 使用mysqld_safe腳本以安全模式(不加載受權表)啓動mysqld 服務
/usr/local/mysql/bin/mysqld_safe --skip-grant-table &
三、 使用空密碼的root用戶登陸數據庫,從新設置ROOT用戶的密碼
#mysql -u root
Mysql> Update mysql.user set password=password(‘新密碼’) where user=’root’;
Mysql> flush privileges;
Nginx的優勢是:
一、工做在網絡的7層之上,能夠針對http應用作一些分流的策略,好比針對域名、目錄結構
它的正則規則比HAProxy更爲強大和靈活,這也是它目前普遍流行的主要緣由之一
Nginx單憑這點可利用的場合就遠多於LVS了。
二、Nginx對網絡穩定性的依賴很是小,理論上能ping通就就能進行負載功能,這個也是它的優點之一
相反LVS對網絡穩定性依賴比較大,這點本人深有體會;
三、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌打印出來
LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。
四、能夠承擔高負載壓力且穩定,在硬件不差的狀況下通常能支撐幾萬次的併發量,負載度比LVS相對小些。
五、Nginx能夠經過端口檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,而且會把返回錯誤的請求從新提交到另外一個節點,不過其中缺點就是不支持url來檢測。好比用戶正在上傳一個文件,而處理該上傳的節點恰好在上傳過程當中出現故障,Nginx會把上傳切到另外一臺服務器從新處理,而LVS就直接斷掉了
若是是上傳一個很大的文件或者很重要的文件的話,用戶可能會所以而不滿。
六、Nginx不只僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器
LNMP也是近幾年很是流行的web架構,在高流量的環境中穩定性也很好。
七、Nginx如今做爲Web反向加速緩存愈來愈成熟了,速度比傳統的Squid服務器更快,可考慮用其做爲反向代理加速器
八、Nginx可做爲中層反向代理使用,這一層面Nginx基本上無對手,惟一能夠對比Nginx的就只有lighttpd了
不過lighttpd目前尚未作到Nginx徹底的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍
九、Nginx也可做爲靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區很是活躍,第三方模塊也不少
Nginx的缺點是:
一、Nginx僅能支持http、https和Email協議,這樣就在適用範圍上面小些,這個是它的缺點
二、對後端服務器的健康檢查,只支持經過端口來檢測,不支持經過url來檢測
不支持Session的直接保持,但能經過ip_hash來解決
LVS:使用Linux內核集羣實現一個高性能、高可用的負載均衡服務器
它具備很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)
LVS的優勢是:
一、抗負載能力強、是工做在網絡4層之上僅做分發之用,沒有流量的產生
這個特色也決定了它在負載均衡軟件裏的性能最強的,對內存和cpu資源消耗比較低
二、配置性比較低,這是一個缺點也是一個優勢,由於沒有可太多配置的東西
因此並不須要太多接觸,大大減小了人爲出錯的概率
三、工做穩定,由於其自己抗負載能力很強,自身有完整的雙機熱備方案
如LVS+Keepalived,不過咱們在項目實施中用得最多的仍是LVS/DR+Keepalived
四、無流量,LVS只分發請求,而流量並不從它自己出去,這點保證了均衡器IO的性能不會收到大流量的影響。
五、應用範圍較廣,由於LVS工做在4層,因此它幾乎可對全部應用作負載均衡,包括http、數據庫、在線聊天室等
LVS的缺點是:
一、軟件自己不支持正則表達式處理,不能作動靜分離
而如今許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優點所在
二、若是是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了
特別後面有Windows Server的機器的話,若是實施及配置還有維護過程就比較複雜了
相對而言,Nginx/HAProxy+Keepalived就簡單多了。
HAProxy的特色是:
一、HAProxy也是支持虛擬主機的。
二、HAProxy的優勢可以補充Nginx的一些缺點,好比支持Session的保持,Cookie的引導
同時支持經過獲取指定的url來檢測後端服務器的狀態
三、HAProxy跟LVS相似,自己就只是一款負載均衡軟件
單純從效率上來說HAProxy會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的
四、HAProxy支持TCP協議的負載均衡轉發,能夠對MySQL讀進行負載均衡
對後端的MySQL節點進行檢測和負載均衡,你們能夠用LVS+Keepalived對MySQL主從作負載均衡
五、HAProxy負載均衡策略很是多,HAProxy的負載均衡算法如今具體有以下8種:
①roundrobin,表示簡單的輪詢,這個很少說,這個是負載均衡基本都具有的;
② static-rr,表示根據權重,建議關注;
③leastconn,表示最少鏈接者先處理,建議關注;
④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制相似
咱們用其做爲解決session問題的一種方法,建議關注;
⑤ri,表示根據請求的URI;
⑥rl_param,表示根據請求的URl參數’balance url_param’ requires an URL parameter name;
⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。
mysqldump工具
mysqldump是mysql自帶的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump
支持基於innodb的熱備份,可是因爲是邏輯備份,因此速度不是很快,適合備份數據比較小的場景
Mysqldump徹底備份+二進制日誌能夠實現基於時間點的恢復。
基於LVM快照備份
在物理備份中,有基於文件系統的物理備份(LVM的快照),也能夠直接用tar之類的命令對整個數據庫目錄進行打包備份,可是這些只能進行泠備份,不一樣的存儲引擎備份的也不同,myisam自動備份到表級別而innodb不開啓獨立表空間的話只能備份整個數據庫。
tar包備份
percona提供的xtrabackup工具支持innodb的物理熱備份,支持徹底備份,增量備份,並且速度很是快,支持innodb存儲引發的數據在不一樣數據庫之間遷移,支持複製模式下的從機備份恢復備份恢復,爲了讓xtrabackup支持更多的功能擴展能夠設立獨立表空間,打開 innodb_file_per_table功能,啓用以後能夠支持單獨的表備份
keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。
虛擬路由冗餘協議,能夠認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其餘機器的默認路由爲該vip),master會發組播,當backup收不到vrrp包時就認爲master宕掉了這時就須要根據VRRP的優先級來選舉一個backup當master。這樣就能夠保證路由器的高可用了
keepalived主要有三個模塊,分別是core、check和vrrp。core模塊爲keepalived的核心,負責主進程的啓動、維護及全局配置文件的加載和解析。check負責健康檢查,包括常見的各類檢查方式,vrrp模塊是來實現VRRP協議的Keepalived健康檢查方式配置
HTTP_GET|SSL_GET
HTTP_GET | SSL_GET
{
url {
path /# HTTP/SSL 檢查的url能夠是多個
digest <STRING> # HTTP/SSL 檢查後的摘要信息用工具genhash生成
status_code 200# HTTP/SSL 檢查返回的狀態碼
}
connect_port 80 # 鏈接端口
bindto<IPADD>
connect_timeout 3 # 鏈接超時時間
nb_get_retry 3 # 重連次數
delay_before_retry 2 #鏈接間隔時間
}
cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10
2二、使用tcpdump監聽主機爲192.168.1.1,tcp端口爲80的數據,同時將輸出結果保存輸出到tcpdump.log
tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log
iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080
RAID 0:帶區卷,連續以位或字節爲單位分割數據,並行讀/寫於多個磁盤上,所以具備很高的數據傳輸率但它沒有數據冗餘,RAID 0 只是單純地提升性能,並無爲數據的可靠性提供保證並且其中的一個磁盤失效將影響到全部數據。所以,RAID 0 不能應用於數據安全性要求高的場合
RAID 1:鏡像卷,它是經過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據
不能提高寫數據效率。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,所以RAID1 能夠提升讀取性能RAID 1 是磁盤陣列中單位成本最高的,鏡像卷可用容量爲總容量的1/2,但提供了很高的數據安全性和可用性當一個磁盤失效時,系統能夠自動切換到鏡像磁盤上讀寫,而不須要重組失效的數據
RAID5:至少由3塊硬盤組成,分佈式奇偶校驗的獨立磁盤結構,它的奇偶校驗碼存在於全部磁盤上任何一個硬盤損壞,均可以根據其它硬盤上的校驗位來重建損壞的數據(最多容許1塊硬盤損壞)因此raid5能夠實現數據冗餘,確保數據的安全性,同時raid5也能夠提高數據的讀寫性能
運維工程師在公司當中責任重大,須要保證時刻爲公司及客戶提供最高、最快、最穩定、最安全的服務運維工程師的一個小小的失誤,頗有可能會對公司及客戶形成重大損失
所以運維工程師的工做須要嚴謹及富有創新精神
tcpdump -nn tcp port 80
A、形成服務器故障的緣由可能有如下幾點:
B、如何排查服務器故障的處理步驟以下:
1)最簡單有效的方法就是重裝系統
2)要查的話就是找到病毒文件而後刪除
中毒以後通常機器cpu、內存使用率會比較高
機器向外發包等異常狀況,排查方法簡單介紹下
top 命令找到cpu使用率最高的進程
通常病毒文件命名都比較亂,能夠用 ps aux 找到病毒文件位置
rm -f 命令刪除病毒文件
檢查計劃任務、開機啓動項和病毒文件目錄有無其餘能夠文件等
3)因爲即便刪除病毒文件不排除有潛伏病毒,因此最好是把機器備份數據以後重裝一下
公司的內網某臺linux服務器流量莫名其妙的劇增,用iftop查看有鏈接外網的狀況針對這種狀況通常重點查看netstat鏈接的外網ip和端口。
用lsof -p pid能夠查看到具體是那些進程,哪些文件經查勘發現/root下有相關的配置conf.n hhe兩個可疑文件,rm -rf後不到一分鐘就自動生成了由此推斷是某個母進程產生的這些文件。因此找到母進程就是找到罪魁禍首
查殺病毒最好斷掉外網訪問,還好是內網服務器,能夠經過內網訪問
斷了內網,病毒就失去外聯的能力,殺掉它就容易的多
怎麼找到呢,找了半天也沒有看到蛛絲馬跡,沒辦法只有ps axu一個個排查
方法是查看能夠的用戶和和系統類似而又不是的冒牌貨,果真,看到了以下進程可疑
看不到圖片就是/usr/bin/.sshd因而我殺掉全部.sshd相關的進程,而後直接刪掉.sshd這個可執行文件而後才刪掉了文章開頭提到的自動復活的文件
總結一下,遇到這種問題,若是不是太嚴重,儘可能不要重裝系統
通常就是先斷外網,而後利用iftop,ps,netstat,chattr,lsof,pstree這些工具順藤摸瓜
通常都能找到元兇。可是若是遇到諸如此類的問題
/boot/efi/EFI/redhat/grub.efi: Heuristics.Broken.Executable FOUND,我的以爲就要重裝系統了
應用層 (Application):
網絡服務與最終用戶的一個接口。
協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示層(Presentation Layer):
數據的表示、安全、壓縮。(在五層模型裏面已經合併到了應用層)
格式有,JPEG、ASCll、DECOIC、加密格式等
會話層(Session Layer):
創建、管理、終止會話。(在五層模型裏面已經合併到了應用層)
對應主機進程,指本地主機與遠程主機正在進行的會話
傳輸層 (Transport):
定義傳輸數據的協議端口號,以及流控和差錯校驗。
協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層
網絡層 (Network):
進行邏輯地址尋址,實現不一樣網絡之間的路徑選擇。
協議有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
數據鏈路層 (Link):
創建邏輯鏈接、進行硬件地址尋址、差錯校驗等功能。(由底層網絡定義協議)
將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正
物理層(Physical Layer):
是計算機網絡OSI模型中最低的一層
物理層規定:爲傳輸數據所須要的物理鏈路建立、維持、拆除
而提供具備機械的,電子的,功能的和規範的特性
簡單的說,物理層確保原始的數據可在各類物理媒體上傳輸。局域網與廣域網皆屬第一、2層物理層是OSI的第一層,它雖然處於最底層,倒是整個開放系統的基礎物理層爲設備之間的數據通訊提供傳輸媒體及互連設備,爲數據傳輸提供可靠的環境若是您想要用盡可能少的詞來記住這個第一層,那就是「信號和介質」
rewrite模塊,實現重寫功能
access模塊:來源控制
ssl模塊:安全加密
ngx_http_gzip_module:網絡傳輸壓縮模塊
ngx_http_proxy_module 模塊實現代理
ngx_http_upstream_module模塊實現定義後端服務器列表
ngx_cache_purge實現緩存清除功能
Nginx
Haproxy
Keepalived
LVS
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
還有ulimit -n 查看linux系統打開最大的文件描述符,這裏默認1024
不修改這裏web服務器修改再大也沒用,若要用就修改很幾個辦法,這裏說其中一個:
修改/etc/security/limits.conf
* soft nofile 10240
* hard nofile 10240
重啓後生效
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20
3五、寫一個腳本,實現判斷192.168.1.0/24網絡裏,當前在線的IP有哪些,能ping通則認爲在線
#!/bin/bash
for ip in `seq 1 255`
do
{
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 192.168.1.$ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done
wait
3六、已知 apache 服務的訪問日誌按天記錄在服務器本地目錄/app/logs 下,因爲磁盤空間緊張如今要求只能保留最近 7 天的訪問日誌!請問如何解決? 請給出解決辦法或配置或處理命令
建立文件腳本:
#!/bin/bash
for n in `seq 14`
do
date -s "11/0$n/14"
touch access_www_`(date +%F)`.log
done
解決方法:
# pwd/application/logs
# ll
-rw-r--r--. 1 root root 0 Jan 1 00:00 access_www_2015-01-01.log
-rw-r--r--. 1 root root 0 Jan 2 00:00 access_www_2015-01-02.log
-rw-r--r--. 1 root root 0 Jan 3 00:00 access_www_2015-01-03.log
-rw-r--r--. 1 root root 0 Jan 4 00:00 access_www_2015-01-04.log
-rw-r--r--. 1 root root 0 Jan 5 00:00 access_www_2015-01-05.log
-rw-r--r--. 1 root root 0 Jan 6 00:00 access_www_2015-01-06.log
-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log
-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log
-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log
-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log
-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log
-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log
-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log
-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log
# find /application/logs/ -type f -mtime +7 -name "*.log"|xargs rm –f
##也可使用-exec rm -f {} ;進行刪除
# ll
-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log
-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log
-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log
-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log
-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log
-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log
-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log
-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log
不用root,添加普通用戶,經過sudo受權管更改默認的遠程鏈接SSH服務端口及禁止root用戶遠程鏈接定時自動更新服務器時間配置國內yum源關閉selinux及iptables(iptables工做場景若是有外網IP必定要打開,高併發除外)
調整文件描述符的數量精簡開機啓動服務(crond rsyslog network sshd)
內核參數優化(/etc/sysctl.conf)更改字符集,支持中文,但建議仍是用英文字符集,防止亂碼鎖定關鍵系統文件清空/etc/issue,去除系統及內核版本登陸前的屏幕顯示
3八、請執行命令取出 linux 中 eth0 的 IP 地址(請用 cut,有能力者也可分別用 awk,sed 命令答)
cut方法1:
# ifconfig eth0|sed -n '2p'|cut -d ":" -f2|cut -d " " -f1
192.168.20.130
awk方法2:
# ifconfig eth0|awk 'NR==2'|awk -F ":" '{print $2}'|awk '{print $1}'
192.168.20.130
awk多分隔符方法3:
# ifconfig eth0|awk 'NR==2'|awk -F "[: ]+" '{print $4}'
192.168.20.130
sed方法4:
# ifconfig eth0|sed -n '/inet addr/p'|sed -r 's#^.*ddr:(.*)Bc.*$##g'
192.168.20.130
Ctrl + a
Ctrl + c
Ctrl + d
Ctrl + e
Ctrl + l
Ctrl + u
Ctrl + k
tab
Ctrl+shift+c
Ctrl+shift+v
解答:
Ctrl + a —->光標移動到行首
Ctrl + e —->光標移動到行尾
Ctrl + c —->終止當前程序
Ctrl + d —->若是光標前有字符則刪除,沒有則退出當前中斷
Ctrl + l —->清屏
Ctrl + u —->剪切光標之前的字符
Ctrl + k —->剪切光標之後的字符
Ctrl + y —->複製u/k的內容
Ctrl + r —->查找最近用過的命令
tab —->命令或路徑補全
Ctrl+shift+c —->複製
Ctrl+shift+v —->粘貼
# cat a.sh
#/bin/bash
cd /var/www/ && /bin/tar zcf /data/html-`date +%m-%d%H`.tar.gz html/
# crontab –e
00 00 * * * /bin/sh /root/a.sh
思而不學則殆
ls命令:列出目錄內容(List Directory Contents)的意思。運行它就是列出文件夾裏的內容,所列出的內容多是文件也多是文件夾。
「ls -l」命令:以詳情模式(long listing fashion)列出文件夾的內容。
「ls -a」命令:會列出文件夾裏的全部內容,包括以」.」開頭的隱藏文件。
2. lsblk命令
「lsblk」命令:列出塊設備。除了RAM外,以標準的樹狀輸出格式,整齊地顯示塊設備。
「lsblk -l」命令:以列表格式顯示塊設備(而不是樹狀格式)。
注意:lsblk是最有用和最簡單的方式來了解新插入的USB設備的名字,特別是當你在終端上處理磁盤/塊設備時。
3. md5sum命令
「md5sum」命令:計算和檢驗MD5信息簽名。
md5 checksum(一般叫作哈希)使用匹配或者驗證文件的文件的完整性,由於文件可能由於傳輸錯誤,磁盤錯誤或者無惡意的干擾等緣由而發生改變。
注意:用戶可使用官方提供的和md5sum生成簽名信息匹對以此檢測文件是否改變。Md5sum沒有sha1sum安全,這點咱們稍後討論。
4. dd命令
「dd」命令:轉換和複製文件。大多數時間是用來複制iso文件(或任何其它文件)到一個usb設備(或任何其它地方)中去,因此能夠用來製做USB啓動器。
「uname」命令就是Unix Name的簡寫。顯示機器名,操做系統和內核的詳細信息。
「history」命令:顯示在終端中所執行過的全部命令的歷史。
注意:按住「CTRL + R」就能夠搜索已經執行過的命令,它能夠你寫命令時自動補全。
7. sudo命令
「sudo」(super user do)命令:容許受權用戶執行超級用戶或者其它用戶的命令。經過在sudoers列表的安全策略來指定。
注意:sudo 容許用戶借用超級用戶的權限,然而」su」命令其實是容許用戶以超級用戶登陸。因此sudo比su更安全。
8. mkdir命令
「mkdir」(Make directory)命令:在命名路徑下建立新的目錄。然而若是目錄已經存在了,那麼它就會返回一個錯誤信息」不能建立文件夾,文件夾已經存在了」。(「cannot create folder, folder already exists」)
注意:目錄只能在用戶擁有寫權限的目錄下才能建立。mkdir:不能建立目錄tecmint,由於文件已經存在了。(上面的輸出中不要被文件迷惑了,你應該記住我開頭所說的-在linux中,文件,文件夾,驅動,命令,腳本都視爲文件)
9. touch 命令
「touch」命令表明了將文件的訪問和修改時間更新爲當前時間。touch命令只會在文件不存在的時候纔會建立它。若是文件已經存在了,它會更新時間戳,可是並不會改變文件的內容。
例:root@tecmint:~# touch filename
注意:touch 能夠用來在用戶擁有寫權限的目錄下建立不存在的文件。
「chmod」命令就是改變文件的模式位。chmod會根據要求的模式來改變每一個所給的文件,文件夾,腳本等等的文件模式(權限)。
在文件中存在三種類型的權限:
Read (r)=4
Write(w)=2
Execute(x)=1
因此若是你想給文件只讀權限,就設置爲‘4’;只寫權限,設置爲‘2’;只執行權限,設置爲‘1’; 讀寫權限,就是4+2 = 6, 以此類推。
注意:對於系統管理員和用戶來講,這個命令是最有用的命令之一了。在多用戶環境或者服務器上,對於某個用戶,若是設置了文件不可訪問,那麼這個命令就能夠解決,若是設置了錯誤的權限,那麼也就提供了爲受權的訪問。