1糜烹、請簡述 OSI 七層網(wǎng)絡(luò)模型有哪些層及各自的含義违诗?
物理層:底層數(shù)據(jù)傳輸,比如網(wǎng)線景图、網(wǎng)卡標(biāo)準(zhǔn)
數(shù)據(jù)鏈路層:定義數(shù)據(jù)的基本格式较雕,如何傳輸,如何標(biāo)識挚币。比如網(wǎng)卡 MAC 地址
網(wǎng)絡(luò)層:定義 IP 編碼,定義路由功能扣典,比如不同設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)
傳輸層:端到端傳輸數(shù)據(jù)的基本功能妆毕,比如 TCP、UDP
會話層:控制應(yīng)用程序之間會話能力贮尖,比如不同軟件數(shù)據(jù)分發(fā)給不停軟件
表示層:數(shù)據(jù)格式標(biāo)識笛粘,基本壓縮加密功能。
應(yīng)用層:各種應(yīng)用軟件湿硝,包括 Web 應(yīng)用薪前。
2、在 Linux 的 LVM 分區(qū)格式下关斜,請簡述給根分區(qū)磁盤擴容的步驟示括?
這個分 3 種
第一種方法:
growpart/dev/vda1resize2fs/dev/vda1
第二種方法:
partpeobe/dev/sdaresize2fs?/dev/vda1
第三種方法:
fdisk?/dev/sdb#?n?p?1?1?回車?回車?t?8e?wpvcreate?/dev/sdb1vgextend?datavg?/dev/sdb1lvextend?-r?-L?+100%free?/dev/mapper/datavg-lv01
3、講述一下 Tomcat8005痢畜、8009垛膝、8080 三個端口的含義鳍侣?
8005 關(guān)閉時使用
8009 為 AJP 端口,即容器使用吼拥,如 Apache 能通過 AJP 協(xié)議訪問 Tomcat 的 8009 端口來實現(xiàn)功能
8080 一般應(yīng)用使用
4倚聚、簡述 DNS 進行域名解析的過程?
迭代查詢(返回最優(yōu)結(jié)果)凿可、遞歸查詢(本地找 DNS)用戶要訪問 www.baidu.com惑折,會先找本機的 host 文件,再找本地設(shè)置的 DNS 服務(wù)器枯跑,如果也沒有找到唬复,就去網(wǎng)絡(luò)中找根服務(wù)器,根服務(wù)器反饋結(jié)果全肮,說只能提供一級域名服務(wù)器.cn敞咧,就去找一級域名服務(wù)器,一級域名服務(wù)器說只能提供二級域名服務(wù)器.com.cn, 就去找二級域名服務(wù)器辜腺,二級域服務(wù)器只能提供三級域名服務(wù)器.baidu.com.cn休建,就去找三級域名服務(wù)器,三級域名服務(wù)器正好有這個網(wǎng)站 www.baidu.com评疗,然后發(fā)給請求的服務(wù)器测砂,保存一份之后,再發(fā)給客戶端百匆。
5砌些、講一下 Keepalived 的工作原理?
在一個虛擬路由器中加匈,只有作為 MASTER 的 VRRP (虛擬路由冗余協(xié)議) 路由器會一直發(fā)送 VRRP 通告信息存璃,BACKUP 不會搶占 MASTER,除非它的優(yōu)先級更高雕拼。當(dāng) MASTER 不可用時 (BACKUP 收不到通告信息) 多臺 BACKUP 中優(yōu)先級最高的這臺會被搶占為 MASTER纵东。這種搶占是非常快速的 (<1s)啥寇,以保證服務(wù)的連續(xù)性由于安全性考慮音五,VRRP 包使用了加密協(xié)議進行加密半抱。BACKUP 不會發(fā)送通告信息啼县,只會接收通告信息凝赛。
6、LVS磷醋、Nginx猫牡、HAproxy 有什么區(qū)別?工作中你怎么選擇子檀?
LVS:
抗負(fù)載能力強镊掖、工作在第 4 層僅作分發(fā)之用乃戈,沒有流量的產(chǎn)生,這個特點也決定了它在負(fù)載均衡軟件里的性能最強的亩进;無流量症虑,同時保證了均衡器 IO 的性能不會受到大流量的影響;
工作穩(wěn)定归薛,自身有完整的雙機熱備方案谍憔,如 LVS+Keepalived 和 LVS+Heartbeat;
應(yīng)用范圍比較廣主籍,可以對所有應(yīng)用做負(fù)載均衡习贫;
配置簡單,因為沒有可太多配置的東西千元,所以并不需要太多接觸苫昌,大大減少了人為出錯的幾率;
LVS 的缺點:
軟件本身不支持正則處理幸海,不能做動靜分離祟身,這就凸顯了 Nginx/HAProxy+Keepalived 的優(yōu)勢。
如果網(wǎng)站應(yīng)用比較龐大物独,LVS/DR+Keepalived 就比較復(fù)雜了袜硫,特別是后面有 Windows Server 應(yīng)用的機器挡篓,實施及配置還有維護過程就比較麻煩阀参,相對而言,Nginx/HAProxy+Keepalived 就簡單多了衙荐。
Nginx:
工作在第 7 層,應(yīng)用層,可以針對 http 應(yīng)用做一些分流的策略。比如針對域名、目錄結(jié)構(gòu)况既。它的正則比 HAProxy 更為強大和靈活癞尚;
Nginx 對網(wǎng)絡(luò)的依賴非常小,理論上能 ping 通就就能進行負(fù)載功能
Nginx 安裝和配置簡單
可以承擔(dān)高的負(fù)載壓力且穩(wěn)定爪瓜,一般能支撐超過幾萬次的并發(fā)量丹喻;
Nginx 不僅僅是一款優(yōu)秀的負(fù)載均衡器 / 反向代理軟件概行,它同時也是功能強大的 Web 應(yīng)用服務(wù)器占锯。Nginx 在處理靜態(tài)頁面、特別是抗高并發(fā)方面相對 apache 有優(yōu)勢缩筛;
Nginx 作為 Web 反向代理加速緩存越來越成熟消略,速度比傳統(tǒng)的 Squid 服務(wù)器更快
Nginx 的缺點:
Nginx 不支持 url 來檢測。
Nginx 僅能支持 http瞎抛、https 和 Email 協(xié)議
Nginx 的 Session 的保持艺演,Cookie 的引導(dǎo)能力相對欠缺。
HAProxy:
HAProxy 是支持虛擬主機的桐臊,可以工作在 4胎撤、7 層 (支持多網(wǎng)段);
能夠補充 Nginx 的一些缺點比如 Session 的保持断凶,Cookie 的引導(dǎo)等工作伤提;
支持 url 檢測后端的服務(wù)器;
它跟 LVS 一樣认烁,本身僅僅就只是一款負(fù)載均衡軟件肿男;單純從效率上來講 HAProxy 更會比 Nginx 有更出色的負(fù)載均衡速度,在并發(fā)處理上也是優(yōu)于 Nginx 的却嗡;
HAProxy 可以對 Mysql 讀進行負(fù)載均衡舶沛,對后端的 MySQL 節(jié)點進行檢測和負(fù)載均衡,不過在后端的 MySQL slaves 數(shù)量超過 10 臺時性能不如 LVS窗价;
HAProxy 的算法較多如庭,達到 8 種;
工作選擇:
HAproxy 和 Nginx 由于可以做七層的轉(zhuǎn)發(fā)撼港,所以 URL 和目錄的轉(zhuǎn)發(fā)都可以做在很大并發(fā)量的時候我們就要選擇 LVS坪它,像中小型公司的話并發(fā)量沒那么大選擇 HAproxy 或者 Nginx 足已,由于 HAproxy 由是專業(yè)的代理服務(wù)器配置簡單帝牡,所以中小型企業(yè)推薦使用 HAproxy哟楷。
7、docker 的工作原理是什么否灾,講一下
docker 是一個 Client-Server 結(jié)構(gòu)的系統(tǒng),docker 守護進程運行在宿主機上鸣奔,守護進程從客戶端接受命令并管理運行在主機上的容器墨技,容器是一個運行時環(huán)境惩阶,這就是我們說的集裝箱。
8扣汪、docker 的組成包含哪幾大部分
一個完整的 docker 有以下幾個部分組成:
docker client断楷,客戶端,為用戶提供一系列可執(zhí)行命令崭别,用戶用這些命令實現(xiàn)跟 docker daemon 交互冬筒;
docker daemon,守護進程茅主,一般在宿主主機后臺運行舞痰,等待接收來自客戶端的請求消息;
docker image诀姚,鏡像响牛,鏡像 run 之后就生成為 docker 容器;
docker container赫段,容器呀打,一個系統(tǒng)級別的服務(wù),擁有自己的 ip 和系統(tǒng)目錄結(jié)構(gòu)糯笙;運行容器前需要本地存在對應(yīng)的鏡像贬丛,如果本地不存在該鏡像則就去鏡像倉庫下載。
docker 使用客戶端 - 服務(wù)器 (C/S) 架構(gòu)模式给涕,使用遠程 api 來管理和創(chuàng)建 docker 容器豺憔。docker 容器通過 docker 鏡像來創(chuàng)建。容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶ο笈c類稠炬。
9焕阿、docker 與傳統(tǒng)虛擬機的區(qū)別什么?
傳統(tǒng)虛擬機是需要安裝整個操作系統(tǒng)的首启,然后再在上面安裝業(yè)務(wù)應(yīng)用暮屡,啟動應(yīng)用,通常需要幾分鐘去啟動應(yīng)用毅桃,而 docker 是直接使用鏡像來運行業(yè)務(wù)容器的褒纲,其容器啟動屬于秒級別;
Docker 需要的資源更少钥飞,Docker 在操作系統(tǒng)級別進行虛擬化莺掠,Docker 容器和內(nèi)核交互,幾乎沒有性能損耗读宙,而虛擬機運行著整個操作系統(tǒng)彻秆,占用物理機的資源就比較多;
Docker 更輕量,Docker 的架構(gòu)可以共用一個內(nèi)核與共享應(yīng)用程序庫唇兑,所占內(nèi)存極芯贫洹;同樣的硬件環(huán)境扎附,Docker 運行的鏡像數(shù)遠多于虛擬機數(shù)量蔫耽,對系統(tǒng)的利用率非常高;
與虛擬機相比留夜,Docker 隔離性更弱匙铡,Docker 屬于進程之間的隔離,虛擬機可實現(xiàn)系統(tǒng)級別隔離碍粥;
Docker 的安全性也更弱鳖眼,Docker 的租戶 root 和宿主機 root 相同,一旦容器內(nèi)的用戶從普通用戶權(quán)限提升為 root 權(quán)限即纲,它就直接具備了宿主機的 root 權(quán)限具帮,進而可進行無限制的操作。虛擬機租戶 root 權(quán)限和宿主機的 root 虛擬機權(quán)限是分離的低斋,并且虛擬機利用如 Intel 的 VT-d 和 VT-x 的 ring-1 硬件隔離技術(shù)蜂厅,這種技術(shù)可以防止虛擬機突破和彼此交互,而容器至今還沒有任何形式的硬件隔離膊畴;
Docker 的集中化管理工具還不算成熟掘猿,各種虛擬化技術(shù)都有成熟的管理工具,比如:VMware vCenter 提供完備的虛擬機管理能力唇跨;
Docker 對業(yè)務(wù)的高可用支持是通過快速重新部署實現(xiàn)的稠通,虛擬化具備負(fù)載均衡,高可用买猖、容錯改橘、遷移和數(shù)據(jù)保護等經(jīng)過生產(chǎn)實踐檢驗的成熟保障機制,Vmware 可承諾虛擬機 99.999% 高可用玉控,保證業(yè)務(wù)連續(xù)性飞主;
虛擬化創(chuàng)建是分鐘級別的,Docker 容器創(chuàng)建是秒級別的高诺,Docker 的快速迭代性碌识,決定了無論是開發(fā)、測試虱而、部署都可以節(jié)省大量時間筏餐;
虛擬機可以通過鏡像實現(xiàn)環(huán)境交付的一致性,但鏡像分發(fā)無法體系化牡拇,Docker 在 Dockerfile 中記錄了容器構(gòu)建過程魁瞪,可在集群中實現(xiàn)快速分發(fā)和快速部署穆律。from wljslmz
10、docker 技術(shù)的三大核心概念是什么佩番?
鏡像:鏡像是一種輕量級众旗、可執(zhí)行的獨立軟件包,它包含運行某個軟件所需的所有內(nèi)容趟畏,我們把應(yīng)用程序和配置依賴打包好形成一個可交付的運行環(huán)境 (包括代碼、運行時需要的庫滩租、環(huán)境變量和配置文件等)赋秀,這個打包好的運行環(huán)境就是 image 鏡像文件。
容器:容器是基于鏡像創(chuàng)建的律想,是鏡像運行起來之后的一個實例猎莲,容器才是真正運行業(yè)務(wù)程序的地方。如果把鏡像比作程序里面的類技即,那么容器就是對象著洼。
鏡像倉庫:存放鏡像的地方,研發(fā)工程師打包好鏡像之后需要把鏡像上傳到鏡像倉庫中去而叼,然后就可以運行有倉庫權(quán)限的人拉取鏡像來運行容器了身笤。
11、centos 鏡像幾個 G葵陵,但是 docker centos 鏡像才幾百兆液荸,這是為什么?
一個完整的 Linux 操作系統(tǒng)包含 Linux 內(nèi)核和 rootfs 根文件系統(tǒng)脱篙,即我們熟悉的 /dev娇钱、/proc/、/bin 等目錄绊困。我們平時看到的 centOS 除了 rootfs文搂,還會選裝很多軟件,服務(wù)秤朗,圖形桌面等煤蹭,所以 centOS 鏡像有好幾個 G 也不足為奇。
而對于容器鏡像而言川梅,所有容器都是共享宿主機的 Linux 內(nèi)核的疯兼,而對于 docker 鏡像而言,docker 鏡像只需要提供一個很小的 rootfs 即可贫途,只需要包含最基本的命令吧彪,工具,程序庫即可丢早,所有 docker 鏡像才會這么小姨裸。
12秧倾、講一下鏡像的分層結(jié)構(gòu)以及為什么要使用鏡像的分層結(jié)構(gòu)?
一個新的鏡像其實是從 base 鏡像一層一層疊加生成的傀缩。每安裝一個軟件那先,dockerfile 中使用 RUM 命令,就會在現(xiàn)有鏡像的基礎(chǔ)上增加一層赡艰,這樣一層一層的疊加最后構(gòu)成整個鏡像售淡。所以我們 docker pull 拉取一個鏡像的時候會看到 docker 是一層層拉去的。
分層機構(gòu)最大的一個好處就是 :共享資源慷垮。比如:有多個鏡像都從相同的 base 鏡像構(gòu)建而來揖闸,那么 Docker Host 只需在磁盤上保存一份 base 鏡像;同時內(nèi)存中也只需加載一份 base 鏡像料身,就可以為所有容器服務(wù)了汤纸。而且鏡像的每一層都可以被共享。
13芹血、講一下容器的 copy-on-write 特性贮泞,修改容器里面的內(nèi)容會修改鏡像嗎?
我們知道幔烛,鏡像是分層的啃擦,鏡像的每一層都可以被共享,同時说贝,鏡像是只讀的议惰。當(dāng)一個容器啟動時,一個新的可寫層被加載到鏡像的頂部乡恕,這一層通常被稱作 “容器層”言询,“容器層” 之下的都叫 “鏡像層”。
所有對容器的改動 - 無論添加傲宜、刪除运杭、還是修改文件,都只會發(fā)生在容器層中函卒,因為只有容器層是可寫的辆憔,容器層下面的所有鏡像層都是只讀的。鏡像層數(shù)量可能會很多报嵌,所有鏡像層會聯(lián)合在一起組成一個統(tǒng)一的文件系統(tǒng)虱咧。如果不同層中有一個相同路徑的文件,比如 /a锚国,上層的 /a 會覆蓋下層的 /a腕巡,也就是說用戶只能訪問到上層中的文件 /a。在容器層中血筑,用戶看到的是一個疊加之后的文件系統(tǒng)绘沉。
添加文件:在容器中創(chuàng)建文件時煎楣,新文件被添加到容器層中。
讀取文件:在容器中讀取某個文件時车伞,Docker 會從上往下依次在各鏡像層中查找此文件择懂。一旦找到,立即將其復(fù)制到容器層另玖,然后打開并讀入內(nèi)存困曙。
修改文件:在容器中修改已存在的文件時,Docker 會從上往下依次在各鏡像層中查找此文件日矫。一旦找到赂弓,立即將其復(fù)制到容器層,然后修改之哪轿。
刪除文件:在容器中刪除文件時,Docker 也是從上往下依次在鏡像層中查找此文件翔怎。找到后窃诉,會在容器層中記錄下此刪除操作。
只有當(dāng)需要修改時才復(fù)制一份數(shù)據(jù)赤套,這種特性被稱作 Copy-on-Write飘痛。可見容握,容器層保存的是鏡像變化的部分宣脉,不會對鏡像本身進行任何修改。
14剔氏、簡單描述一下 Dockerfile 的整個構(gòu)建鏡像過程
首先塑猖,創(chuàng)建一個目錄用于存放應(yīng)用程序以及構(gòu)建過程中使用到的各個文件等;
然后谈跛,在這個目錄下創(chuàng)建一個 Dockerfile 文件羊苟,一般建議 Dockerfile 的文件名就是 Dockerfile;
編寫 Dockerfile 文件感憾,編寫指令蜡励,如,使用 FORM 指令指定基礎(chǔ)鏡像阻桅,COPY 指令復(fù)制文件凉倚,RUN 指令指定要運行的命令,ENV 設(shè)置環(huán)境變量嫂沉,EXPOSE 指定容器要暴露的端口稽寒,WORKDIR 設(shè)置當(dāng)前工作目錄,CMD 容器啟動時運行命令输瓜,等等指令構(gòu)建鏡像瓦胎;
Dockerfile 編寫完成就可以構(gòu)建鏡像了芬萍,使用 docker build -t 鏡像名:tag . 命令來構(gòu)建鏡像,最后一個點是表示當(dāng)前目錄搔啊,docker 會默認(rèn)尋找當(dāng)前目錄下的 Dockerfile 文件來構(gòu)建鏡像柬祠,如果不使用默認(rèn),可以使用 - f 參數(shù)來指定 dockerfile 文件负芋,如:docker build -t 鏡像名:tag -f /xx/xxx/Dockerfile 漫蛔;
使用 docker build 命令構(gòu)建之后,docker 就會將當(dāng)前目錄下所有的文件發(fā)送給 docker daemon旧蛾,順序執(zhí)行 Dockerfile 文件里的指令莽龟,在這過程中會生成臨時容器,在臨時容器里面安裝 RUN 指定的命令锨天,安裝成功后毯盈,docker 底層會使用類似于 docker commit 命令來將容器保存為鏡像,然后刪除臨時容器病袄,以此類推搂赋,一層層的構(gòu)建鏡像,運行臨時容器安裝軟件益缠,直到最后的鏡像構(gòu)建成功脑奠。
15、Dockerfile 構(gòu)建鏡像出現(xiàn)異常幅慌,如何排查宋欺?
首先,Dockerfile 是一層一層的構(gòu)建鏡像胰伍,期間會產(chǎn)生一個或多個臨時容器齿诞,構(gòu)建過程中其實就是在臨時容器里面安裝應(yīng)用,如果因為臨時容器安裝應(yīng)用出現(xiàn)異常導(dǎo)致鏡像構(gòu)建失敗喇辽,這時容器雖然被清理掉了掌挚,但是期間構(gòu)建的中間鏡像還在,那么我們可以根據(jù)異常時上一層已經(jīng)構(gòu)建好的臨時鏡像菩咨,將臨時鏡像運行為容器吠式,然后在容器里面運行安裝命令來定位具體的異常。
16抽米、Dockerfile 的基本指令有哪些特占?
FROM?指定基礎(chǔ)鏡像(必須為第一個指令,因為需要指定使用哪個基礎(chǔ)鏡像來構(gòu)建鏡像)云茸;
MAINTAINER?設(shè)置鏡像作者相關(guān)信息是目,如作者名字,日期标捺,郵件懊纳,聯(lián)系方式等揉抵;
COPY?復(fù)制文件到鏡像;
ADD?復(fù)制文件到鏡像(ADD 與 COPY 的區(qū)別在于嗤疯,ADD 會自動解壓 tar冤今、zip、tgz茂缚、xz 等歸檔文件戏罢,而 COPY 不會,同時 ADD 指令還可以接一個 url 下載文件地址脚囊,一般建議使用 COPY 復(fù)制文件即可龟糕,文件在宿主機上是什么樣子復(fù)制到鏡像里面就是什么樣子這樣比較好);
ENV?設(shè)置環(huán)境變量悔耘;
EXPOSE?暴露容器進程的端口讲岁,僅僅是提示別人容器使用的哪個端口,沒有過多作用衬以;
VOLUME?數(shù)據(jù)卷持久化催首,掛載一個目錄;
WORKDIR?設(shè)置工作目錄泄鹏,如果目錄不在,則會自動創(chuàng)建目錄秧耗;
RUN?在容器中運行命令备籽,RUN 指令會創(chuàng)建新的鏡像層,RUN 指令經(jīng)常被用于安裝軟件包分井;
CMD?指定容器啟動時默認(rèn)運行哪些命令车猬,如果有多個 CMD,則只有最后一個生效尺锚,另外珠闰,CMD 指令可以被 docker run 之后的參數(shù)替換;
ENTRYOINT?指定容器啟動時運行哪些命令瘫辩,如果有多個 ENTRYOINT伏嗜,則只有最后一個生效,另外伐厌,如果 Dockerfile 中同時存在 CMD 和 ENTRYOINT承绸,那么 CMD 或 docker run 之后的參數(shù)將被當(dāng)做參數(shù)傳遞給 ENTRYOINT;
17挣轨、如何進入容器军熏?使用哪個命令
進入容器有兩種方法:docker attach、docker exec卷扮。
18荡澎、什么是 k8s均践?說出你的理解
K8s 是 kubernetes 的簡稱,其本質(zhì)是一個開源的容器編排系統(tǒng)摩幔,主要用于管理容器化的應(yīng)用彤委,其目標(biāo)是讓部署容器化的應(yīng)用簡單并且高效(powerful),Kubernetes 提供了應(yīng)用部署,規(guī)劃热鞍,更新葫慎,維護的一種機制。
說簡單點:k8s 就是一個編排容器的系統(tǒng)薇宠,一個可以管理容器應(yīng)用全生命周期的工具偷办,從創(chuàng)建應(yīng)用,應(yīng)用的部署澄港,應(yīng)用提供服務(wù)椒涯,擴容縮容應(yīng)用,應(yīng)用更新回梧,都非常的方便废岂,而且還可以做到故障自愈,所以狱意,k8s 是一個非常強大的容器編排系統(tǒng)湖苞。
19、k8s 的組件有哪些详囤,作用分別是什么财骨?
k8s 主要由 master 節(jié)點和 node 節(jié)點構(gòu)成。master 節(jié)點負(fù)責(zé)管理集群,node 節(jié)點是容器應(yīng)用真正運行的地方。
master 節(jié)點包含的組件有:kube-api-server朗徊、kube-controller-manager报慕、kube-scheduler、etcd。
node 節(jié)點包含的組件有:kubelet、kube-proxy、container-runtime理澎。
kube-api-server:以下簡稱 api-server,api-server 是 k8s 最重要的核心組件之一护姆,它是 k8s 集群管理的統(tǒng)一訪問入口矾端,提供了 RESTful API 接口,實現(xiàn)了認(rèn)證卵皂、授權(quán)和準(zhǔn)入控制等安全功能秩铆;api-server 還是其他組件之間的數(shù)據(jù)交互和通信的樞紐,其他組件彼此之間并不會直接通信,其他組件對資源對象的增殴玛、刪捅膘、改、查和監(jiān)聽操作都是交由 api-server 處理后滚粟,api-server 再提交給 etcd 數(shù)據(jù)庫做持久化存儲寻仗,只有 api-server 才能直接操作 etcd 數(shù)據(jù)庫,其他組件都不能直接操作 etcd 數(shù)據(jù)庫凡壤,其他組件都是通過 api-server 間接的讀取署尤,寫入數(shù)據(jù)到 etcd。
kube-controller-manager:以下簡稱 controller-manager亚侠,controller-manager 是 k8s 中各種控制器的的管理者曹体,是 k8s 集群內(nèi)部的管理控制中心,也是 k8s 自動化功能的核心硝烂;controller-manager 內(nèi)部包含 replication controller箕别、node controller、deployment controller滞谢、endpoint controller 等各種資源對象的控制器串稀,每種控制器都負(fù)責(zé)一種特定資源的控制流程,而 controller-manager 正是這些 controller 的核心管理者狮杨。
kube-scheduler:以下簡稱 scheduler母截,scheduler 負(fù)責(zé)集群資源調(diào)度,其作用是將待調(diào)度的 pod 通過一系列復(fù)雜的調(diào)度算法計算出最合適的 node 節(jié)點橄教,然后將 pod 綁定到目標(biāo)節(jié)點上微酬。shceduler 會根據(jù) pod 的信息(關(guān)注微信公眾號:網(wǎng)絡(luò)技術(shù)聯(lián)盟站),全部節(jié)點信息列表颤陶,過濾掉不符合要求的節(jié)點,過濾出一批候選節(jié)點陷遮,然后給候選節(jié)點打分滓走,選分最高的就是最佳節(jié)點,scheduler 就會把目標(biāo) pod 安置到該節(jié)點帽馋。
Etcd:etcd 是一個分布式的鍵值對存儲數(shù)據(jù)庫搅方,主要是用于保存 k8s 集群狀態(tài)數(shù)據(jù),比如绽族,pod姨涡,service 等資源對象的信息;etcd 可以是單個也可以有多個吧慢,多個就是 etcd 數(shù)據(jù)庫集群涛漂,etcd 通常部署奇數(shù)個實例,在大規(guī)模集群中,etcd 有 5 個或 7 個節(jié)點就足夠了匈仗;另外說明一點瓢剿,etcd 本質(zhì)上可以不與 master 節(jié)點部署在一起,只要 master 節(jié)點能通過網(wǎng)絡(luò)連接 etcd 數(shù)據(jù)庫即可悠轩。
kubelet:每個 node 節(jié)點上都有一個 kubelet 服務(wù)進程间狂,kubelet 作為連接 master 和各 node 之間的橋梁,負(fù)責(zé)維護 pod 和容器的生命周期火架,當(dāng)監(jiān)聽到 master 下發(fā)到本節(jié)點的任務(wù)時鉴象,比如創(chuàng)建、更新何鸡、終止 pod 等任務(wù)纺弊,kubelet 即通過控制 docker 來創(chuàng)建、更新音比、銷毀容器俭尖;每個 kubelet 進程都會在 api-server 上注冊本節(jié)點自身的信息,用于定期向 master 匯報本節(jié)點資源的使用情況洞翩。
kube-proxy:kube-proxy 運行在 node 節(jié)點上稽犁,在 Node 節(jié)點上實現(xiàn) Pod 網(wǎng)絡(luò)代理,維護網(wǎng)絡(luò)規(guī)則和四層負(fù)載均衡工作骚亿,kube-proxy 會監(jiān)聽 api-server 中從而獲取 service 和 endpoint 的變化情況已亥,創(chuàng)建并維護路由規(guī)則以提供服務(wù) IP 和負(fù)載均衡功能。簡單理解此進程是 Service 的透明代理兼負(fù)載均衡器来屠,其核心功能是將到某個 Service 的訪問請求轉(zhuǎn)發(fā)到后端的多個 Pod 實例上虑椎。
container-runtime:容器運行時環(huán)境,即運行容器所需要的一系列程序俱笛,目前 k8s 支持的容器運行時有很多捆姜,如 docker、rkt 或其他迎膜,比較受歡迎的是 docker泥技,但是新版的 k8s 已經(jīng)宣布棄用 docker。
20磕仅、kubelet 的功能珊豹、作用是什么?(重點榕订,經(jīng)常會問)
kubelet 部署在每個 node 節(jié)點上的店茶,它主要有 4 個功能:
節(jié)點管理。kubelet 啟動時會向 api-server 進行注冊劫恒,然后會定時的向 api-server 匯報本節(jié)點信息狀態(tài)贩幻,資源使用狀態(tài)等,這樣 master 就能夠知道 node 節(jié)點的資源剩余,節(jié)點是否失聯(lián)等等相關(guān)的信息了段直。master 知道了整個集群所有節(jié)點的資源情況吃溅,這對于 pod 的調(diào)度和正常運行至關(guān)重要。
pod 管理鸯檬。kubelet 負(fù)責(zé)維護 node 節(jié)點上 pod 的生命周期决侈,當(dāng) kubelet 監(jiān)聽到 master 的下發(fā)到自己節(jié)點的任務(wù)時,比如要創(chuàng)建喧务、更新赖歌、刪除一個 pod,kubelet 就會通過 CRI(容器運行時接口)插件來調(diào)用不同的容器運行時來創(chuàng)建功茴、更新庐冯、刪除容器;常見的容器運行時有 docker坎穿、containerd展父、rkt 等等這些容器運行時,我們最熟悉的就是 docker 了玲昧,但在新版本的 k8s 已經(jīng)棄用 docker 了栖茉,k8s1.24 版本中已經(jīng)使用 containerd 作為容器運行時了。
容器健康檢查孵延。pod 中可以定義啟動探針吕漂、存活探針、就緒探針等 3 種尘应,我們最常用的就是存活探針惶凝、就緒探針,kubelet 會定期調(diào)用容器中的探針來檢測容器是否存活犬钢,是否就緒苍鲜,如果是存活探針,則會根據(jù)探測結(jié)果對檢查失敗的容器進行相應(yīng)的重啟策略玷犹;
Metrics Server 資源監(jiān)控坡贺。在 node 節(jié)點上部署 Metrics Server 用于監(jiān)控 node 節(jié)點、pod 的 CPU箱舞、內(nèi)存、文件系統(tǒng)拳亿、網(wǎng)絡(luò)使用等資源使用情況晴股,而 kubelet 則通過 Metrics Server 獲取所在節(jié)點及容器的上的數(shù)據(jù)。
21肺魁、kube-api-server 的端口是多少电湘?各個 pod 是如何訪問 kube-api-server 的?
kube-api-server 的端口是 8080 和 6443,前者是 http 的端口寂呛,后者是 https 的端口怎诫,以我本機使用 kubeadm 安裝的 k8s 為例:
在命名空間的 kube-system 命名空間里,有一個名稱為 kube-api-master 的 pod贷痪,這個 pod 就是運行著 kube-api-server 進程幻妓,它綁定了 master 主機的 ip 地址和 6443 端口,但是在 default 命名空間下劫拢,存在一個叫 kubernetes 的服務(wù)肉津,該服務(wù)對外暴露端口為 443,目標(biāo)端口 6443舱沧,這個服務(wù)的 ip 地址是 clusterip 地址池里面的第一個地址妹沙,同時這個服務(wù)的 yaml 定義里面并沒有指定標(biāo)簽選擇器,也就是說這個 kubernetes 服務(wù)所對應(yīng)的 endpoint 是手動創(chuàng)建的熟吏,該 endpoint 也是名稱叫做 kubernetes距糖,該 endpoint 的 yaml 定義里面代理到 master 節(jié)點的 6443 端口,也就是 kube-api-server 的 IP 和端口牵寺。這樣一來悍引,其他 pod 訪問 kube-api-server 的整個流程就是:pod 創(chuàng)建后嵌入了環(huán)境變量,pod 獲取到了 kubernetes 這個服務(wù)的 ip 和 443 端口缸剪,請求到 kubernetes 這個服務(wù)其實就是轉(zhuǎn)發(fā)到了 master 節(jié)點上的 6443 端口的 kube-api-server 這個 pod 里面吗铐。
22、k8s 中命名空間的作用是什么杏节?
amespace 是 kubernetes 系統(tǒng)中的一種非常重要的資源唬渗,namespace 的主要作用是用來實現(xiàn)多套環(huán)境的資源隔離,或者說是多租戶的資源隔離奋渔。
k8s 通過將集群內(nèi)部的資源分配到不同的 namespace 中镊逝,可以形成邏輯上的隔離,以方便不同的資源進行隔離使用和管理嫉鲸。不同的命名空間可以存在同名的資源撑蒜,命名空間為資源提供了一個作用域。
可以通過 k8s 的授權(quán)機制玄渗,將不同的 namespace 交給不同的租戶進行管理座菠,這樣就實現(xiàn)了多租戶的資源隔離,還可以結(jié)合 k8s 的資源配額機制藤树,限定不同的租戶能占用的資源浴滴,例如 CPU 使用量、內(nèi)存使用量等等來實現(xiàn)租戶可用資源的管理岁钓。
23升略、pod 資源控制器類型有哪些微王?
Deployments:Deployment 為 Pod 和 ReplicaSet 提供聲明式的更新能力。
ReplicaSet:ReplicaSet 的目的是維護一組在任何時候都處于運行狀態(tài)的 Pod 副本的穩(wěn)定集合品嚣。因此炕倘,它通常用來保證給定數(shù)量的、完全相同的 Pod 的可用性翰撑。
StatefulSets:和 Deployment 類似罩旋,StatefulSet 管理基于相同容器規(guī)約的一組 Pod。但和 Deployment 不同的是额嘿,StatefulSet 為它們的每個 Pod 維護了一個有粘性的 ID瘸恼。這些 Pod 是基于相同的規(guī)約來創(chuàng)建的,但是不能相互替換:無論怎么調(diào)度册养,每個 Pod 都有一個永久不變的 ID东帅。
DaemonSet:DaemonSet 確保全部(或者某些)節(jié)點上運行一個 Pod 的副本。當(dāng)有節(jié)點加入集群時球拦,也會為他們新增一個 Pod靠闭。當(dāng)有節(jié)點從集群移除時,這些 Pod 也會被回收坎炼。刪除 DaemonSet 將會刪除它創(chuàng)建的所有 Pod愧膀。
Jobs:Job 會創(chuàng)建一個或者多個 Pod,并將繼續(xù)重試 Pod 的執(zhí)行谣光,直到指定數(shù)量的 Pod 成功終止檩淋。隨著 Pod 成功結(jié)束,Job 跟蹤記錄成功完成的 Pod 個數(shù)萄金。當(dāng)數(shù)量達到指定的成功個數(shù)閾值時蟀悦,任務(wù)(即 Job)結(jié)束。刪除 Job 的操作會清除所創(chuàng)建的全部 Pod氧敢。掛起 Job 的操作會刪除 Job 的所有活躍 Pod日戈,直到 Job 被再次恢復(fù)執(zhí)行。
Automatic Clean-up for Finished Jobs:TTL-after-finished 控制器提供了一種 TTL 機制來限制已完成執(zhí)行的資源對象的生命周期孙乖。TTL 控制器目前只處理 Job浙炼。
CronJob:一個 CronJob 對象就像 crontab (crontable) 文件中的一行。它用 Cron 格式進行編寫唯袄,并周期性地在給定的調(diào)度時間執(zhí)行 Job弯屈。
ReplicationController:ReplicationController 確保在任何時候都有特定數(shù)量的 Pod 副本處于運行狀態(tài)。換句話說恋拷,ReplicationController 確保一個 Pod 或一組同類的 Pod 總是可用的资厉。
24、nginx 算法策略
輪詢(默認(rèn))
加權(quán)輪詢(輪詢 + weight)
ip_hash
每一個請求的訪問 IP梅掠,都會映射成一個 hash酌住,再通過 hash 算法(hash 值 % node_count),分配到不同的后端服務(wù)器阎抒,訪問 ip 相同的請求會固定訪問同一個后端服務(wù)器酪我,這樣可以做到會話保持,解決 session 同步問題且叁。
least_conn(最少連接)
使用最少連接的負(fù)載平衡都哭,nginx 將嘗試不會使繁忙的應(yīng)用程序服務(wù)器超載請求過多,而是將新請求分發(fā)給不太繁忙的服務(wù)器逞带。
25欺矫、nignx 常用模塊
upstream
rewrite
location
proxy_pass
26、如何查看并且殺死僵尸進程展氓?
top —> task (line)—> zombie.
把父進程殺掉穆趴,父進程死后,過繼給 1 號進程 init遇汞,init 始終負(fù)責(zé)清理僵尸進程未妹,它產(chǎn)生的所有僵尸進程跟著消失;如果你使用 kill 空入,一般都不能殺掉 defunct 進程.络它。用了 kill -15,kill -9 以后 之后反而會多出更多的僵尸進程。
27歪赢、搜索某個用戶運行的進程
pgrep-au?neteagle
28化戳、查看某個端口正在被哪個進程使用
lsof-i:[port]
29、端口轉(zhuǎn)發(fā)
iptables-tnat-APREROUTING-d10.0.0.8-ptcp--dport80-jREDIRECT--to-ports8080
30埋凯、查看 http 的并發(fā)請求數(shù)與其 TCP 連接狀態(tài)
etstat-n|awk'/^tcp/{++b[$NF]}END{for(ainb)printa,b[a]}'
31点楼、查看 /var/log 目錄下文件數(shù)
ls/var/log/-lR|grep"^-"|wc-l
32、linux 系統(tǒng)啟動流程
第一步:開機自檢盟步,加載 BIOS
第二步:讀热磁獭MBR
第三步:Boot Loader grub 引導(dǎo)菜單
第四步:加載 kernel 內(nèi)核
第五步:init 進程依據(jù) inittab 文件夾來設(shè)定運行級別
第六步:init 進程執(zhí)行 rc.sysinit
第七步:啟動內(nèi)核模塊
第八步:執(zhí)行不同運行級別的腳本程序
第九步:執(zhí)行 /etc/rc.d/rc.lo
33、Linux 文件類型
-:常規(guī)文件塞关,即 file
d:目錄文件
b:block device 即塊設(shè)備文件小压,如硬盤怠益;支持以 block 為單位進行隨機訪問
c:character device 即字符設(shè)備文件蜻牢,如鍵盤支持以 character 為單位進行線性訪問
l:symbolic link 即符號鏈接文件(關(guān)注微信公眾號:網(wǎng)絡(luò)技術(shù)聯(lián)盟站),又稱軟鏈接文件
p:pipe 即命名管道文件
s:socket 即套接字文件抱虐,用于實現(xiàn)兩個進程進行通信
34、簡述 lvm轩娶,如何給使用 lvm 的 / 分區(qū)擴容?
功能:可以對磁盤進行動態(tài)管理许溅。動態(tài)按需調(diào)整大小
概念:
PV 物理卷:物理卷在邏輯卷管理中處于最底層,它可以是實際物理硬盤上的分區(qū),也可以是整個物理硬盤滚停,也可以是 raid 設(shè)備。
VG 卷組:卷組建立在物理卷之上起惕,一個卷組中至少要包括一個物理卷盼产,在卷組建立之后可動態(tài)添加物理卷到卷組中侨核。一個邏輯卷管理系統(tǒng)工程中可以只有一個卷組悲柱,也可以擁有多個卷組。
LV 邏輯卷:邏輯卷建立在卷組之上涯冠,卷組中的未分配空間可以用于建立新的邏輯卷,邏輯卷建立后可以動態(tài)地擴展和縮小空間。系統(tǒng)中的多個邏輯卷可以屬于同一個卷組,也可以屬于不同的多個卷組豆混。
給 / 分區(qū)擴容步驟:
添加磁盤
使用 fdisk 命令對新增加的磁盤進行分區(qū)
分區(qū)完成后修改分區(qū)類型為 lvm
使用 pvcreate 創(chuàng)建物理卷
使用 vgextend 命令將新增加的分區(qū)加入到根目錄分區(qū)中
使用 lvextend 命令進行擴容
使用 xfs_growfs 調(diào)整卷分區(qū)大小
35心傀、如何在文本里面進行復(fù)制、粘貼嘿架,刪除行蝉娜,刪除全部南缓,按行查找和按字母查找。
以下操作全部在 vi/vim 命令行狀態(tài)操作,不要在編輯狀態(tài)操作:
在文本里 移動到想要復(fù)制的行按 yy 想復(fù)制到哪就移動到哪届案,然后按 P 就黏貼了
刪除行 ?移動到改行 按 dd
刪除全部 dG 這里注意 G 一定要大寫
按行查找 ?:90 這樣就是找到第 90 行
按字母查找 /path 這樣就是找到 path 這個單詞所在的位置咐蚯,文本里可能存在多個矫膨,多次查找會顯示在不同的位置危尿。
36、符號鏈接與硬鏈接的區(qū)別
我們可以把符號鏈接,也就是軟連接 當(dāng)做是 windows 系統(tǒng)里的 快捷方式船逮。
硬鏈接 就好像是 又復(fù)制了一份.
ln 3.txt 4.txt ? 這是硬鏈接梆惯,相當(dāng)于復(fù)制,不可以跨分區(qū),但修改 3,4 會跟著變,若刪除 3,4 不受任何影響。
ln -s 3.txt 4.txt ?這是軟連接掠归,相當(dāng)于快捷方式弹囚。修改 4,3 也會跟著變悯森,若刪除 3,4 就壞掉了。不可以用了。
37、什么是正向代理?
一個位于客戶端和原始服務(wù)器 (origin server) 之間的服務(wù)器朋贬,為了從原始服務(wù)器取得內(nèi)容糠亩,客戶端向代理發(fā)送一個請求并指定目標(biāo) (原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。
客戶端才能使用正向代理。正向代理總結(jié)就一句話:代理端代理的是客戶端。例如說:我們使用的 OpenVPN 等等潭流。
38嗓奢、什么是反向代理物蝙?
反向代理(Reverse Proxy)方式册赛,是指以代理服務(wù)器來接受 Internet 上的連接請求,然后將請求,發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器并將從服務(wù)器上得到的結(jié)果返回給 Internet 上請求連接的客戶端废士,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器傻咖。
反向代理總結(jié)就一句話:代理端代理的是服務(wù)端害淤。
39腮鞍、什么是動態(tài)資源莹菱、靜態(tài)資源分離移国?
動態(tài)資源、靜態(tài)資源分離道伟,是讓動態(tài)網(wǎng)站里的動態(tài)網(wǎng)頁根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開來迹缀,動靜資源做好了拆分以后我們就可以根據(jù)靜態(tài)資源的特點將其做緩存操作,這就是網(wǎng)站靜態(tài)化處理的核心思路蜜徽。
動態(tài)資源祝懂、靜態(tài)資源分離簡單的概括是:動態(tài)文件與靜態(tài)文件的分離。
在我們的軟件開發(fā)中拘鞋,有些請求是需要后臺處理的(如:.jsp,.do 等等)砚蓬,有些請求是不需要經(jīng)過后臺處理的(如:css、html盆色、jpg灰蛙、js 等等文件),這些不需要經(jīng)過后臺處理的文件稱為靜態(tài)文件隔躲,否則動態(tài)文件摩梧。
因此我們后臺處理忽略靜態(tài)文件。這會有人又說那我后臺忽略靜態(tài)文件不就完了嗎宣旱?當(dāng)然這是可以的仅父,但是這樣后臺的請求次數(shù)就明顯增多了。在我們對資源的響應(yīng)速度有要求的時候浑吟,我們應(yīng)該使用這種動靜分離的策略去解決動笙纤、靜分離將網(wǎng)站靜態(tài)資源(HTML,JavaScript组力,CSS粪糙,img 等文件)與后臺應(yīng)用分開部署,提高用戶訪問靜態(tài)代碼的速度忿项,降低對后臺應(yīng)用訪問
這里我們將靜態(tài)資源放到 Nginx 中蓉冈,動態(tài)資源轉(zhuǎn)發(fā)到 Tomcat 服務(wù)器中去城舞。
當(dāng)然,因為現(xiàn)在七牛寞酿、阿里云等 CDN 服務(wù)已經(jīng)很成熟家夺,主流的做法,是把靜態(tài)資源緩存到 CDN 服務(wù)中伐弹,從而提升訪問速度拉馋。
相比本地的 Nginx 來說,CDN 服務(wù)器由于在國內(nèi)有更多的節(jié)點惨好,可以實現(xiàn)用戶的就近訪問煌茴。并且,CDN 服務(wù)可以提供更大的帶寬日川,不像我們自己的應(yīng)用服務(wù)蔓腐,提供的帶寬是有限的。
40龄句、網(wǎng)站登陸緩慢是什么原因回论?
網(wǎng)絡(luò)帶寬,這是一個很常見的瓶頸分歇。
cpu傀蓉、硬盤、內(nèi)存配置過低职抡,服務(wù)器負(fù)載不起來葬燎。
網(wǎng)站的開發(fā)代碼不夠完善,例如 mysql 語句沒有進行優(yōu)化缚甩,導(dǎo)致數(shù)據(jù)庫的讀寫相當(dāng)耗費時間谱净。
數(shù)據(jù)庫的瓶頸。當(dāng)我們的數(shù)據(jù)庫的數(shù)據(jù)變得越來越多的時候蹄胰,那么對于數(shù)據(jù)庫的讀寫壓力肯定會變大岳遥。
41奕翔、a 與 b 服務(wù)器不在同一網(wǎng)段怎么設(shè)置裕寨?設(shè)置完還 ping 不通怎么排查?
AB 服務(wù)器不在同一個網(wǎng)段
首先把不同 IP 段的服務(wù)器劃分給不同的 vlan
在通過通過三層交換機添加虛擬 IP 路由實在不同網(wǎng)段的 vlan 的連接
42派继、在 AB 兩臺服務(wù)器之間通過一個服務(wù)器 c 做軟路由使用給路由器 c 配置兩塊網(wǎng)卡并開啟自身的路由功能
vi/etc/sysconfig/network-scripts/ifcfg-eth0
查看網(wǎng)卡狀況 IP -a -s 網(wǎng)卡的名字
A 服務(wù)器設(shè)置相關(guān)網(wǎng)卡信息
子網(wǎng)掩碼:255.255.255.0IP=10.0.0.1網(wǎng)關(guān)=10.0.0.254重啟網(wǎng)卡生效查看路由信息route-n添加對應(yīng)路由routeadd-net10.0.1.0/24gw10.0.0.11
B 服務(wù)器的設(shè)置相關(guān)信息
IP=10.0.1.10網(wǎng)關(guān)10.0.1.254重啟網(wǎng)卡生效route-n添加對應(yīng)的路由routeadd-net10.0.0.0/24gw10.0.1.11
C 服務(wù)器的兩塊網(wǎng)卡
網(wǎng)卡1
IP=10.0.0.11
網(wǎng)關(guān)=10.0.0.254
網(wǎng)卡2
IP=10.0.1.11
網(wǎng)關(guān)=10.0.1.254
重啟網(wǎng)卡生效
route?-n
vi?/etc/sysctl.conf
net.ipv4.ip_forword?=?1
43宾袜、如果 PING 不通怎么排查
首先先看看是不是網(wǎng)路接口故障水晶頭或是網(wǎng)卡接口接觸不良造成,其次檢查交換機和路由等網(wǎng)絡(luò)設(shè)備是有故障
是否關(guān)閉了防火墻和 selinux 機制
然后查看網(wǎng)卡和路由和網(wǎng)關(guān)是否配置正確
44驾窟、docker 容器 ping 不通是什么原因庆猫?
ifconfig 查看一下 docker0 網(wǎng)橋,ping 一下網(wǎng)橋看看是否通绅络,有可能是網(wǎng)橋配置問題
weave 路由器端口 6783
安裝 docker 容器的服務(wù)器沒有關(guān)閉防火墻 (訪問一下安裝 docker 物理機的月培,是否能訪問嘁字,如果不能訪問就變不能訪問 docker)
docker 在創(chuàng)建鏡像的時候沒有做端口映射 (出現(xiàn)這種情況能訪問物理機不能訪問 docker) 使用 dockers ps 查看鏡像的端口映射情況
端口映射不正確
查看網(wǎng)絡(luò)配置 ping 網(wǎng)橋看是否能 ping 通,有可能是網(wǎng)橋的原因
45杉畜、如果一臺辦公室內(nèi)主機無法上網(wǎng) (打不開網(wǎng)站)纪蜒,請給出你的排查步驟?
首先確定物理鏈路是否聯(lián)通正常此叠。
查看本機 IP纯续,路由,DNS 的設(shè)置情況是否達標(biāo)灭袁。
telnet 檢查服務(wù)器的 WEB 有沒有開啟以及防火墻是否阻攔猬错。
ping 一下網(wǎng)關(guān),進行最基礎(chǔ)的檢查茸歧,通了倦炒,表示能夠到達服務(wù)器。
測試到網(wǎng)關(guān)或路由器的通常情況举娩,先測網(wǎng)關(guān)析校,然后再測路由器一級一級的測試。
測試 ping 公網(wǎng) ip 的通常情況 (記住幾個外部 IP)铜涉,
測試 DNS 的通暢智玻。ping 出對應(yīng) IP。
通過以上檢查后芙代,還在網(wǎng)管的路由器上進行檢查吊奢。
46、如果我們的網(wǎng)站打開速度慢請說下您的排查思路纹烹?
判斷原因
首先我要以用戶的身份登錄我們的網(wǎng)站页滚,判斷問題出現(xiàn)在我們自身原因,還是用戶那邊的原因铺呵。
如果是用戶問題有以下幾個原因:
用戶那邊的帶寬
用戶的瀏覽器器版本低裹驰,安裝插件太多
中毒和電腦里的垃圾文件過多
用戶主機的主機的性能和操作系統(tǒng)
網(wǎng)絡(luò)帶寬
服務(wù)器的 cpu、硬盤片挂、內(nèi)存過低服務(wù)器負(fù)載不起來也就是說服務(wù)器自身的性能方面
網(wǎng)站代碼不夠完善幻林。如 mysql 語句沒有進行優(yōu)化導(dǎo)致數(shù)據(jù)庫讀寫耗時
服務(wù)器未開啟圖片壓縮
網(wǎng)頁下死連接過多插件使用及 js 文件調(diào)用頻繁網(wǎng)站服務(wù)器的速度或是租用空間所在的服務(wù)器速度
解決思路
1、檢測服務(wù)器速度的快慢
ping 命令查看連接到服務(wù)器的時間和丟包情況 (ping 測試網(wǎng)址的)
查看丟包率 (1000 個包沒有丟一個是最理想的音念、一般一個速度好的機房丟包率不超過 1%)
ping 值要小同城電信 adsl ping 平均值絕對不能超過 20沪饺,一般都在 10,跨省的平均值 20-40 屬于正常
ping 值要均勻最小值和最大值相差太大說明路由不穩(wěn)定的表現(xiàn)
2闷愤、查看服務(wù)器自身性能
查看 cpu 的使用率?uptime
查看內(nèi)存情況?free -m
查看 I/O 讀寫 iostat 磁盤 I/O 讀寫等看看是那個進程大量占用系統(tǒng)資源導(dǎo)致我的服務(wù)器變慢
3整葡、看看訪問最多的 URL 和 IP 有什么特征,如果是惡意 URL 和 IP 就把他屏蔽掉如果是善意的就限流有可能是 CDN 回源量大造成網(wǎng)站無法訪問
4讥脐、查看同臺服務(wù)器上其他網(wǎng)站的打開速度遭居,可以通過查詢工具查看和自己在同一臺服務(wù)器上的網(wǎng)站個數(shù)和網(wǎng)址可以看他們打開快慢
5啼器、電信和聯(lián)通互訪的問題
如果是空間打開時快時慢,有時打不開那就是空間不穩(wěn)定找空間商解決或是換空間傷俱萍,如果是有的地方快有的地方慢應(yīng)該是網(wǎng)絡(luò)線路問題镀首,比如電信用戶訪問放在聯(lián)通服務(wù)器上的網(wǎng)站,聯(lián)通用戶訪問放在電信服務(wù)器上的網(wǎng)站鼠次,解決辦吧是:使用雙線空間或是多線空間
6更哄、從網(wǎng)站自身的原因
網(wǎng)站的程序設(shè)計結(jié)構(gòu)是否合理是否由于幻燈片代碼影響網(wǎng)站打開速度 (找程序設(shè)計相關(guān)人士解決)
網(wǎng)頁的設(shè)計結(jié)構(gòu)和代碼錯誤 (請專業(yè)人士進行修改)
網(wǎng)頁的內(nèi)容如:大尺寸圖片、大尺寸 flash腥寇、過多的引用其他網(wǎng)站內(nèi)容成翩,如果被引用內(nèi)容的網(wǎng)站速度慢籍琳,也影響自身網(wǎng)站把览爵。譬如友情連接可以把對方 的圖片放到自己網(wǎng)站上
解決辦法
優(yōu)化圖片,限制圖片大小尺寸帘不,降低圖片質(zhì)量掂摔,減少圖片數(shù)量
限定圖片的格式:jpg术羔,png,gif
減少 http 的請求數(shù) (當(dāng)打開網(wǎng)頁時瀏覽器會發(fā)出很多對象請求乙漓,每個對象的加載都會有所延時级历,如果網(wǎng)頁上的對象很多就會花費大量的時間,去除不必要的對象叭披,將臨近的圖片合成一張寥殖,合并 css 文件) f r o m :w l j s l m z
46、如何查看二進制文件的內(nèi)容
我們一般通過 hexdump 命令 來查看二進制文件的內(nèi)容涩蜘。
hexdump -C XXX (文件名) ?-C 是參數(shù) 不同的參數(shù)有不同的意義
-C ?是比較規(guī)范的 十六進制和 ASCII 碼顯示
-c ?是單字節(jié)字符顯示
-b ?單字節(jié)八進制顯示
-o ?是雙字節(jié)八進制顯示
-d ?是雙字節(jié)十進制顯示
-x ?是雙字節(jié)十六進制顯示
等等等等
47嚼贡、你是怎么備份數(shù)據(jù)的,包括數(shù)據(jù)庫備份同诫?
在生產(chǎn)環(huán)境下粤策,不管是應(yīng)用數(shù)據(jù)、還是數(shù)據(jù)庫數(shù)據(jù)首先在部署的時候就會有主從架構(gòu)误窖、或者集群叮盘,這本身就是屬于數(shù)據(jù)的熱備份;其實考慮冷備份贩猎,用專門一臺服務(wù)器做為備份服務(wù)器熊户,比如可以用 rsync+inotify 配合計劃任務(wù)來實現(xiàn)數(shù)據(jù)的冷備份萍膛,如果是發(fā)版的包備份吭服,正常情況下有臺發(fā)布服務(wù)器,每次發(fā)版都會保存好發(fā)版的包蝗罗。
48艇棕、zabbix 常用術(shù)語你知道幾個蝌戒?
主機(host):要監(jiān)控的網(wǎng)絡(luò)設(shè)備,可由 IP 或 DNS 名稱指定沼琉;
主機組(hostgroup):主機的邏輯容器北苟,可以包含主機和模板,但同一個組織內(nèi)的主機和模板不能互相鏈接打瘪;主機組通常在給用戶或用戶組指派監(jiān)控權(quán)限時使用友鼻;
監(jiān)控項(item):一個特定監(jiān)控指標(biāo)的相關(guān)的數(shù)據(jù);這些數(shù)據(jù)來自于被監(jiān)控對象闺骚;item 是 zabbix 進行數(shù)據(jù)收集的核心彩扔,相對某個監(jiān)控對象,每個 item 都由 "key" 標(biāo)識僻爽;
觸發(fā)器(trigger):一個表達式虫碉,用于評估某監(jiān)控對象的特定 item 內(nèi)接收到的數(shù)據(jù)是否在合理范圍內(nèi),也就是閾值胸梆;接收的數(shù)據(jù)量大于閾值時敦捧,觸發(fā)器狀態(tài)將從 "OK" 轉(zhuǎn)變?yōu)?"Problem",當(dāng)數(shù)據(jù)再次恢復(fù)到合理范圍碰镜,又轉(zhuǎn)變?yōu)?"OK"兢卵;
事件(event):觸發(fā)一個值得關(guān)注的事情,比如觸發(fā)器狀態(tài)轉(zhuǎn)變绪颖,新的 agent 或重新上線的 agent 的自動注冊等济蝉;
動作(action):指對于特定事件事先定義的處理方法,如發(fā)送通知菠发,何時執(zhí)行操作王滤;
報警升級(escalation):發(fā)送警報或者執(zhí)行遠程命令的自定義方案,如每隔 5 分鐘發(fā)送一次警報滓鸠,共發(fā)送 5 次等雁乡;
媒介(media):發(fā)送通知的手段或者通道,如 Email糜俗、Jabber 或者 SMS 等踱稍;
通知(notification):通過選定的媒介向用戶發(fā)送的有關(guān)某事件的信息;遠程命令(remote command):預(yù)定義的命令悠抹,可在被監(jiān)控主機處于某特定條件下時自動執(zhí)行珠月;
模板(template):用于快速定義被監(jiān)控主機的預(yù)設(shè)條目集合,通常包含了 item楔敌、trigger啤挎、graph、screen卵凑、application 以及 low-level
discovery rule庆聘;模板可以直接鏈接至某個主機胜臊;應(yīng)用(application):一組 item 的集合;
web 場景(webscennario):用于檢測 web 站點可用性的一個活多個 HTTP 請求伙判;前端(frontend):Zabbix 的 web 接口象对;
49、虛擬化技術(shù)有哪些表現(xiàn)形式
完全擬化技術(shù):通過軟件實現(xiàn)對操作系統(tǒng)的資源再分配宴抚,比較成熟勒魔,完全虛擬化代表技術(shù):KVM、ESXI菇曲、Hyper-V沥邻。
半虛擬化技術(shù):通過代碼修改已有的系統(tǒng),形成一種新的可虛擬化的系統(tǒng)羊娃,調(diào)用硬件資源去安裝多個系統(tǒng)唐全,整體速度上相對高一點,半虛擬化代表技術(shù):Xen蕊玷。
輕量級虛擬化:介于完全虛擬化邮利、半虛擬化之間,輕量級虛擬化代表技術(shù):Docker垃帅。
50延届、修改線上業(yè)務(wù)配置文件流程
先告知運維經(jīng)理和業(yè)務(wù)相關(guān)開發(fā)人員
在測試環(huán)境測試,并備份之前的配置文件
測試無誤后修改生產(chǎn)環(huán)境配置
觀察生產(chǎn)環(huán)境是否正常贸诚,是否有報警
完成配置文件更改
文章轉(zhuǎn)自:網(wǎng)絡(luò)技術(shù)聯(lián)盟站(版權(quán)歸原作者所有方庭,侵刪)