防偽碼:寶劍鋒從磨礪出,梅花香自苦寒來(lái)。
1.如何判斷mysql主從是否同步?該如何使其同步?
1 2 3 | Slave_IO_Running Slave_SQL_Running; 略 |
2.mysql的innodb如何定位鎖問(wèn)題,mysql如何減少主從復(fù)制延遲?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | mysql的innodb如何定位鎖問(wèn)題: 在使用 show engine innodb status檢查引擎狀態(tài)時(shí),發(fā)現(xiàn)了死鎖問(wèn)題 在5.5中,information_schema 庫(kù)中增加了三個(gè)關(guān)于鎖的表(MEMORY引擎):innodb_trx ## 當(dāng)前運(yùn)行的所有事務(wù)innodb_locks ## 當(dāng)前出現(xiàn)的鎖innodb_lock_waits ## 鎖等待的對(duì)應(yīng)關(guān)系 mysql如何減少主從復(fù)制延遲: 如果延遲比較大,就先確認(rèn)以下幾個(gè)因素: 1. 從庫(kù)硬件比主庫(kù)差,導(dǎo)致復(fù)制延遲 2. 主從復(fù)制單線程,如果主庫(kù)寫并發(fā)太大,來(lái)不及傳送到從庫(kù),就會(huì)導(dǎo)致延遲。更高版本的mysql可以支持多線程復(fù)制 3. 慢SQL語(yǔ)句過(guò)多 4. 網(wǎng)絡(luò)延遲5. master負(fù)載 主庫(kù)讀寫壓力大,導(dǎo)致復(fù)制延遲,架構(gòu)的前端要加buffer及緩存層6. slave負(fù)載 一般的做法是,使用多臺(tái)slave來(lái)分?jǐn)傋x請(qǐng)求,再?gòu)倪@些slave中取一臺(tái)專用的服務(wù)器,只作為備份用,不進(jìn)行其他任何操作. 另外, 2個(gè)可以減少延遲的參數(shù): –slave-net-timeout=seconds 單位為秒 默認(rèn)設(shè)置為 3600秒 #參數(shù)含義:當(dāng)slave從主數(shù)據(jù)庫(kù)讀取log數(shù)據(jù)失敗后,等待多久重新建立連接并獲取數(shù)據(jù) –master-connect-retry=seconds 單位為秒 默認(rèn)設(shè)置為 60秒 #參數(shù)含義:當(dāng)重新建立主從連接時(shí),如果連接建立失敗,間隔多久后重試。 通常配置以上2個(gè)參數(shù)可以減少網(wǎng)絡(luò)問(wèn)題導(dǎo)致的主從數(shù)據(jù)同步延遲 MySQL數(shù)據(jù)庫(kù)主從同步延遲解決方案 最簡(jiǎn)單的減少slave同步延時(shí)的方案就是在架構(gòu)上做優(yōu)化,盡量讓主庫(kù)的DDL快速執(zhí)行。還有就是主庫(kù)是寫,對(duì)數(shù)據(jù)安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之類的設(shè)置,而slave則不需要這么高的數(shù)據(jù)安全,完全可以講sync_binlog設(shè)置為0或者關(guān)閉binlog,innodb_flushlog也可以設(shè)置為0來(lái)提高sql的執(zhí)行效率。另外就是使用比主庫(kù)更好的硬件設(shè)備作為slave。 |
3.osi七層模型,tcp三次握手過(guò)程,tcp連接斷開過(guò)程,什么情況下tcp進(jìn)入time_wait?
1 2 3 4 5 6 | 答:其他問(wèn)題答案略 什么情況下tcp進(jìn)入time_wait? 當(dāng)關(guān)閉一個(gè) socket 連接時(shí),主動(dòng)關(guān)閉一端的 socket 將進(jìn)入TIME_WAIT狀態(tài),而被動(dòng)關(guān)閉一方則轉(zhuǎn)入CLOSED狀態(tài)。 具體過(guò)程如下:1、 客戶端發(fā)送FIN報(bào)文段,進(jìn)入FIN_WAIT_1狀態(tài)。2、 服務(wù)器端收到FIN報(bào)文段,發(fā)送ACK表示確認(rèn),進(jìn)入CLOSE_WAIT狀態(tài)。3、 客戶端收到FIN的確認(rèn)報(bào)文段,進(jìn)入FIN_WAIT_2狀態(tài)。4、 服務(wù)器端發(fā)送FIN報(bào)文端,進(jìn)入LAST_ACK狀態(tài)。5、 客戶端收到FIN報(bào)文端,發(fā)送FIN的ACK,同時(shí)進(jìn)入TIME_WAIT狀態(tài),啟動(dòng)TIME_WAIT定時(shí)器,超時(shí)時(shí)間設(shè)為2MSL。6、 服務(wù)器端收到FIN的ACK,進(jìn)入CLOSED狀態(tài)。7、 客戶端在2MSL時(shí)間內(nèi)沒(méi)收到對(duì)端的任何響應(yīng),TIME_WAIT超時(shí),進(jìn)入CLOSED狀態(tài)。 |
4.什么是跨站腳本攻擊,有何危害,sql注入攻擊如何防范?
1 | 答:略 |
5.海量文件如何存儲(chǔ)?
1 | 答:使用分布式存儲(chǔ),如mfs、hadoop等 |
6.如何重置mysql root密碼?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 答:一、 在已知MYSQL數(shù)據(jù)庫(kù)的ROOT用戶密碼的情況下,修改密碼的方法: 1、 在SHELL環(huán)境下,使用mysqladmin命令設(shè)置:mysqladmin –u root –p password “新密碼” 回車后要求輸入舊密碼 2、 在mysql>環(huán)境中,使用update命令,直接更新mysql庫(kù)user表的數(shù)據(jù): Update mysql.user set password=password(‘新密碼’) where user=’root’; flush privileges; 注意:mysql語(yǔ)句要以分號(hào)”;”結(jié)束 3、 在mysql>環(huán)境中,使用grant命令,修改root用戶的授權(quán)權(quán)限。 grant all on *.* to root@’localhost’ identified by ‘新密碼’; 二、 如查忘記了mysql數(shù)據(jù)庫(kù)的ROOT用戶的密碼,又如何做呢?方法如下: 1、 關(guān)閉當(dāng)前運(yùn)行的mysqld服務(wù)程序:service mysqld stop(要先將mysqld添加為系統(tǒng)服務(wù)) 2、 使用mysqld_safe腳本以安全模式(不加載授權(quán)表)啟動(dòng)mysqld 服務(wù) /usr/local/mysql/bin/mysqld_safe --skip-grant-table & 3、 使用空密碼的root用戶登錄數(shù)據(jù)庫(kù),重新設(shè)置ROOT用戶的密碼 #mysql -u root Mysql> Update mysql.user set password=password(‘新密碼’) where user=’root’; Mysql> flush privileges; |
7.把/data目錄及其子目錄下所有以擴(kuò)展名.txt結(jié)尾的文件中包含oldgirl的字符串全部替換為oldboy
1 2 | 答: find /data/ - type f -name "*.txt" | xargs sed -i 's/oldgirl/oldboy/g' |
8.創(chuàng)建目錄/data/oldboy,并且在該目錄下創(chuàng)建文件oldboy.txt,然后在文件“oldboy.txt”里寫入內(nèi)容“inet addr : 10.0.0.8 Bcast : 10.0.0.255 Mask :
255.255.255.0 ”(不包含引號(hào))
1 2 | 答: # mkdir -p /data/oldboy # echo "inet addr: 10.0.0.8 Bcast: 10.0.0.255 Mask:255.255.255.0" >> /data/oldboy/oldboy.txt |
9.腳本計(jì)算1+2+3…. +100=?
1 2 3 4 5 6 7 8 9 10 11 12 13 | 答: [root@localhost ~] # cat sum.sh #!/bin/bash num=1 sum =0 while [ $num - le 100 ] do sum =$( expr $ sum + $num) let num++ done echo "1+2+3...+100=" $ sum [root@localhost ~] # sh sum.sh 1+2+3...+100=5050 |
1.Apache和MySQL 兩種服務(wù)能否裝在同一臺(tái)機(jī)器上,如何查看Apache和mysql端口和進(jìn)程?
1 | 答案略 |
2.如何在一臺(tái)虛擬機(jī)上同時(shí)部署4個(gè)網(wǎng)站,訪問(wèn)域名分別是 www.test1.net www.test2.net test1.jjwxc.net test2.jjwxc.net
1 | 答案略 |
3.統(tǒng)計(jì)一下/var/log/nginx/access.log 日志中訪問(wèn)量最多的前十個(gè)IP?
1 2 3 | cat access_log | awk ‘{print $1}’ | uniq -c| sort -rn| head -10 或 awk '{print $1}' /var/log/nginx/access .log | sort | uniq -c | sort -nr -k1 | head -n 10 |
4.怎么查看當(dāng)前系統(tǒng)中每個(gè)IP的連接數(shù),怎么查看當(dāng)前磁盤的IO,怎么查看當(dāng)前網(wǎng)絡(luò)的IO?
答:
怎么查看當(dāng)前系統(tǒng)中每個(gè)IP的連接數(shù):
1 2 3 4 | # netstat -n | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c| sort –rn sort 命令:進(jìn)行排序,-r 反向排序 -n 使用純數(shù)字進(jìn)行排序 uniq 將重復(fù)的數(shù)據(jù)僅僅列出一個(gè)來(lái)顯示, uniq -c,進(jìn)行計(jì)數(shù) awk -F: '{print $1}' 以F 為分界符,取出第一個(gè):之前的數(shù)據(jù) |
怎么查看當(dāng)前磁盤的IO:
1) iostat可以提供豐富的IO狀態(tài)數(shù)據(jù)。
iostat 是 sysstat 工具集的一個(gè)工具,需要安裝。
1 2 3 4 5 6 7 | [root@localhost ~] # iostat -d -k 1 10 Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) 03 /23/2017 _x86_64_(2 CPU) Device: tps kB_read /s kB_wrtn /s kB_read kB_wrtn sda 16.60 597.83 29.44 384048 18909 scd0 0.03 0.10 0.00 66 0 dm-0 15.78 551.54 26.20 354311 16831 dm-1 0.22 1.97 0.00 1268 0 |
參數(shù) -d 表示,顯示設(shè)備(磁盤)使用狀態(tài);-k某些使用block為單位的列強(qiáng)制使用Kilobytes為單位;1 10表示,數(shù)據(jù)顯示每隔1秒刷新一次,共顯示10次。
tps:該設(shè)備每秒的傳輸次數(shù)。
kB_read/s:每秒從設(shè)備讀取的數(shù)據(jù)量;kB_wrtn/s:每秒向設(shè)備寫入的數(shù)據(jù)量;kB_read:讀取的總數(shù)據(jù)量;kB_wrtn:寫入 的總數(shù)量數(shù)據(jù)量;這些單位都為Kilobytes。
-x 參數(shù):使用-x參數(shù)我們可以獲得更多統(tǒng)計(jì)信息。
iostat -d -x -k 1 10 #查看設(shè)備使用率(%util)、響應(yīng)時(shí)間(%await)
await:每一個(gè)IO請(qǐng)求的處理的平均時(shí)間(單位是微秒)。這里可以理解為IO的響應(yīng)時(shí)間,一般地系統(tǒng)IO響應(yīng)時(shí)間應(yīng)該低于5ms,如果大于10ms就比較大了。
%util:在統(tǒng)計(jì)時(shí)間內(nèi)所有處理IO時(shí)間,除以總共統(tǒng)計(jì)時(shí)間。例如,如果統(tǒng)計(jì)間隔1秒,該 設(shè)備有0.8秒在處理IO,而0.2秒閑置,那么該設(shè)備的%util = 0.8/1 = 80%,所以該參數(shù)暗示了設(shè)備的繁忙程度。一般地,如果該參數(shù)是100%表示設(shè)備已經(jīng)接近滿負(fù)荷運(yùn)行了(當(dāng)然如果是多磁盤,即使%util是100%,因?yàn)榇疟P的并發(fā)能力,所以磁盤使用未必就到了瓶頸)。
2)使用iotop命令
要安裝iotop軟件包
iotop命令是一個(gè)用來(lái)監(jiān)視磁盤I/O使用狀況的top類工具。iotop具有與top相似的UI。Linux下的IO統(tǒng)計(jì)工具如iostat,nmon等大多數(shù)是只能統(tǒng)計(jì)到per設(shè)備的讀寫情況,如果你想知道每個(gè)進(jìn)程是如何使用IO的就比較麻煩,使用iotop命令可以很方便的查看。
怎么查看當(dāng)前網(wǎng)絡(luò)的IO:
iftop 查看網(wǎng)絡(luò)帶寬情況(必須從epel源安裝)
sar看看當(dāng)前網(wǎng)絡(luò)流量 ,sar -n DEV1 999 表示取樣間隔為1秒,取樣999次
5.寫一個(gè)腳本,實(shí)現(xiàn)批量添加20個(gè)用戶,用戶名為:user1-20,密碼為user后面跟著5個(gè)隨機(jī)字符或數(shù)字
答:
1 2 3 4 5 6 7 8 9 10 | [root@localhost ~] # cat useradd.sh #!/bin/bash name= "user" for number in $( seq 1 20) do password=$( cat /dev/urandom | head -1 | md5sum | head -c 5) useradd $name$number echo "user$password" | passwd --stdin user$number &> /dev/null echo "$name$number user$password" >> userinfo.txt done |
6.dmesg命令中看到ip-conntrack:table full,dropping packet,如何解決?
答:
線上web服務(wù)器在訪問(wèn)量很大時(shí),就會(huì)出現(xiàn)網(wǎng)絡(luò)連接丟包的問(wèn)題,通過(guò)dmesg命令查看日志,發(fā)現(xiàn)如下信息:
ip_conntrack: table full, dropping packet.
為什么會(huì)出現(xiàn) ip_conntrack: table full, dropping packet 呢?這里面關(guān)鍵的信息是"ip_conntrack: table full, dropping packet",從這里可以判斷出這跟iptables有關(guān)系了,因?yàn)閕ptables防火墻使用了ip_conntrack內(nèi)核模塊實(shí)現(xiàn)連接跟蹤功能,所有的進(jìn)出數(shù)據(jù)包都會(huì)記錄在連接跟蹤表中,包括tcp,udp,icmp等,一旦連接跟蹤表被填滿以后,就會(huì)發(fā)生丟包,導(dǎo)致網(wǎng)絡(luò)不穩(wěn)定。當(dāng)這張表滿了,就會(huì)在日志里面寫入該信息(執(zhí)行命令dmesge | more查看)。
而當(dāng)我們的服務(wù)器確實(shí)打開了iptables防火墻,并且都是在網(wǎng)站流量非常高的時(shí)候經(jīng)常會(huì)出現(xiàn)這個(gè)問(wèn)題。這個(gè)問(wèn)題的原因是由于web服務(wù)器收到了大量的連接,在啟用了iptables的情況下,iptables會(huì)把所有的連接都做鏈接跟蹤處理,這樣iptables就會(huì)有一個(gè)鏈接跟蹤表,當(dāng)這個(gè)表滿的時(shí)候,就會(huì)出現(xiàn)上面的錯(cuò)誤。
查看當(dāng)前連接數(shù):
1 2 | [root@localhost ~] # cat /proc/sys/net/netfilter/nf_conntrack_count 0 |
iptables的鏈接跟蹤表最大容量配置文件如下:
1 2 | [root@localhost ~] # cat /proc/sys/net/netfilter/nf_conntrack_max 65536 |
注:
由于nf_conntrack 工作在3層,支持IPv4和IPv6,而ip_conntrack只支持IPv4,因此nf_conntrack模塊在Linux的2.6.15內(nèi)核中被引入,而ip_conntrack在Linux的2.6.22內(nèi)核被移除(centos6.x版本),因此不同版本的系統(tǒng),配置文件也就不盡相同了。目前大多的ip_conntrack_*已被 nf_conntrack_* 取代,很多ip_conntrack_*僅僅是個(gè)軟鏈接,原先的ip_conntrack配置目錄/proc/sys/net/ipv4/netfilter/ 仍然存在,但是新的nf_conntrack在/proc/sys/net/netfilter/中,這樣做是為了能夠向下的兼容。
這個(gè)問(wèn)題該如何解決,解決方法一般有兩個(gè):
方法1:
1 2 3 4 5 | [root@localhost ~] # sysctl -w net.nf_conntrack_max=100000 net.nf_conntrack_max = 100000 [root@localhost ~] # cat /proc/sys/net/netfilter/nf_conntrack_max 100000 sysctl-p |
注:
嚴(yán)格來(lái)看重啟 iptables/ip6tables 會(huì)重新加載 nf_conntrack 相關(guān)的模塊, 引起參數(shù)恢復(fù)成默認(rèn)值。
以免重啟 iptables 引起參數(shù)失效. 也可以在 /etc/sysconfig/iptables-config 文件中開啟選項(xiàng) IPTABLES_SYSCTL_LOAD_LIST=”.nf_conntrack”, iptables 重啟后會(huì)進(jìn)行 sysctl 操作.
方法2:
不使用ip_conntrack,nf_conntrack_ipv4,xt_state模塊
7、varnish nginx squid各自緩存的優(yōu)缺點(diǎn)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 要做cache服務(wù)的話,我們肯定是要選擇專業(yè)的cache服務(wù),優(yōu)先選擇squid和varnish。 Varnish 高性能、開源的反向代理服務(wù)器和內(nèi)存緩存服務(wù)器。 優(yōu)點(diǎn): 1. 高性能; 2. 多核支持; 3. 支持0-60秒的精確緩存時(shí)間。 缺點(diǎn): 1. 不具備自動(dòng)容錯(cuò)和恢復(fù)功能,重啟后數(shù)據(jù)丟失; 2. 在線擴(kuò)容比較難。 3. 32位機(jī)器上緩存文件大小為最大2GB; 4. 不支持集群。 應(yīng)用場(chǎng)景: 并發(fā)要求不是很大的小型系統(tǒng)和應(yīng)用 nginx 1不支持帶參數(shù)的動(dòng)態(tài)鏈接 2Nginx緩存內(nèi)部沒(méi)有緩存過(guò)期和清理的任何機(jī)制,這些緩存的文件會(huì)永久性地保存在機(jī)器上,如果要緩存的東西非常多,那就會(huì)撐暴整個(gè)硬盤空間。 3只能緩存200狀態(tài)碼,因此后端返回301 /302/404 等狀態(tài)碼都不會(huì)緩存,假如恰好有一個(gè)訪問(wèn)量很大的偽靜態(tài)鏈接被刪除,那就會(huì)不停穿透導(dǎo)致后端承載不小壓力 4Nginx不會(huì)自動(dòng)選擇內(nèi)存或硬盤作為存儲(chǔ)介質(zhì),一切由配置決定,當(dāng)然在當(dāng)前的操作系統(tǒng)里都會(huì)有操作系統(tǒng)級(jí)的文件緩存機(jī)制,所以存在硬盤上也不需要過(guò)分擔(dān)心大并發(fā)讀取造成的io性能問(wèn)題。 Squid Squid,很古老的反向代理軟件,擁有傳統(tǒng)代理、身份驗(yàn)證、流量管理等高級(jí)功能,但是配置太復(fù)雜。它算是目前互聯(lián)網(wǎng)應(yīng)用得最多的反向緩存代理服務(wù)器,工作于各大古老的cdn上 squid的優(yōu)勢(shì)在于完整的龐大的cache技術(shù)資料,和很多的應(yīng)用生產(chǎn)環(huán)境 |
8、查詢DNS的深層結(jié)構(gòu)
當(dāng) DNS 客戶機(jī)需要查詢程序中使用的名稱時(shí),它會(huì)查詢本地DNS 服務(wù)器來(lái)解析該名稱。客戶機(jī)發(fā)送的每條查詢消息都包括3條信息,以指定服務(wù)器應(yīng)回答的問(wèn)題。
●
指定的 DNS 域名,表示為完全合格的域名 (FQDN) 。
● 指定的查詢類型,它可根據(jù)類型指定資源記錄,或作為查詢操作的專門類型。
● DNS域名的指定類別。
對(duì)于DNS
服務(wù)器,它始終應(yīng)指定為 Internet 類別。例如,指定的名稱可以是計(jì)算機(jī)的完全合格的域名,如im.qq.com,并且指定的查詢類型用于通過(guò)該名稱搜索地址資源記錄。
DNS 查詢以各種不同的方式進(jìn)行解析??蛻魴C(jī)有時(shí)也可通過(guò)使用從以前查詢獲得的緩存信息就地應(yīng)答查詢。DNS 服務(wù)器可使用其自身的資源記錄信息緩存來(lái)應(yīng)答查詢,也可代表請(qǐng)求客戶機(jī)來(lái)查詢或聯(lián)系其他
DNS 服務(wù)器,以完全解析該名稱,并隨后將應(yīng)答返回至客戶機(jī)。這個(gè)過(guò)程稱為遞歸。
另外,客戶機(jī)自己也可嘗試聯(lián)系其他的 DNS 服務(wù)器來(lái)解析名稱。如果客戶機(jī)這么做,它會(huì)使用基于服務(wù)器應(yīng)答的獨(dú)立和附加的查詢,該過(guò)程稱作迭代,即DNS服務(wù)器之間的交互查詢就是迭代查詢。
DNS
查詢的過(guò)程如下圖所示。
1 2 3 4 5 6 7 | 1、在瀏覽器中輸入www.qq.com域名,操作系統(tǒng)會(huì)先檢查自己本地的hosts文件是否有這個(gè)網(wǎng)址映射關(guān)系,如果有,就先調(diào)用這個(gè)IP地址映射,完成域名解析。 2、如果hosts里沒(méi)有這個(gè)域名的映射,則查找本地DNS解析器緩存,是否有這個(gè)網(wǎng)址映射關(guān)系,如果有,直接返回,完成域名解析。 3、如果hosts與本地DNS解析器緩存都沒(méi)有相應(yīng)的網(wǎng)址映射關(guān)系,首先會(huì)找TCP /ip 參數(shù)中設(shè)置的首選DNS服務(wù)器,在此我們叫它本地DNS服務(wù)器,此服務(wù)器收到查詢時(shí),如果要查詢的域名,包含在本地配置區(qū)域資源中,則返回解析結(jié)果給客戶機(jī),完成域名解析,此解析具有權(quán)威性。 4、如果要查詢的域名,不由本地DNS服務(wù)器區(qū)域解析,但該服務(wù)器已緩存了此網(wǎng)址映射關(guān)系,則調(diào)用這個(gè)IP地址映射,完成域名解析,此解析不具有權(quán)威性。 5、如果本地DNS服務(wù)器本地區(qū)域文件與緩存解析都失效,則根據(jù)本地DNS服務(wù)器的設(shè)置(是否設(shè)置轉(zhuǎn)發(fā)器)進(jìn)行查詢,如果未用轉(zhuǎn)發(fā)模式,本地DNS就把請(qǐng)求發(fā)至13臺(tái)根DNS,根DNS服務(wù)器收到請(qǐng)求后會(huì)判斷這個(gè)域名(.com)是誰(shuí)來(lái)授權(quán)管理,并會(huì)返回一個(gè)負(fù)責(zé)該頂級(jí)域名服務(wù)器的一個(gè)IP。本地DNS服務(wù)器收到IP信息后,將會(huì)聯(lián)系負(fù)責(zé).com域的這臺(tái)服務(wù)器。這臺(tái)負(fù)責(zé).com域的服務(wù)器收到請(qǐng)求后,如果自己無(wú)法解析,它就會(huì)找一個(gè)管理.com域的下一級(jí)DNS服務(wù)器地址(qq.com)給本地DNS服務(wù)器。當(dāng)本地DNS服務(wù)器收到這個(gè)地址后,就會(huì)找qq.com域服務(wù)器,重復(fù)上面的動(dòng)作,進(jìn)行查詢,直至找到www.qq.com主機(jī)。 6、如果用的是轉(zhuǎn)發(fā)模式,此DNS服務(wù)器就會(huì)把請(qǐng)求轉(zhuǎn)發(fā)至上一級(jí)DNS服務(wù)器,由上一級(jí)服務(wù)器進(jìn)行解析,上一級(jí)服務(wù)器如果不能解析,或找根DNS或把轉(zhuǎn)請(qǐng)求轉(zhuǎn)至上上級(jí),以此循環(huán)。不管是本地DNS服務(wù)器用是是轉(zhuǎn)發(fā),還是根提示,最后都是把結(jié)果返回給本地DNS服務(wù)器,由此DNS服務(wù)器再返回給客戶機(jī)。 從客戶端到本地DNS服務(wù)器是屬于遞歸查詢,而DNS服務(wù)器之間就是的交互查詢就是迭代查詢。 |
9、lvs的三種模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 一、NAT模式(VS-NAT) 原理:就是把客戶端發(fā)來(lái)的數(shù)據(jù)包的IP頭的目的地址,在負(fù)載均衡器上換成其中一臺(tái)RS的IP地址,并發(fā)至此RS來(lái)處理,RS處理完成后把數(shù)據(jù)交給經(jīng)過(guò)負(fù)載均衡器,負(fù)載均衡器再把數(shù)據(jù)包的原IP地址改為自己的IP,將目的地址改為客戶端IP地址即可期間,無(wú)論是進(jìn)來(lái)的流量,還是出去的流量,都必須經(jīng)過(guò)負(fù)載均衡器 優(yōu)點(diǎn):集群中的物理服務(wù)器可以使用任何支持TCP /IP 操作系統(tǒng),只有負(fù)載均衡器需要一個(gè)合法的IP地址。 缺點(diǎn):擴(kuò)展性有限。當(dāng)服務(wù)器節(jié)點(diǎn)(普通PC服務(wù)器)增長(zhǎng)過(guò)多時(shí),負(fù)載均衡器將成為整個(gè)系統(tǒng)的瓶頸,因?yàn)樗械恼?qǐng)求包和應(yīng)答包的流向都經(jīng)過(guò)負(fù)載均衡器。當(dāng)服務(wù)器節(jié)點(diǎn)過(guò)多時(shí),大量的數(shù)據(jù)包都交匯在負(fù)載均衡器那,速度就會(huì)變慢! 二、IP隧道模式(VS-TUN) 原理:首先要知道,互聯(lián)網(wǎng)上的大多Internet服務(wù)的請(qǐng)求包很短小,而應(yīng)答包通常很大。那么隧道模式就是,把客戶端發(fā)來(lái)的數(shù)據(jù)包,封裝一個(gè)新的IP頭標(biāo)記(僅目的IP)發(fā)給RS,RS收到后,先把數(shù)據(jù)包的頭解開,還原數(shù)據(jù)包,處理后,直接返回給客戶端,不需要再經(jīng)過(guò)負(fù)載均衡器注意,由于RS需要對(duì)負(fù)載均衡器發(fā)過(guò)來(lái)的數(shù)據(jù)包進(jìn)行還原,所以說(shuō)必須支持IPTUNNEL協(xié)議所以,在RS的內(nèi)核中,必須編譯支持IPTUNNEL這個(gè)選項(xiàng) 優(yōu)點(diǎn):負(fù)載均衡器只負(fù)責(zé)將請(qǐng)求包分發(fā)給后端節(jié)點(diǎn)服務(wù)器,而RS將應(yīng)答包直接發(fā)給用戶。所以,減少了負(fù)載均衡器的大量數(shù)據(jù)流動(dòng),負(fù)載均衡器不再是系統(tǒng)的瓶頸,就能處理很巨大的請(qǐng)求量,這種方式,一臺(tái)負(fù)載均衡器能夠?yàn)楹芏郣S進(jìn)行分發(fā)。而且跑在公網(wǎng)上就能進(jìn)行不同地域的分發(fā)。 缺點(diǎn):隧道模式的RS節(jié)點(diǎn)需要合法IP,這種方式需要所有的服務(wù)器支持”IP Tunneling”(IP Encapsulation)協(xié)議,服務(wù)器可能只局限在部分Linux系統(tǒng)上。 三、直接路由模式(VS-DR) 原理:負(fù)載均衡器和RS都使用同一個(gè)IP對(duì)外服務(wù)但只有DR對(duì)ARP請(qǐng)求進(jìn)行響應(yīng),所有RS對(duì)本身這個(gè)IP的ARP請(qǐng)求保持靜默也就是說(shuō),網(wǎng)關(guān)會(huì)把對(duì)這個(gè)服務(wù)IP的請(qǐng)求全部定向給DR,而DR收到數(shù)據(jù)包后根據(jù)調(diào)度算法,找出對(duì)應(yīng)的RS,把目的MAC地址改為RS的MAC(因?yàn)镮P一致)并將請(qǐng)求分發(fā)給這臺(tái)RS這時(shí)RS收到這個(gè)數(shù)據(jù)包,處理完成之后,由于IP一致,可以直接將數(shù)據(jù)返給客戶,則等于直接從客戶端收到這個(gè)數(shù)據(jù)包無(wú)異,處理后直接返回給客戶端由于負(fù)載均衡器要對(duì)二層包頭進(jìn)行改換,所以負(fù)載均衡器和RS之間必須在一個(gè)廣播域,也可以簡(jiǎn)單的理解為在同一臺(tái)交換機(jī)上 優(yōu)點(diǎn):和TUN(隧道模式)一樣,負(fù)載均衡器也只是分發(fā)請(qǐng)求,應(yīng)答包通過(guò)單獨(dú)的路由方法返回給客戶端。與VS-TUN相比,VS-DR這種實(shí)現(xiàn)方式不需要隧道結(jié)構(gòu),因此可以使用大多數(shù)操作系統(tǒng)做為物理服務(wù)器。 缺點(diǎn):(不能說(shuō)缺點(diǎn),只能說(shuō)是不足)要求負(fù)載均衡器的網(wǎng)卡必須與物理網(wǎng)卡在一個(gè)物理段上。 |
10、lvs/nginx/haproxy優(yōu)缺點(diǎn)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | Nginx的優(yōu)點(diǎn)是: 1、工作在網(wǎng)絡(luò)的7層之上,可以針對(duì)http應(yīng)用做一些分流的策略,比如針對(duì)域名、目錄結(jié)構(gòu),它的正則規(guī)則比HAProxy更為強(qiáng)大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點(diǎn)可利用的場(chǎng)合就遠(yuǎn)多于LVS了。 2、Nginx對(duì)網(wǎng)絡(luò)穩(wěn)定性的依賴非常小,理論上能 ping 通就就能進(jìn)行負(fù)載功能,這個(gè)也是它的優(yōu)勢(shì)之一;相反LVS對(duì)網(wǎng)絡(luò)穩(wěn)定性依賴比較大,這點(diǎn)本人深有體會(huì); 3、Nginx安裝和配置比較簡(jiǎn)單,測(cè)試起來(lái)比較方便,它基本能把錯(cuò)誤用日志打印出來(lái)。LVS的配置、測(cè)試就要花比較長(zhǎng)的時(shí)間了,LVS對(duì)網(wǎng)絡(luò)依賴比較大。 3、可以承擔(dān)高負(fù)載壓力且穩(wěn)定,在硬件不差的情況下一般能支撐幾萬(wàn)次的并發(fā)量,負(fù)載度比LVS相對(duì)小些。 4、Nginx可以通過(guò)端口檢測(cè)到服務(wù)器內(nèi)部的故障,比如根據(jù)服務(wù)器處理網(wǎng)頁(yè)返回的狀態(tài)碼、超時(shí)等等,并且會(huì)把返回錯(cuò)誤的請(qǐng)求重新提交到另一個(gè)節(jié)點(diǎn),不過(guò)其中缺點(diǎn)就是不支持url來(lái)檢測(cè)。比如用戶正在上傳一個(gè)文件,而處理該上傳的節(jié)點(diǎn)剛好在上傳過(guò)程中出現(xiàn)故障,Nginx會(huì)把上傳切到另一臺(tái)服務(wù)器重新處理,而LVS就直接斷掉了,如果是上傳一個(gè)很大的文件或者很重要的文件的話,用戶可能會(huì)因此而不滿。 5、Nginx不僅僅是一款優(yōu)秀的負(fù)載均衡器/反向代理軟件,它同時(shí)也是功能強(qiáng)大的Web應(yīng)用服務(wù)器。LNMP也是近幾年非常流行的web架構(gòu),在高流量的環(huán)境中穩(wěn)定性也很好。 6、Nginx現(xiàn)在作為Web反向加速緩存越來(lái)越成熟了,速度比傳統(tǒng)的Squid服務(wù)器更快,可以考慮用其作為反向代理加速器。 7、Nginx可作為中層反向代理使用,這一層面Nginx基本上無(wú)對(duì)手,唯一可以對(duì)比Nginx的就只有l(wèi)ighttpd了,不過(guò)lighttpd目前還沒(méi)有做到Nginx完全的功能,配置也不那么清晰易讀,社區(qū)資料也遠(yuǎn)遠(yuǎn)沒(méi)Nginx活躍。 8、Nginx也可作為靜態(tài)網(wǎng)頁(yè)和圖片服務(wù)器,這方面的性能也無(wú)對(duì)手。還有Nginx社區(qū)非?;钴S,第三方模塊也很多。 Nginx的缺點(diǎn)是: 1、Nginx僅能支持http、https和Email協(xié)議,這樣就在適用范圍上面小些,這個(gè)是它的缺點(diǎn)。 2、對(duì)后端服務(wù)器的健康檢查,只支持通過(guò)端口來(lái)檢測(cè),不支持通過(guò)url來(lái)檢測(cè)。不支持Session的直接保持,但能通過(guò)ip_hash來(lái)解決。 LVS LVS:使用Linux內(nèi)核集群實(shí)現(xiàn)一個(gè)高性能、高可用的負(fù)載均衡服務(wù)器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。 LVS的優(yōu)點(diǎn)是: 1、抗負(fù)載能力強(qiáng)、是工作在網(wǎng)絡(luò)4層之上僅作分發(fā)之用,沒(méi)有流量的產(chǎn)生,這個(gè)特點(diǎn)也決定了它在負(fù)載均衡軟件里的性能最強(qiáng)的,對(duì)內(nèi)存和cpu資源消耗比較低。 2、配置性比較低,這是一個(gè)缺點(diǎn)也是一個(gè)優(yōu)點(diǎn),因?yàn)闆](méi)有可太多配置的東西,所以并不需要太多接觸,大大減少了人為出錯(cuò)的幾率。 3、工作穩(wěn)定,因?yàn)槠浔旧砜关?fù)載能力很強(qiáng),自身有完整的雙機(jī)熱備方案,如LVS+Keepalived,不過(guò)我們?cè)陧?xiàng)目實(shí)施中用得最多的還是LVS /DR +Keepalived。 4、無(wú)流量,LVS只分發(fā)請(qǐng)求,而流量并不從它本身出去,這點(diǎn)保證了均衡器IO的性能不會(huì)收到大流量的影響。 5、應(yīng)用范圍比較廣,因?yàn)長(zhǎng)VS工作在4層,所以它幾乎可以對(duì)所有應(yīng)用做負(fù)載均衡,包括http、數(shù)據(jù)庫(kù)、在線聊天室等等。 LVS的缺點(diǎn)是: 1、軟件本身不支持正則表達(dá)式處理,不能做動(dòng)靜分離;而現(xiàn)在許多網(wǎng)站在這方面都有較強(qiáng)的需求,這個(gè)是Nginx /HAProxy +Keepalived的優(yōu)勢(shì)所在。 2、如果是網(wǎng)站應(yīng)用比較龐大的話,LVS /DR +Keepalived實(shí)施起來(lái)就比較復(fù)雜了,特別后面有Windows Server的機(jī)器的話,如果實(shí)施及配置還有維護(hù)過(guò)程就比較復(fù)雜了,相對(duì)而言,Nginx /HAProxy +Keepalived就簡(jiǎn)單多了。 HAProxy HAProxy的特點(diǎn)是: 1、HAProxy也是支持虛擬主機(jī)的。 2、HAProxy的優(yōu)點(diǎn)能夠補(bǔ)充Nginx的一些缺點(diǎn),比如支持Session的保持,Cookie的引導(dǎo);同時(shí)支持通過(guò)獲取指定的url來(lái)檢測(cè)后端服務(wù)器的狀態(tài)。 3、HAProxy跟LVS類似,本身就只是一款負(fù)載均衡軟件;單純從效率上來(lái)講HAProxy會(huì)比Nginx有更出色的負(fù)載均衡速度,在并發(fā)處理上也是優(yōu)于Nginx的。 4、HAProxy支持TCP協(xié)議的負(fù)載均衡轉(zhuǎn)發(fā),可以對(duì)MySQL讀進(jìn)行負(fù)載均衡,對(duì)后端的MySQL節(jié)點(diǎn)進(jìn)行檢測(cè)和負(fù)載均衡,大家可以用LVS+Keepalived對(duì)MySQL主從做負(fù)載均衡。 5、HAProxy負(fù)載均衡策略非常多,HAProxy的負(fù)載均衡算法現(xiàn)在具體有如下8種: ①roundrobin,表示簡(jiǎn)單的輪詢,這個(gè)不多說(shuō),這個(gè)是負(fù)載均衡基本都具備的; ② static-rr,表示根據(jù)權(quán)重,建議關(guān)注; ③leastconn,表示最少連接者先處理,建議關(guān)注; ④ source ,表示根據(jù)請(qǐng)求源IP,這個(gè)跟Nginx的IP_hash機(jī)制類似,我們用其作為解決session問(wèn)題的一種方法,建議關(guān)注; ⑤ri,表示根據(jù)請(qǐng)求的URI; ⑥r(nóng)l_param,表示根據(jù)請(qǐng)求的URl參數(shù)’balance url_param’ requires an URL parameter name; ⑦h(yuǎn)dr(name),表示根據(jù)HTTP請(qǐng)求頭來(lái)鎖定每一次HTTP請(qǐng)求; ⑧rdp-cookie(name),表示根據(jù)據(jù)cookie(name)來(lái)鎖定并哈希每一次TCP請(qǐng)求。 |
11、linux系統(tǒng)監(jiān)控命令,查看cpu負(fù)載內(nèi)存等情況
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | top 命令是Linux下常用的性能分析工具,比如cpu、內(nèi)存的使用,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類似于Windows的任務(wù)管理器。 top 顯示系統(tǒng)當(dāng)前的進(jìn)程和其他狀況,是一個(gè)動(dòng)態(tài)顯示過(guò)程,即可以通過(guò)用戶按鍵來(lái)不斷刷新當(dāng)前狀態(tài).如果在前臺(tái)執(zhí)行該命令,它將獨(dú)占前臺(tái),直到用戶終止該程序?yàn)橹? 比較準(zhǔn)確的說(shuō), top 命令提供了實(shí)時(shí)的對(duì)系統(tǒng)處理器的狀態(tài)監(jiān)視.它將顯示系統(tǒng)中CPU最“敏感”的任務(wù)列表.該命令可以按CPU使用.內(nèi)存使用和執(zhí)行時(shí)間對(duì)任務(wù)進(jìn)行排序;而且該命令的很多特性都可以通過(guò)交互式命令或者在個(gè)人定制文件中進(jìn)行設(shè)定。 top 命令參數(shù) d 指定每?jī)纱纹聊恍畔⑺⑿轮g的時(shí)間間隔。當(dāng)然用戶可以使用s交互命令來(lái)改變之。 p通過(guò)指定監(jiān)控進(jìn)程ID來(lái)僅僅監(jiān)控某個(gè)進(jìn)程的狀態(tài)。 q該選項(xiàng)將使 top 沒(méi)有任何延遲的進(jìn)行刷新。如果調(diào)用程序有超級(jí)用戶權(quán)限,那么 top 將以盡可能高的優(yōu)先級(jí)運(yùn)行。 S 指定累計(jì)模式 s 使 top 命令在安全模式中運(yùn)行。這將去除交互命令所帶來(lái)的潛在危險(xiǎn)。 i使 top 不顯示任何閑置或者僵死進(jìn)程。 c 顯示整個(gè)命令行而不只是顯示命令名 常用操作 top // 每隔5秒顯式所有進(jìn)程的資源占用情況 top -d2 // 每隔2秒顯式所有進(jìn)程的資源占用情況 top -c // 每隔5秒顯式進(jìn)程的資源占用情況,并顯示進(jìn)程的命令行參數(shù)(默認(rèn)只有進(jìn)程名) top -p12345-p6789 // 每隔5秒顯示pid是12345和pid是6789的兩個(gè)進(jìn)程的資源占用情況 top -d2-c-p123456 // 每隔2秒顯示pid是12345的進(jìn)程的資源使用情況,并顯式該進(jìn)程啟動(dòng)的命令行參數(shù) |
三、查看網(wǎng)絡(luò)流量的命令
1 | watch -n 1 "/sbin/ifconfig eth0 | grep bytes" |
四、docker四中網(wǎng)絡(luò)模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1 host模式 眾所周知,Docker使用了Linux的Namespaces技術(shù)來(lái)進(jìn)行資源隔離,如PID Namespace隔離進(jìn)程,Mount Namespace隔離文件系統(tǒng),Network Namespace隔離網(wǎng)絡(luò)等。一個(gè)Network Namespace提供了一份獨(dú)立的網(wǎng)絡(luò)環(huán)境,包括網(wǎng)卡、路由、Iptable規(guī)則等都與其他的Network Namespace隔離。一個(gè)Docker容器一般會(huì)分配一個(gè)獨(dú)立的Network Namespace。但如果啟動(dòng)容器的時(shí)候使用host模式,那么這個(gè)容器將不會(huì)獲得一個(gè)獨(dú)立的Network Namespace,而是和宿主機(jī)共用一個(gè)Network Namespace。容器將不會(huì)虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機(jī)的IP和端口。 例如,我們?cè)?0.10.101.105 /24 的機(jī)器上用host模式啟動(dòng)一個(gè)含有web應(yīng)用的Docker容器,監(jiān)聽tcp80端口。當(dāng)我們?cè)谌萜髦袌?zhí)行任何類似 ifconfig 命令查看網(wǎng)絡(luò)環(huán)境時(shí),看到的都是宿主機(jī)上的信息。而外界訪問(wèn)容器中的應(yīng)用,則直接使用10.10.101.105:80即可,不用任何NAT轉(zhuǎn)換,就如直接跑在宿主機(jī)中一樣。但是,容器的其他方面,如文件系統(tǒng)、進(jìn)程列表等還是和宿主機(jī)隔離的。 2 container模式 在理解了host模式后,這個(gè)模式也就好理解了。這個(gè)模式指定新創(chuàng)建的容器和已經(jīng)存在的一個(gè)容器共享一個(gè)Network Namespace,而不是和宿主機(jī)共享。新創(chuàng)建的容器不會(huì)創(chuàng)建自己的網(wǎng)卡,配置自己的IP,而是和一個(gè)指定的容器共享IP、端口范圍等。同樣,兩個(gè)容器除了網(wǎng)絡(luò)方面,其他的如文件系統(tǒng)、進(jìn)程列表等還是隔離的。兩個(gè)容器的進(jìn)程可以通過(guò)lo網(wǎng)卡設(shè)備通信。 3 none模式 這個(gè)模式和前兩個(gè)不同。在這種模式下,Docker容器擁有自己的Network Namespace,但是,并不為Docker容器進(jìn)行任何網(wǎng)絡(luò)配置。也就是說(shuō),這個(gè)Docker容器沒(méi)有網(wǎng)卡、IP、路由等信息。需要我們自己為Docker容器添加網(wǎng)卡、配置IP等。 4 bridge模式 bridge模式是Docker默認(rèn)的網(wǎng)絡(luò)設(shè)置,此模式會(huì)為每一個(gè)容器分配Network Namespace、設(shè)置IP等,并將一個(gè)主機(jī)上的Docker容器連接到一個(gè)虛擬網(wǎng)橋上。下面著重介紹一下此模式。host模式 使用Docker run時(shí)使用–net=host指定 Docker使用的網(wǎng)絡(luò)實(shí)際上和宿主機(jī)一樣,在容器內(nèi)看到的網(wǎng)卡ip是宿主機(jī)上的ip。 docker常用命令 1. docker version 查看docker的版本號(hào),包括客戶端、服務(wù)端、依賴的Go等 2. docker info 查看系統(tǒng)(docker)層面信息,包括管理的images, containers數(shù)等 3. docker search <image>在docker index中搜索image 4. docker pull <image>從docker registry server 中下拉image 5. docker push <image|repository>推送一個(gè)image或repository到registry 6. docker push <image|repository>:TAG 同上,指定tag 7. docker inspect <image|container>查看image或container的底層信息 8. docker images 查看本機(jī)images 9. docker images –a 列出所有的images 10. dockerps默認(rèn)顯示正在運(yùn)行中的container 六、docker怎么實(shí)現(xiàn)容器間的獨(dú)立 |
12、實(shí)現(xiàn)高可用工具有哪些
1 2 | hearbeat keepalived |
13、mysql數(shù)據(jù)備份工具
1 2 3 4 5 6 7 8 | mysqldump工具 Mysqldump是mysql自帶的備份工具,目錄在bin目錄下面: /usr/local/mysql/bin/mysqldump ,支持基于innodb的熱備份。但是由于是邏輯備份,所以速度不是很快,適合備份數(shù)據(jù)比較小的場(chǎng)景。Mysqldump完全備份+二進(jìn)制日志可以實(shí)現(xiàn)基于時(shí)間點(diǎn)的恢復(fù)。 基于LVM快照備份 在物理備份中,有基于文件系統(tǒng)的物理備份(LVM的快照),也可以直接用 tar 之類的命令對(duì)整個(gè)數(shù)據(jù)庫(kù)目錄進(jìn)行打包備份,但是這些只能進(jìn)行泠備份,不同的存儲(chǔ)引擎?zhèn)浞莸囊膊灰粯?,myisam自動(dòng)備份到表級(jí)別,而innodb不開啟獨(dú)立表空間的話只能備份整個(gè)數(shù)據(jù)庫(kù)。 tar 包備份 percona提供的xtrabackup工具 支持innodb的物理熱備份,支持完全備份,增量備份,而且速度非常快,支持innodb存儲(chǔ)引起的數(shù)據(jù)在不同數(shù)據(jù)庫(kù)之間遷移,支持復(fù)制模式下的從機(jī)備份恢復(fù)備份恢復(fù) ,為了讓xtrabackup支持更多的功能擴(kuò)展,可以設(shè)立獨(dú)立表空間,打開 innodb_file_per_table功能,啟用之后可以支持單獨(dú)的表備份。 |
14、awk和sed的區(qū)別
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | awk 是一種程序語(yǔ)言,對(duì)文檔資料的處理具有很強(qiáng)的功能。 awk 擅長(zhǎng)從格式化報(bào)文或從一個(gè)大的文本文件中抽取數(shù)據(jù)。 awk 的命令格式為: awk [-F filed-separator] “commands” input- file (s) awk 將一行文字按分隔符(filed-separator)分為多個(gè)域,依次記為$ 1,$ 2 . . . $ n。$0代表所有域值。因此 awk 更適合于以域?yàn)閱挝粊?lái)處理文件。加之ARGIND等內(nèi)置變量,使 awk 能處理多個(gè)文件。典型的應(yīng)用為查找一個(gè)文件中的某個(gè)字段是否在另一個(gè)文件中出現(xiàn) sed 是一個(gè)精簡(jiǎn)的、非交互式的編輯器。它能執(zhí)行與編輯 vi 和emacs相同的編輯任務(wù),但 sed 編輯器不提供交互使用方式,只能在命令行下輸入編輯命令。 sed 的命令格式為: sed [options] 'command' file (s) sed [options] -f scrīptfile file (s) 作為編輯器,當(dāng)然少不了插入(a/、i/)、刪除(d)、查找替換(s)等命令。 如果文件是格式化的,即由分隔符分為多個(gè)域的,優(yōu)先使用 awk awk 適合按列(域)操作, sed 適合按行操作 awk 適合對(duì)文件的抽取整理, sed 適合對(duì)文件的編輯。 |
15、介紹CDN的作用
1 2 3 | CDN加速簡(jiǎn)單的來(lái)說(shuō),就是把原服務(wù)器上數(shù)據(jù)復(fù)制到其他服務(wù)器上,用戶訪問(wèn)時(shí),那臺(tái)服務(wù)器近訪問(wèn)到的就是那臺(tái)服務(wù)器上的數(shù)據(jù)。CDN加速優(yōu)點(diǎn)是成本低,速度快??梢杂肅DN best的CDN進(jìn)行加速,免費(fèi),可部署私有,公有CDN系統(tǒng)。可以實(shí)現(xiàn)宕機(jī)檢測(cè),自動(dòng)切換ip,分線路,分組解析。也就是 CDN加速 的主要作用就是保證網(wǎng)站的正常訪問(wèn),及加快網(wǎng)站訪問(wèn)速度和響應(yīng)速度,防止網(wǎng)站因黑客攻擊,DNS解析劫持故障等導(dǎo)致的網(wǎng)站服務(wù)器的宕機(jī)狀況的出現(xiàn)。 |
16、 keepalive的工作原理和如何做到健康檢查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | keepalived是以VRRP協(xié)議為實(shí)現(xiàn)基礎(chǔ)的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議。 虛擬路由冗余協(xié)議,可以認(rèn)為是實(shí)現(xiàn)路由器高可用的協(xié)議,即將N臺(tái)提供相同功能的路由器組成一個(gè)路由器組,這個(gè)組里面有一個(gè)master和多個(gè)backup,master上面有一個(gè)對(duì)外提供服務(wù)的vip(該路由器所在局域網(wǎng)內(nèi)其他機(jī)器的默認(rèn)路由為該vip),master會(huì)發(fā)組播,當(dāng)backup收不到vrrp包時(shí)就認(rèn)為master宕掉了,這時(shí)就需要根據(jù)VRRP的優(yōu)先級(jí)來(lái)選舉一個(gè)backup當(dāng)master。這樣的話就可以保證路由器的高可用了。 keepalived主要有三個(gè)模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負(fù)責(zé)主進(jìn)程的啟動(dòng)、維護(hù)以及全局配置文件的加載和解析。check負(fù)責(zé)健康檢查,包括常見(jiàn)的各種檢查方式。vrrp模塊是來(lái)實(shí)現(xiàn)VRRP協(xié)議的。 Keepalived健康檢查方式配置 HTTP_GET|SSL_GET HTTP_GET | SSL_GET { url { path / # HTTP/SSL 檢查的url可以是多個(gè) digest <STRING> # HTTP/SSL 檢查后的摘要信息用工具genhash生成 status_code 200 # HTTP/SSL 檢查返回的狀態(tài)碼 } connect_port 80 # 連接端口 bindto<IPADD> connect_timeout 3 # 連接超時(shí)時(shí)間 nb_get_retry 3 # 重連次數(shù) delay_before_retry 2 #連接間隔時(shí)間 } |
17、 squid的默認(rèn)緩存大小是多少?
1 | 1024MB |
18、查看Linux系統(tǒng)的所有配置的命令(除了cpuinfo和meinfo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 查看主板的序列號(hào): dmidecode | grep -i ’serial number’ 用硬件檢測(cè)程序kuduz探測(cè)新硬件:service kudzu start ( or restart) 查看CPU信息: cat /proc/cpuinfo [dmesg | grep -i 'cpu' ][dmidecode -t processor] 查看內(nèi)存信息: cat /proc/meminfo [ free -m][vmstat] 查看板卡信息: cat /proc/pci 查看顯卡/聲卡信息:lspci | grep -i ‘VGA’[dmesg | grep -i 'VGA' ] 查看網(wǎng)卡信息:dmesg | grep -i ‘eth’[ cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i 'eth' ] www.2cto.com <!-- more --> 查看PCI信息:lspci (相比 cat /proc/pci 更直觀) 查看USB設(shè)備: cat /proc/bus/usb/devices 查看鍵盤和鼠標(biāo): cat /proc/bus/input/devices 查看系統(tǒng)硬盤信息和使用情況: fdisk & disk – l & df 查看各設(shè)備的中斷請(qǐng)求(IRQ): cat /proc/interrupts 查看系統(tǒng)體系結(jié)構(gòu): uname -a |
19、用shell腳本或命令將/opt目錄下的大于15KB的文件都移到/tmp目錄下
find /opt -size +15k -exec mv {} /tmp/ \;
20、寫過(guò)哪些python腳本?
這個(gè)程序的作用是跳過(guò)最新的7*24個(gè)備份,刪除其他的時(shí)間更長(zhǎng)的
# -*- coding: cp936 -*-
import os #os是python自帶的一個(gè)擴(kuò)展庫(kù),用來(lái)進(jìn)行跟系統(tǒng)相關(guān)的操作
skipNum = 24 * 7 #保留文件夾的數(shù)目(小時(shí)
* 天)
print '\n*************清除時(shí)間超過(guò) ' + str(skipNum /24) + ' 天的自動(dòng)備份文件**************\n\n'
backupDir = os.path.abspath(__file__) + '\\..\\..' + '\\servedatabase_autobackup'
for
dir in os.listdir(backupDir): #os.listdir(xxx)函數(shù)返回的是一個(gè)文件列表
if dir[-4:] == '.map':
mapDir = backupDir + '\\' + dir
print '正在清除備份目錄:' +
os.path.abspath(mapDir)
subDirs = os.listdir(mapDir) #獲取文件列表
subDirs.reverse() #逆序
i = 0
for subDir in subDirs:
i+=1
if i>skipNum:
print '正在清除備份: ' + subDir
os.system('rmdir ' + mapDir + '\\' + subDir + ' /s/q') #相當(dāng)于執(zhí)行控制臺(tái)命令
歡迎加技術(shù)群:323779636(Shell/Python運(yùn)維開發(fā)群)
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: