文章目錄
- 原題
- 前言
- 1. Nginx反向代理配置,此類url www.abc.com/refuse,禁止訪問,返回403
- 2. 如何使用iptables將本地80端口的請求轉發到8080端口,當前主機IP爲192.168.16.1,其中本地網卡eth0:
- 3. 如何查看Linux系統當前的狀態,cpu內存的使用情況及負載
- 4. nginx如何重定義或者添加發往後端服務器的請求頭
- 5. 編寫shell腳本,將當前目錄下大於10K的文件轉移到/tmp目錄下
- 6. 寫出你所瞭解的門戶網站的服務架構,可用什麼方式實現的高可用、負載均衡?
- 7. nginx 日誌過濾10點到12點之間訪問IP排名和統計
- 8. 在11月份內,每天的早上6點到12點,每隔2小時執行一次usr/bin/httpd.sh怎麼實現
- 9. 分佈式文件存儲是否有過了解和使用,瞭解過的有什麼特性
- 10. 使用netstat和awk命令統計下網絡連接數:
- 11. 在linux下,假設nginx日誌的路徑爲opt/logs/access.logs,日誌不能自動分割,請寫出一個簡單的腳本,讓日誌每天能夠定時自動分割
- 12. 寫出raid的幾種模式,以及他們的特點
- 13. 寫一個腳本,查找15天前以png結尾的文件並刪除
- 14. 對於服務器的監控使用過哪類工具及其特點
- 15. 作爲運維工程師,你對該職位的認識和理解有哪些,日常工作中應該怎麼做
原題
前言
1. Nginx反向代理配置,此類url www.abc.com/refuse,禁止訪問,返回403
location /www.abc.com/refuse {
return 403;
}
2. 如何使用iptables將本地80端口的請求轉發到8080端口,當前主機IP爲192.168.16.1,其中本地網卡eth0:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.16.1:80
3. 如何查看Linux系統當前的狀態,cpu內存的使用情況及負載
系統
# uname -a # 查看內核/操作系統/CPU信息
# head -n 1 /etc/issue # 查看操作系統版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看計算機名
# lspci -tv # 列出所有PCI設備
# lsusb -tv # 列出所有USB設備
# lsmod # 列出加載的內核模塊
# env # 查看環境變量
資源
# free -m # 查看內存使用量和交換區使用量
# df -h # 查看各分區使用情況
# du -sh # 查看指定目錄的大小
# grep MemTotal /proc/meminfo # 查看內存總量
# grep MemFree /proc/meminfo # 查看空閒內存量
# uptime # 查看系統運行時間、用戶數、負載
# cat /proc/loadavg # 查看系統負載
4. nginx如何重定義或者添加發往後端服務器的請求頭
headers-more-nginx-module 模塊用於添加,修改,或者清除 請求/響應頭
more_set_headers 用於添加、修改、清除響應頭
more_clear_headers 用於清除響應頭
more_set_input_headers 用於添加、修改、清除請求頭
more_clear_input_headers 用於清除請求頭
5. 編寫shell腳本,將當前目錄下大於10K的文件轉移到/tmp目錄下
#!/bin/bash
for Filename in $(ls -l |awk '$5 > 10240 {print $9}')
do
mv $Filename /tmp
done
6. 寫出你所瞭解的門戶網站的服務架構,可用什麼方式實現的高可用、負載均衡?
軟負載: nginx+keepalived
lvs+keepalived
應負載: F5
補充:
代理服務器一般使用nginx 作爲反向代理
web服務器: 一般使用nginx
緩存服務器一般使用redis或者memcached
數據庫服務器:一般使用mysql
常見的web集羣:
apache+tomcat;nginx+tomcat;lvs+nginx+tomcat(lvs負責集羣調度,nginx負責靜態文件處理,tomcat負責動態文件)
LVS+keepalive 高可用。
7. nginx 日誌過濾10點到12點之間訪問IP排名和統計
nginx的日誌格式如下圖:
[root@zmedu-17 logs]# pwd
/usr/local/nginx/logs
[root@zmedu-17 logs]# ls
access.log error.log nginx.pid
[root@zmedu-17 logs]# cat access.log | grep "16/Jun/2020" | sed -n '/07:39:54/,/08:00:01/p' | awk '{print $1}' | sort | uniq -c | sort -t " " -k2 -n -r
8 192.168.1.4
8. 在11月份內,每天的早上6點到12點,每隔2小時執行一次usr/bin/httpd.sh怎麼實現
0 6-12/2 * 11 * /usr/bin/httpd.sh
9. 分佈式文件存儲是否有過了解和使用,瞭解過的有什麼特性
FastDFS
解決了大數據量的存儲和負載均衡問題,特別適合中小文件爲載體的在線服務,比如在線相冊,視頻網站等等。 網盤社區,廣告和應用下載的存儲。
補充:
單機時代: 在靜態目錄中存放文件資源。
優點:便利,項目直接引用目錄,不需要複雜的技術
缺點: 如果作爲前端網站使用,代碼和文件耦合在一起,文件越多存放越混亂。如果流量大,靜態文件訪問會佔用一定 的資源,影響業務的正常運行
獨立文件服務器時代:
缺點:點擊存在性能瓶頸,容災,垂直擴展能力較差。
比如獨立的圖片服務器,項目上次文件的時候,通過ssh或者ftp上傳到圖片服務器的某個目錄下,在通過nginx來訪問此目錄,返回一個獨立域名的url地址。
分佈式文件系統:
優點: 定時備份,如果一臺down掉,迅速切換到另一臺。擴展能力強,能夠保證文件系統的可用性,也能夠保證數據的完整性和唯一性
缺點: 系統複雜程度較高,需要更多服務器
常見的分佈式文件系統還有: GlusterFS, GoogleFS, TFS, OSS
10. 使用netstat和awk命令統計下網絡連接數:
[root@zmedu-17 ~]# netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
ESTABLISHED 3
補充:
CLOSED:無連接是活動的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
11. 在linux下,假設nginx日誌的路徑爲opt/logs/access.logs,日誌不能自動分割,請寫出一個簡單的腳本,讓日誌每天能夠定時自動分割
#! /bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
minute=$(date -d "1 minute ago" +"%Y%m%d-%H:%M")
mkdir -p $base_path/$log_path
echo $base_path/access.log
mv $base_path/access.log $base_path/$log_path/access_$minute.log
echo $base_path/$log_path/access_$minite.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
#crontab -l
* * 1 * * eck_nginx_log.sh
12. 寫出raid的幾種模式,以及他們的特點
raid 名稱 特點
raid0 提高讀寫性能,最少兩塊容量爲N的硬盤,容量爲2N
raid1 提高數據安全性,提高讀取性能,不能提高寫入性能,2003自帶raid1功能,最少兩塊容量爲N的硬盤,容量爲N
raid10 先提高安全性,再提高性能,最少4塊容量爲N的硬盤,容量爲2N,RAID10比RAID01在安全性方面要強(體現在容錯率上)
raid01 先提高性能,再提高安全性,最少4塊容量爲N的硬盤,容量爲2N
raid5 提升安全性,安全性低於raid10(三塊盤的情況下),大文件讀寫沒有優勢,小文件讀寫能力低於raid10,最低三塊盤,容量爲2快盤
13. 寫一個腳本,查找15天前以png結尾的文件並刪除
#!/bin/bash
find /picture/*.png* -type f -mtime +15 -exec rm {} \;
14. 對於服務器的監控使用過哪類工具及其特點
zabbix, prometheus, cacti ,nagios
15. 作爲運維工程師,你對該職位的認識和理解有哪些,日常工作中應該怎麼做
做運維崗位帶給你的改變:
16. 可以認識更多的人,同時也能被更多的人認識, 對於一個喜歡溝通和交流的我來說,更能夠在這個崗位上乾的長久。
17. 運維人員臨場應變能力和處理突發事件的能力會隨着工作經驗的增長而增強。更容易養成未雨綢繆,思維上得到鍛鍊,考慮問題更全面,細緻,透徹,且內心承受能來強大
18. 運維能力不是高學歷可以搞定的,需要的是勤奮努力,善於總結
其次: 運維不是單純的運維維護,而是運維規範和規則的制定者以及安全運維規範的忠實維護者和踐行者。
在工作中應該做什麼?
1. 監控,報警,線上部署
2. 腳本自動化,工具自動化
3. 故障處理
要弄懂底層原理,比如監控: 任何的監控都是: 收集數據,存儲數據,數據分析,數據指標展示,告警五個部分。理解了這個,對於任何監控你可以去分析,哪個模塊是在分析數據,哪個模塊是在收集數據,能不能用其他的代替。