Linux運維跳槽必備面試題

如何優化 Linux系統(可以不說太具體)?
1、root,添加普通用戶,通過sudo授權管理;2、更改默認的遠程連接SSH服務端口及禁止root用戶遠程連接;3、自動更新服務器時間;4、配置國內yum源;5、關閉selinux及iptables(iptables工作場景如果有外網IP一定要打開,高併發除外); 6、調整文件描述符的數量;7、精簡開機啓動服務(crond rsyslog network sshd);8、內核參數優化(/etc/sysctl.conf);9、更改字符集,支持中文,但建議還是用英文字符集,防止亂碼;10、鎖定關鍵系統文件;11、清空/etc/issue,去除系統及內核版本登錄前的屏幕顯示
請列舉出web服務器的負載架構:
答:Nginx、Haproxy、Keepalived、LVS
用tcpdump嗅探80端口的訪問看看誰最高:
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20
統計/var/log/httpd/access.log日誌訪問頻繁前十的地址,並從大到小排序。
cat access.log |cut -d" " -f1 |sort |uniq -c |sort -nr|head -n10
軟硬:{共性}:修改軟硬鏈接文件,所有的文件都是同步修改的。
硬鏈接: 本質:同一個文件多個名字、鏈接數:有一個以上的鏈接,不可跨分區,只允許對文件創建鏈接,不依賴原始文件,刪除硬鏈接文件的源文件,硬鏈接文件仍然存在,不佔用空間,格式:ln 目標文件 鏈接名 
軟連接:本質: 一個文件對應快捷方式,是不同文件,鏈接數:只有一個鏈接,可以跨分區,可以對目錄和文件夾進行鏈接,依賴於原始文件,刪除源文件,軟連接則指向一個空文件,它具有依賴性,佔用磁盤空間,格式: ln -s 目標文件 源文件
取IPV4地址:ifconfig ens33| grep -Eo "([0-9]{1,3}.){3}[0-9]{1,3}" head -1
取分區利用率:df | grep " /dev/sd " | grep -o " [0-9]{1,3}%" | grep -o " [0-9]+ " | sort -nr | head - n1
取分區利用率:sed -rn ' s/^([^[:space:]]+).([0-9]+)%./\2/p'
用戶:sed -rn ' s/^([^[:space:]]+).([0-9]+)%./\1/p'
查看版本型號: cut -d "." -f1 /etc/redhat-release |egrep -o "[0-9]+"
查看版本型號:grep -o " [0-9]+. " /etc/redhat-release | grep -o " [0-9]+ "
查看版本型號:sed -rn " s/.([0-9]+)../\1/p " /etc/redhat-release
匹配手機號碼:egrep -o " 1[0-9]{10} " tel.txt
匹配email郵箱:egrep -o "([[:alnum:]]|_)+@[[:alnum:]]+.com$" mail.txt
使用sed命令取IPV4地址:
1、|sed -n '2p' |sed -r 's/inet//' |sed -r 's/netmask.//' |tr -d " " 2、|sed -n '2p' sed -e 's/^.inet//' -e 's/.//' 3、|sed -n -e '2s/^.inet//' -e '2s/ .//p' 4、|sed -nr '[email protected] (.) .n.@\1@p' 5、|sed -nr '2s/[^0-9]+([0-9.]+)./\1/p'
快速查找/root目錄中大於2M的文本,並將文件中的magedu,換成www.magedu.com
find /root --size +2M -type f -exec sed -i 's/magedu/www.magedu.com/g' {} \;
三個私有地址網絡: A:10.0.0.0/8~10.255.255.255/8 B、172.16.0.0/16 ~ 172.31.255.255/16 16個地址用於內部 C、192.168.0.0/24 ~ 192.168.255.255/24 256個地址用於內部
闡述iptables的工作原理,四表五鏈:
iptables是工作在TCP/IP的2、3、4層,當主機收到一個數據包後,數據包先在內核空間處理,若發現目標地址是自身,則傳到用戶空間中交給對應的應用程序處理,若發現目標不是自身,則會將包丟棄或進行轉發,4表:raw表,mangle表,net表,filter表,5鏈:input、output、forward、prerouting、postrouting。
流入本機:PREROUTING --> INPUT-->用戶空間進程
流出本機:用戶空間進程 -->OUTPUT--> POSTROUTING
轉發:PREROUTING --> FORWARD --> POSTROUTING
mysql部分:四種隔離級別:
A、READ UNCOMMITTED(未提交讀),事務中的修改,即使沒有提交,對其他事務也都是可見的,事務可以讀取未提交的數據,也被稱爲髒讀(Dirty Read),這個級別會導致很多問題
B、READ COMMITTED(提交讀),大多數數據庫系統的默認隔離級別,一個事務開始時,只能“看見”已經提交的事務所做的修改,一個事務從開始直到提交之前,所做的任何修改對其他事務都是不可見的,也叫不可重複讀(nonrepeatable read),有可能出現幻讀(Phantom Read),指的是當某個事務在讀取某個範圍內的記錄時,另外一個事務又在該範圍內插入了新的記錄,當之前的事務再次讀取該範圍的記錄時,會產生幻行(Phantom Row)
C、REPEATABLE READ(可重複讀),通過InnoDB和XtraDB存儲引擎,是MySQL的默認事務隔離級別
D、SERIALIZABLE(可串行化)最高級別,通過強制事務串行執行,避免了幻讀問題,會在讀取的每一行數據上都加鎖,可能導致大量的超時和鎖爭用的問題。
Linux運維跳槽必備面試題
MySQL事務ACID:
原子性(atomicity):一個事務必須被視爲一個不可分割的最小工作單元,整個事務中所有操作要麼全部提交成功,要麼全部失敗回滾,對於一個事務來說,不可能只執行其中的一部分操作
一致性(consistency):數據庫總是從一個一致性的狀態轉換到另外一個一致性的狀態
隔離性(isolation):一個事務所做的修改在最終提交以前,對其他事務是不可見的
持久性(durability):一旦事務提交,則其所做的修改就會永久保存到數據庫中
MySQL索引的優點:
三個優點 索引大大減少了服務器需要掃描的數據量 索引可以幫助服務器避免排序和臨時表 * 索引可以將隨機I/O變爲順序I/O
什麼情況下應不建或少建索引
1、表記錄太少;2、經常插入、刪除、修改的表;3、數據重複且分佈平均的表字段,假如一個表有10萬行記錄,有一個字段A只有T和F兩種值,且每個值的分佈概率大約爲50%,那麼對這種表A字段建索引一般不會提高數據庫的查詢速度。4、經常和主字段一塊查詢但主字段索引值比較多的表字段
行級鎖定的優缺點
優點:1、當在許多線程中訪問不同的行時只存在少量鎖定衝突;2、回滾時只有少量的更改 3、可以長時間鎖定單一的行
缺點:1、比頁級或表級鎖定佔用更多的內存;2、當在表的大部分中使用時,比頁級或表級鎖定速度慢,因爲你必須獲取更多的鎖;3、如果你在大部分數據上經常進行GROUP BY操作或者必須經常掃描整個表,比其它鎖定明顯慢很多;4、用高級別鎖定,通過支持不同的類型鎖定,你也可以很容易地調節應用程序,因爲其鎖成本小於行級鎖定
key和index的區別
1、key是數據庫的物理結構,它包含兩層意義和作用,一是約束(偏重於約束和規範數據庫的結構完整性),二是索引(輔助查詢用的)。包括primary key,unique key,foregin key等
2、index是數據庫的物理結構,它只是輔助查詢的,它創建時會在另外的表空間(mysql中的innodb表空間)以一個類似目錄的結構存儲。索引要分類的話,分爲前綴索引、全文本索引等
Mysql主從配置:1、master開啓二進制日誌;2、master和slave配置不同的server_id;3、slave配置中繼日誌;4、master做賬戶授權;5、slave開啓同步。
MySQL主從同步過程
1:Slave端的IO線程連接上Master,並向Master請求指定日誌文件的指定位置(新部署的Master和Slave從最開始的日誌)之後的日誌。2:Master接收到來自Slave的IO線程請求,負責IO複製的IO線程根據Slave的請求信息讀取相應的日誌內容,然後將本地讀取的bin-log的文件名、位置及指定位置之後的內容一起返回給Slave的IO線程處理。 3:Slave的IO線程將接收到的信息依次添加到Slave端的relay-log文件的最末端,並將讀取到的Master端的bin-log的文件名和位置記錄到Master-info文件中,以便在下一次讀取的時候能夠清楚的告訴Master“我需要從哪個bin-log的哪個位置開始往後的日誌內容請發給我”。
4:Slave的sql線程檢查到relay-log中新增了內容後,會馬上將relay-log中的內容解析爲在Master端真實執行時候的可執行命令,並順序執行,從而保證對Slave的MySQL進行響應的增加或刪除等操作,最終實現和Master數據保持一致。
MySQL主從複製原理以及流程:
1. 主:binlog線程——記錄下所有改變了數據庫數據的語句,放進master上的binlog中;
2. 從:io線程——在使用start slave 之後,負責從master上拉取 binlog 內容,放進 自己的relay log中;
3. 從:sql執行線程——執行relay log中的語句;
MySQL數據庫自身提供的主從複製功能可以方便的實現數據的多處自動備份,實現數據庫的拓展。多個數據備份不僅可以加強數據的安全性,通過實現讀寫分離還能進一步提升數據庫的負載性能。
下圖就描述了一個多個數據庫間主從複製與讀寫分離的模型
Linux運維跳槽必備面試題
在一主多從的數據庫體系中,多個從服務器採用異步的方式更新主數據庫的變化,業務服務器在執行寫或者相關修改數據庫的操作是在主服務器上進行的,讀操作則是在各從服務器上進行。如果配置了多個從服務器或者多個主服務器又涉及到相應的負載均衡問題,關於負載均衡具體的技術細節還沒有研究過,今天就先簡單的實現一主一從的主從複製功能。
Linux運維跳槽必備面試題
MySQL之間數據複製的基礎是二進制日誌文件(binary log file)。一臺MySQL數據庫一旦啓用二進制日誌後,其作爲master,它的數據庫中所有操作都會以“事件”的方式記錄在二進制日誌中,其他數據庫作爲slave通過一個I/O線程與主服務器保持通信,並監控master的二進制日誌文件的變化,如果發現master二進制日誌文件發生變化,則會把變化複製到自己的中繼日誌中,然後slave的一個SQL線程會把相關的“事件”執行到自己的數據庫中,以此實現從數據庫和主數據庫的一致性,也就實現了主從複製。
Mysql中的myisam與innodb的區別
1、InooDB支持事務,而MyISAM不支持事務;2、InnoDB支持行級鎖,而MyISAM支持表級鎖;3、InnoDB支持MVCC,而MyISAM不支持;4、InnoDB支持外鍵,而MyISAM不支持;5、InnoDB不支持全文索引,而MyISAM支持
B樹和B+樹的區別
1、B樹,每個節點都存儲key和data,所有的節點組成這可樹,並且葉子節點指針爲null,葉子節點不包含任何關鍵字信息
Linux運維跳槽必備面試題
2、B+樹,所有的葉子節點中包含全部關鍵字的信息,及指向含有這些關鍵字記錄的指針,且葉子節點本身依關鍵字的大小自小到大的順序鏈接,所有的非終端節點可以看成是索引部分,節點中僅含有其子樹根節點中最大(或最小)關鍵字
Linux運維跳槽必備面試題
HTTP和Nginx的狀態碼解析:
1XX 它表示請求已經被接受,正在繼續處理,這種響應是臨時響應,不會返回響應體。
2XX 成功處理並返回,它表示在服務器內已經被接收,被知曉,並處理完成。
3XX 重定向功能,告知客戶端需要繼續執行操作纔可以完成請求。
4XX 出現問題,和客戶端有關係,比如401表示權限問題,404表示訪問了一個不存在的URL。
5XX 出現問題,和服務端有關,比如500表示內部錯誤,504表示請求超時。
在linux系統中,一般都會有swap內存,你覺得使用swap內存有什麼好處,在什麼情況下swap內存纔會被使用?你覺得在生產環境中要不要用swap內存?
答:好處:在內存不夠用的時候,將部分內存上的數據交換到swap空間上,以便讓系統不會因爲內存不夠用而導致緊急情況出現。
什麼情況下會用swap:當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存到swap空間中,等到那些程序要運行時,再從swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行swap交換。
簡述進程的啓動、終止的方式以及如何進行進程的查看:
答:在Linux中啓動一個進程有手工啓動和調度啓動兩種方式:
(1)手工啓動:用戶在輸入端發出命令,直接啓動一個進程的啓動方式。可以分爲:①前臺啓動:直接在SHELL中輸入命令進行啓動。②後臺啓動:啓動一個目前並不緊急的進程,如打印進程。
(2)調度啓動:系統管理員根據系統資源和進程佔用資源的情況,事先進行調度安排,指定任務運行的時間和場合,到時候系統會自動完成該任務。 經常使用的進程調度命令爲:at、batch、crontab。
什麼是靜態路由,其特點是什麼?什麼是動態路由,其特點是什麼?
答:靜態路由是由系統管理員設計與構建的路由表規定的路由。適用於網關數量有限的場合,且網絡拓樸結構不經常變化的網絡。其缺點是不能動態地適用網絡狀況的變化,當網絡狀況變化後必須由網絡管理員修改路由表。
動態路由是由路由選擇協議而動態構建的,路由協議之間通過交換各自所擁有的路由信息實時更新路由表的內容。動態路由可以自動學習網絡的拓樸結構,並更新路由表。其缺點是路由廣播更新信息將佔據大量的網絡帶寬。
簡述網絡文件系統NFS,並說明其作用:
答:網絡文件系統是應用層的一種應用服務,它主要應用於Linux和Linux系統、Linux和Unix系統之間的文件或目錄的共享。對於用戶而言可以通過 NFS方便的訪問遠地的文件系統,使之成爲本地文件系統的一部分。採用NFS之後省去了登錄的過程,方便了用戶訪問系統資源。
有狀態和無狀態的服務區別:
答:無狀態的HTTP協議:協議是指計算機通信網絡中兩臺計算機之間進行通信所必須共同遵守的規定或規則,超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器。HTTP協議是無狀態的協議。一旦數據交換完畢,客戶端與服務器端的連接就會關閉,再次交換數據需要建立新的連接。這就意味着服務器無法從連接上跟蹤會話。
有狀態就是多次訪問之間有關聯關係,需要記錄多次之間的訪問關係。
Redis集羣的原理,redis分片是怎麼實現的,公司redis用在了哪些環境?
答:redis 3.0版本之前是不支持集羣的,官方推薦最大的節點數量爲1000,至少需要3(Master)+3(Slave)才能建立集羣,是無中心的分佈式存儲架構,可以在多個節點之間進行數據共享,解決了Redis高可用、可擴展等問題。集羣可以將數據自動切分(split)到多個節點,當集羣中的某一個節點故障時,redis還可以繼續處理客戶端的請求。
redis分片:分片(partitioning)就是將你的數據拆分到多個 Redis 實例的過程,這樣每個實例將只包含所有鍵的子集。當數據量大的時候,把數據分散存入多個數據庫中,減少單節點的連接壓力,實現海量數據存儲。分片部署方式一般分爲以下三種:
(1)在客戶端做分片;這種方式在客戶端確定要連接的redis實例,然後直接訪問相應的redis實例;
(2)在代理中做分片;這種方式中,客戶端並不直接訪問redis實例,它也不知道自己要訪問的具體是哪個redis實例,而是由代理轉發請求和結果;其工作過程爲:客戶端先將請求發送給代理,代理通過分片算法確定要訪問的是哪個redis實例,然後將請求發送給相應的redis實例,redis實例將結果返回給代理,代理最後將結果返回給客戶端。
(3)在redis服務器端做分片;這種方式被稱爲“查詢路由”,在這種方式中客戶端隨機選擇一個redis實例發送請求,如果所請求的內容不再當前redis實例中它會負責將請求轉交給正確的redis實例,也有的實現中,redis實例不會轉發請求,而是將正確redis的信息發給客戶端,由客戶端再去向正確的redis實例發送請求。
redis用在:java、php環境用到redis,主要緩存有登錄用戶信息數據、設備詳情數據、會員簽到數據等。
你會使用哪些虛擬化技術?
答:vmware vsphere及kvm,我用得比較多的是vmware vsphere虛擬化,幾本上生產環境都用的vmware vsphere,kvm我是用在測試環境中使用。vmware 是屬於原生架構虛擬化技術,也就是可直接在硬件上運行。kvm屬於寄居架構的虛擬化技術,它是依託在系統之上運行。vmware vcenter管理上比較方便,圖形管理界面功能很強大,穩定性強,一般比較適合企業使用。KVM管理界面稍差點,需要管理人員花費點時間學習它的維護管理技術。
nginx中rewrite有哪幾個flag標誌位(last、break、redirect、permanent),說一下都什麼意思?常用的Nginx模塊,用來做什麼的?
答:last : 相當於Apache的[L]標記,表示完成當前的rewrite規則
break : 停止執行當前虛擬主機的後續rewrite指令集
redirect : 返回302臨時重定向,地址欄會顯示跳轉後的地址
permanent : 返回301永久重定向,地址欄會顯示跳轉後的地址、
301和302不能簡單的只返回狀態碼,還必須有重定向的URL,這就是return指令無法返回301,302的原因了。這裏 last 和 break 區別有點難以理解:
last一般寫在server和if中,而break一般使用在location中
last不終止重寫後的url匹配,即新的url會再從server走一遍匹配流程,而break終止重寫後匹配
break和last都能組織繼續執行後面的rewrite指令
1、rewrite模塊,實現重寫功能 2、access模塊:來源控制 3、ssl模塊:安全加密 4、ngx_http_gzip_module:網絡傳輸壓縮模塊 5、ngx_http_proxy_module 模塊實現代理 6、ngx_http_upstream_module模塊實現定義後端服務器列表 7、ngx_cache_purge實現緩存清除功能
什麼是運維:
運維是指大型組織已經建立好的網絡軟硬件的維護,就是要保證業務的上線與運作的正常,
在他運轉的過程中,對他進行維護,他集合了網絡、系統、數據庫、開發、安全、監控於一身的技術
運維又包括很多種,有DBA運維、網站運維、虛擬化運維、監控運維、遊戲運維等等。
現在給你三百臺服務器,你怎麼對他們進行管理?
管理3百臺服務器的方式:
1)設定跳板機,使用統一賬號登錄,便於安全與登錄的考量。
2)使用salt、ansiable、puppet進行系統的統一調度與配置的統一管理。
3)建立簡單的服務器的系統、配置、應用的cmdb信息管理。便於查閱每臺服務器上的各種信息記錄。
簡述raid0 raid1 raid5 三種工作模式的工作原理及特點:
RAID,可以把硬盤整合成一個大磁盤,還可以在大磁盤上再分區,放數據,還有一個大功能,多塊盤放在一起可以有冗餘(備份)
RAID整合方式有很多,常用的:0 1 5 10
RAID 0,可以是一塊盤和N個盤組合
優點:讀寫快,是RAID中最好的 缺點:沒有冗餘,一塊壞了數據就全沒有了
RAID 1,只能2塊盤,盤的大小可以不一樣,以小的爲準;10G+10G只有10G,另一個做備份。它有100%的冗餘,缺點:浪費資源,成本高
RAID 5,3塊盤,容量計算10*(n-1),允許損失一塊盤特點,讀寫性能一般,讀還好一點,寫不好
冗餘從好到壞:RAID1 RAID10 RAID 5 RAID0
性能從好到壞:RAID0 RAID10 RAID5 RAID1
成本從低到高:RAID0 RAID5 RAID1 RAID10

單臺服務器:很重要盤不多,系統盤,RAID1
數據庫服務器:主庫:RAID10 從庫 RAID5RAID0(爲了維護成本,RAID10)
WEB服務器,如果沒有太多的數據的話,RAID5,RAID0(單盤)
有多臺,監控、應用服務器,RAID0 RAID5
LVS、Nginx、HAproxy有什麼區別?工作中你怎麼選擇?
答:LVS: 是基於四層的轉發;HAproxy:是基於四層和七層的轉發,是專業的代理服務器;Nginx:是WEB服務器,緩存服務器,又是反向代理服務器,可以做七層的轉發
區別: LVS由於是基於四層的轉發所以只能做端口的轉發;而基於URL的、基於目錄的這種轉發LVS就不行
工作選擇:
HAproxy和Nginx由於可以做七層的轉發,所以URL和目錄的轉發都可以做;在很大併發量的時候我們就要選擇LVS,像中小型公司的話併發量沒那麼大;選擇HAproxy或者Nginx足已,由於HAproxy由是專業的代理服務器;配置簡單,所以中小型企業推薦使用HAproxy。
什麼是中間件?什麼是jdk?
中間件:是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不同的技術之間共享資源;中間件位於客戶機/ 服務器的操作系統之上,管理計算機資源和網絡通訊;是連接兩個獨立應用程序或獨立系統的軟件。相連接的系統即使它們具有不同的接口;但通過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞;通過中間件,應用程序可以工作於多平臺或OS環境。
jdk:jdk是Java的開發工具包;它是一種用於構建在 Java 平臺上發佈的應用程序、applet 和組件的開發環境。
Tomcat8005、8009、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, 然後發給請求的服務器,保存一份之後,再發給客戶端。
RabbitMQ是什麼東西?
答:RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程中保存消息的容器;消息中間件再將消息從它的源中到它的目標中標時充當中間人的作用;隊列的主要目的是提供路由並保證消息的傳遞;如果發送消息時接收者不可用;消息隊列不會保留消息,直到可以成功地傳遞爲止,當然,消息隊列保存消息也是有期限地。
Keepalived的工作原理?如何做健康檢查
答:在一個虛擬路由器中,只有作爲MASTER的VRRP路由器會一直髮送VRRP通告信息,BACKUP不會搶佔MASTER,除非它的優先級更高。當MASTER不可用時(BACKUP收不到通告信息),多臺BACKUP中優先級最高的這臺會被搶佔爲MASTER。這種搶佔是非常快速的(<1s),以保證服務的連續性;由於安全性考慮,VRRP包使用了加密協議進行加密。BACKUP不會發送通告信息,只會接收通告信息。
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 #連接間隔時間
}
講述一下LVS三種模式的工作過程?
LVS 有三種負載均衡的模式,分別是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)
一、NAT模式(VS-NAT):
原理:就是把客戶端發來的數據包的IP頭的目的地址,在負載均衡器上換成其中一臺RS的IP地址;併發至此RS來處理,RS處理完後把數據交給負載均衡器,負載均衡器再把數據包原IP地址改爲自己的IP;將目的地址改爲客戶端IP地址即可期間,無論是進來的流量,還是出去的流量,都必須經過負載均衡器。
優點:集羣中的物理服務器可以使用任何支持TCP/IP操作系統,只有負載均衡器需要一個合法的IP地址。
缺點:擴展性有限。當服務器節點(普通PC服務器)增長過多時,負載均衡器將成爲整個系統的瓶頸;因爲所有的請求包和應答包的流向都經過負載均衡器。當服務器節點過多時;大量的數據包都交匯在負載均衡器那,速度就會變慢!
二、IP隧道模式(VS-TUN)
原理:首先要知道,互聯網上的大多Internet服務的請求包很短小,而應答包通常很大;那麼隧道模式就是,把客戶端發來的數據包,封裝一個新的IP頭標記(僅目的IP)發給RS;RS收到後,先把數據包的頭解開,還原數據包,處理後,直接返回給客戶端,不需要再經過負載均衡器。注意,由於RS需要對負載均衡器發過來的數據包進行還原,所以說必須支持 IP TUNNEL協議,所以,在RS的內核中,必須編譯支持IPTUNNEL這個選項。
優點:負載均衡器只負責將請求包分發給後端節點服務器,而RS將應答包直接發給用戶;所以,減少了負載均衡器的大量數據流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量;這種方式,一臺負載均衡器能夠爲很多RS進行分發。而且跑在公網上就能進行不同地域的分發。
缺點:隧道模式的RS節點需要合法IP,這種方式需要所有的服務器支持 ”IP Tunneling” (IP Encapsulation)協議,服務器可能只侷限在部分Linux系統上。
三、直接路由模式(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如何定位鎖問題,mysql如何減少主從複製延遲?
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中取一臺專用的服務器。
    MySQL數據庫主從同步延遲解決方案
    最簡單的減少slave同步延時的方案就是在架構上做優化,儘量讓主庫的DDL快速執行;還有就是主庫是寫,對數據安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit= 1 之類的設置,而slave則不需要這麼高的數據安全,完全可以講sync_binlog設置爲0或者關閉binlog。innodb_flushlog也可以設置爲0來提高sql的執行效率。另外就是使用比主庫更好的硬件設備作爲slave。
    如何重置mysql root密碼?
    答:一、在已知MYSQL數據庫的ROOT用戶密碼的情況下,修改密碼的方法:
    1、在SHELL環境下,使用mysqladmin命令設置: mysqladmin –u root –p password “新密碼” 回車後要求輸入舊密碼
    2、在mysql>環境中,使用update命令,直接更新mysql庫user表的數據: Update mysql.user set password=password(‘新密碼’) where user=’root’; / flush privileges; 注意:mysql語句要以分號”;”結束
    3、在mysql>環境中,使用grant命令,修改root用戶的授權權限。
    grant all on . to root@’localhost’ identified by ‘新密碼’;
    忘記了mysql數據庫的ROOT用戶的密碼,又如何做呢?方法如下:
    1、關閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加爲系統服務)
    2、使用mysqld_safe腳本以安全模式(不加載授權表)啓動mysqld 服務 /usr/local/mysql/bin/mysqld_safe --skip-grant-table &
    3、使用空密碼的root用戶登錄數據庫,重新設置ROOT用戶的密碼 #mysql -u root / Mysql> Update mysql.user set password=password(‘新密碼’) where user=’root’;
    Mysql> flush privileges;
    lvs/nginx/haproxy優缺點
    Nginx的優點是
    1、工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構;它的正則規則比HAProxy更爲強大和靈活,這也是它目前廣泛流行的主要原因之一;Nginx單憑這點可利用的場合就遠多於LVS了。
    2、Nginx對網絡穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一;相反LVS對網絡穩定性依賴比較大,這點本人深有體會;
    3、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌打印出來;LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。
    4、可以承擔高負載壓力且穩定,在硬件不差的情況下一般能支撐幾萬次的併發量,負載度比LVS相對小些。
    5、Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測。比如用戶正在上傳一個文件,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一臺服務器重新處理,而LVS就直接斷掉了;如果是上傳一個很大的文件或者很重要的文件的話,用戶可能會因此而不滿。
    6、Nginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器;LNMP也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。
    7、Nginx現在作爲Web反向加速緩存越來越成熟了,速度比傳統的Squid服務器更快,可考慮用其作爲反向代理加速器
    8、Nginx可作爲中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了;不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍。
    9、Nginx也可作爲靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區非常活躍,第三方模塊也很多。
    Nginx的缺點是:
    1、Nginx僅能支持http、https和Email協議,這樣就在適用範圍上面小些,這個是它的缺點。
    2、對後端服務器的健康檢查,只支持通過端口來檢測,不支持通過url來檢測;不支持Session的直接保持,但能通過ip_hash來解決;
    LVS:使用Linux內核集羣實現一個高性能、高可用的負載均衡服務器;它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)
    LVS的優點是:
    1、抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生;這個特點也決定了它在負載均衡軟件裏的性能最強的,對內存和cpu資源消耗比較低;
    2、配置性比較低,這是一個缺點也是一個優點,因爲沒有可太多配置的東西;所以並不需要太多接觸,大大減少了人爲出錯的機率
    3、工作穩定,因爲其本身抗負載能力很強,自身有完整的雙機熱備方案:如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived、
    4、無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。
    5、應用範圍較廣,因爲LVS工作在4層,所以它幾乎可對所有應用做負載均衡,包括http、數據庫、在線聊天室等
    LVS的缺點是:
    1、軟件本身不支持正則表達式處理,不能做動靜分離;而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在;
    2、如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了;後面有Windows Server的機器的話,如果實施及配置還有維護過程就比較複雜了相對而言,Nginx/HAProxy+Keepalived就簡單多了。
    HAProxy的特點是:
    1、HAProxy也是支持虛擬主機的。
    2、HAProxy的優點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導;同時支持通過獲取指定的url來檢測後端服務器的狀態。
    3、HAProxy跟LVS類似,本身就只是一款負載均衡軟件;單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的。
    4、HAProxy支持TCP協議的負載均衡轉發,可以對MySQL讀進行負載均衡;對後端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡。
    5、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請求。
    mysql數據備份工具
    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功能,啓用之後可以支持單獨的表備份。
    簡述raid0 raid1 raid5 三種工作模式的工作原理及特點
    RAID 0:帶區卷,連續以位或字節爲單位分割數據,並行讀/寫於多個磁盤上,因此具有很高的數據傳輸率;但它沒有數據冗餘,RAID 0 只是單純地提高性能,並沒有爲數據的可靠性提供保證;而且其中的一個磁盤失效將影響到所有數據。因此,RAID 0 不能應用於數據安全性要求高的場合。
    RAID 1:鏡像卷,它是通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據;不能提升寫數據效率。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID1 可以提高讀取性能;RAID 1 是磁盤陣列中單位成本最高的,鏡像卷可用容量爲總容量的1/2,但提供了很高的數據安全性和可用性;當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。
    RAID5:至少由3塊硬盤組成,分佈式奇偶校驗的獨立磁盤結構,它的奇偶校驗碼存在於所有磁盤上;任何一個硬盤損壞,都可以根據其它硬盤上的校驗位來重建損壞的數據(最多允許1塊硬盤損壞);所以raid5可以實現數據冗餘,確保數據的安全性,同時raid5也可以提升數據的讀寫性能。
    說說TCP/IP的七層模型
    應用層 (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模型中最低的一層;物理層規定:爲傳輸數據所需要的物理鏈路創建、維持、拆除而提供具有機械的,電子的,功能的和規範的特性;簡單的說,物理層確保原始的數據可在各種物理媒體上傳輸。局域網與廣域網皆屬第1、2層;物理層是OSI的第一層,它雖然處於最底層,卻是整個開放系統的基礎;物理層爲設備之間的數據通信提供傳輸媒體及互連設備,爲數據傳輸提供可靠的環境;如果您想要用盡量少的詞來記住這個第一層,那就是“信號和介質”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章