nginx配置反向代理。 php
vim Nginx.confcss
Server模塊中配置html
Listen 80前端
Server_name ip;node
在server段裏面的location加上proxy_pass http://ip:端口;mysql
Nginx配置完成後重啓一下nginx。linux
配置代理多個網站及服務ios
配置多個反向代理實現方式,是經過不一樣的端口代理訪問。這裏複製一個server段,將兩個server段nginx的端口更改,使用nginx的不一樣端口訪問。nginx
Server1配置:web
listen *:端口;>>>>多個反向代理使用不一樣端口
Server_name ip;>>>>註釋掉,使用端口訪問
在location 裏面的proxy_pass 配置Tomcat1,ip 加Tomcat端口
Server2配置:
listen *:端口;>>>>多個反向代理使用不一樣端口
Server_name ip;>>>>註釋掉,使用端口訪問
在location 裏面的proxy_pass 配置Tomcat2,ip 加Tomcat端口
負載均衡:
使用兩臺服務器,分別安裝nginx 和通Tomcat,端口號分別爲8080 和8081,
經過在nginx的upstream參數中添加應用服務器IP後添加指定參數,在location塊中配置動態組名稱,在訪問網頁的時候就會經過upstream中的配置項將指令分發給服務器。
動靜分離:
將靜態資源部署在Nginx上,當一個請求來的時候,若是是靜態資源的請求,就直接到nginx配置的靜態資源目錄下面獲取資源,若是是動態資源的請求,nginx利用反向代理的原理,把請求轉發給後臺應用去處理,從而實現動靜分離。
工做原理:Nginx由內核和模塊組成,其中,內核的設計很是微小和簡潔,完成的工做也很是簡單,僅僅經過查找配置文件將客戶端請求映射到一個location block(location是Nginx配置中的一個指令,用於URL匹配),而在這個location中所配置的每一個指令將會啓動不一樣的模塊去完成相·應的工做。
優化:3.網絡IO事件模型優化4.隱藏軟件名稱和版本號5.防盜鏈優化6.禁止惡意域名解析7.禁止經過IP地址訪問網站10.嚴格設置web站點目錄的權限 11.HTTP請求方法優化
主從複製:
主服務器:
從服務器:
1.修改mysql配置
一樣找到my.cnf配置文件,添加server-id
2.重啓mysql,打開mysql會話,執行同步SQL語句
3.啓動slave同步進程:
讀寫分離:
首先在主mysql上面建一個受權用戶稍後給amoeba使用,1.經過安裝amoeba,修改dbserver.xml配置文件,修改26行左右,指定mysql帳戶名稱和密碼,指定mysql主從的IP。2.修改amoeba.xml配置文件,修改amoeba代理的帳號和密碼,修改120左右的調用配置,而後實現讀寫分離。
mysql的讀寫分離的基本原理是:讓master(主數據庫)來響應事務性操做,讓slave(從數據庫)來響應select非事務性操做,而後再採用主從複製來把master上的事務性操做同步到slave數據庫中。
mysql優化:
1.選擇合適的存儲弓擎: InnoDB
2.保證從內存中讀取數據。將數據保存在內存中
3.按期優化重建數據庫
4.下降磁盤寫入操做
5.提升磁盤讀寫速度
6.充分使用索引
7.分析查詢日誌和慢查詢日誌
mysqldump -h主機名 -P端口 -u用戶名 -p密碼 --database 數據庫名 > 文件名.sql
Tomcat目錄:conf bin logs webapps work lib temp
配置文件通常都在conf文件夾裏,主要有server.xml,context.xml,tomcat_user.xml,web.xml四個經常使用配置文件,server主要是服務器設置的,例如端口設置,路徑設置。context裏設置tomcat數據源,用來鏈接數據庫。tomcat_user主要是用戶名和密碼的設置。web是默認首頁等等之類的設置。
bin/catalina.bat/sh,配置內存
tomcat優化:
句柄鏈接數,最大併發數,線程數,請求超時時間,禁止tomcat manager管理入口
關閉shutdown端口
做用:
主要用Redis實現緩存數據的存儲,能夠設置過時時間.對於一些高頻讀寫、臨時存儲的數據特別適合.
應用場景:
緩存 分佈式會話 分佈式鎖 最新列表 消息系統
conf下zoo_sample.cfg修改成Zoo_cfg
做用:分佈式協調通知 增強集羣穩定性 增強集羣持續性 保證集羣有序性 保證集羣高效
註冊中心
服務提供方:針對所提供的服務到註冊中心發佈。
服務消費方:到服務中心訂閱所需的服務。
對於任何一方,不論服務提供方或者服務消費方都有可能同時兼具兩種角色,即須要提供服務也須要消費服務。
→1.LVS調度器收到目標地址爲VIP的請求包後,將MAC地址改爲RS(真正的服務器)的MAC地址。並經過交換機(鏈路層)發給RS。
2.RS的鏈路層收到請求包後,往上傳給IP層。IP層須要驗證請求的目標IP地址,因此RS須要配置一個VIP的 loopbak device(策略文件)。這樣RS的IP層收到報文後,會往上遞交給傳輸層,之因此配置成loopbak device,是由於loopbak device 對外不可見,不會跟LVS的VIP衝突。
3.RS處理完成後,將應答包直接返回給客戶端。
工做模式:
LVS-DR,LVS-NAT,LVS-FULLNAT,LVS-TUN
檢查web服務器的狀態,若是有一臺web服務器/mysql服務器宕機或故障,keepalived將故障節點從系統中剔除,當故障恢復的時候自動加入服務器集羣中,很是智能化,只須要手動修復壞的節點便可。
負載均衡步驟:
1、安裝master組件和依賴包(keepalive+lvs)
2、備份keepalived配置文件
3、編輯keepalived配置文件
4、開啓路由轉發
5、重啓keepalived服務並設置開機自啓
主從一樣步驟,修改keepalived.conf時state主從分別修改成master和backup。
在web1和web2服務器上安裝nginx,並修改內核參數,而後添加虛擬主機IP。
消息隊列,用在分佈式系統存儲轉發消息
應用場景:異步處理,應用解耦,流量削峯
長鏈接超時時間
客戶端超時時間
守護進程模式
最大鏈接數
/etc/haproxy/haproxy.cfg
做用:高可用,負載均衡和用於TCP和基於http的應用程序代理
優勢:
HAProxy支持數以萬計的 併發鏈接。
同時能夠保護你的web服務器不被暴露到網絡上。
MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫
MongoDB優化:
1.cachesizeGB(緩存大小) 按配額的60%左右配置便可
2.oplogsizeMB (固定集合) 設置爲可用disk空間的5%
3.啓用Log Rotation日誌切換 防止MongoDB的log文件無限增大,佔用太多磁盤空間,使用Log Rotation並及時清理歷史日誌文件
4.stack size (鏈接內存優化) Stack設置小一點,好比說1024
5.MongoDB打開文件數優化 設置文件打開描述數量
Zabbix做用:監控網路主機
監控:CPU負荷 內存使用,磁盤使用,日誌監視,端口監視,網絡狀態,
zabbix優化:
1.輪詢器實例數量 2.不可達主機 3.HTTP 輪詢器子進程實例個數 4.緩存大小5.歷史緩存數據大小 5.trappers進程實例數量
工做原理:
Agent安裝在被監控的主機上,Agent負責按期收集客戶端本地各項數據,併發送至Zabbix Server端,Zabbix Server收到數據,將數據存儲到數據庫中,用戶基於Zabbix WEB能夠看到數據在前端展示圖像。當Zabbix監控某個具體的項目,項目會設置一個觸發器閾值,當被監控的指標超過該觸發器設定的閾值,會進行一些必要的動做,動做包括:發送信息(郵件、微信、短信)、發送命令(SHELL 命令、Reboot、Restart、Install等)。
配置文件:/etc/httpd/conf/httpd.conf
1. 移除不用的模塊。2將緩存放在獨立的磁盤3.使用持久鏈接4.不要設置KeepAliveTimeout過高 5.提升寫入緩衝器( Write Buffer)大小6.提升最大打開文件7.頻繁訪問的數據設置緩存。
網絡文件系統是應用層的一種應用服務,它主要應用於Linux和Linux系統、Linux和Unix系統之間的文件或目錄的共享。對於用戶而言能夠經過 NFS方便的訪問遠地的文件系統,使之成爲本地文件系統的一部分。採用NFS以後省去了登陸的過程,方便了用戶訪問系統資源。
mount -t nfs -o ro ip:/共享目錄 /本地目錄
掛載失敗:
1.防火牆受阻 2.nfs配置有問題,3.客戶端和服務端是不是同一個網段
配置:
/etc/hosts文件中添加被管理服務器ip
Ansible性能調優
1、 Ansible SSH 關閉祕鑰檢測
2、 OpenSSH鏈接優化
3、SSH pipelining(管道輸送)加速Ansible (默認關閉)
4、 Ansible Facts緩存優化
自動化:在管理服務器上建立文件,經過命令行將指令傳輸到各個被管理服務器上
Rsync能夠再不一樣的主機 之間鏡像同步整個目錄樹,支持增量備份,保持連接屬性和權限,採用優化的同步算法,傳輸前執行壓縮,適合異地備份,鏡像服務等應用,是一種經常使用的文件備份工具及數據同步工具。
⑴登陸系統:不使用root登陸,經過sudo受權管理,使用普通用戶登陸。
⑶時間同步:定時自動更新服務器時間。
⑷配置yum更新源,從國內更新下載安裝rpm包。
⑸關閉selinux及iptables(iptables工做場景若有wan ip,通常要打開,高併發除外)
⑻精簡開機啓動服務(crond、sshd、network、rsyslog)
⑼Linux內核參數優化/etc/sysctl.conf,執行sysct -p生效。
⑾鎖定關鍵系統文件(chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 處理以上內容後,把chatter更名,就更安全了。)
1.忘記linux root密碼
這個問題出現的概率是很高的,不過,在linux下解決這個問題也很簡單,只需重啓linux系統,而後引導進入linux的單用戶模式(init 1),因爲單用戶模式是不須要輸入登陸密碼的,所以,能夠直接登陸系統,修改root密碼便可解決問題。
2.grub.conf丟失和解決辦法
//刪除/bootr/grub/gub.conf文件
//刪除後從新啓動查看出現的問題
能夠看出系統是沒法從硬盤啓動了
(2)解決辦法
一種是在無Live-CD光盤時解決,具體操做以下:
系統重啓後,進入grub模式
首先查看/boot分區所在的位置,系統內核,第三行是臨時系統鏡像文件所在的位置,而後boot重啓。
啓動起來後進入/boot/grub目錄下編輯grub.conf文件:
編輯grub.conf的內容以下:
配置啓動菜單項,等待時間,菜單名稱,root啓動文件的位置,啓動時的系統內核位置及名稱,內核鏡像的位置及名稱
編輯完後這錯誤也就完全的解決了。
何謂哨兵模式?就是經過哨兵節點進行自主監控主從節點以及其餘哨兵節點,發現主節點故障時自主進行故障轉移。
1.速度快 2.支持豐富數據類型 (list set hash string)3.支持事務(原子性) 4.豐富的特性
redis 內存數據集大小上升到必定大小的時候,就會施行數據淘汰策略(回收策略)。淘汰策略:
最近最少使用的數據淘汰 將要過時的數據淘汰 已過時的數據中任意選擇數據淘汰 任意選擇數據淘汰 禁止驅逐數據
由於傳統的關係型數據庫如Mysql已經不能適用全部的場景了,好比秒殺的庫存扣減,APP首頁的訪問流量高峯等等,都很容易把數據庫打崩,因此引入了緩存中間件,目前市面上比較經常使用的緩存中間件有Redis 和 Memcached 不過綜合考慮了他們的優缺點,最後選擇了Redis。
應用場景不同:Redis出來做爲NoSQL數據庫使用外,還能用作消息隊列、數據堆棧和數據緩存等;Memcached適合於緩存SQL語句、數據集、用戶臨時性數據、延遲查詢數據和session等。
災難恢復–memcache掛掉後,數據不可恢復; redis數據丟失後能夠經過aof恢復
存儲數據安全–memcache掛掉後,數據沒了;redis能夠按期保存到磁盤(持久化)
字符串String、字典Hash、列表List、集合Set、有序集合SortedSet
先拿setnx來爭搶鎖,搶到以後,再用expire(一顆四百額)給鎖加一個過時時間防止鎖忘記了釋放。
唉,是喔,這個鎖就永遠得不到釋放了,我記得set指令有很是複雜的參數,這個應該是能夠同時把setnx和expire合成一條指令來用的!
你給出兩個詞彙就能夠了,fork和cow。fork是指redis經過建立子進程來進行RDB操做,cow指的是copy on write,子進程建立後,父子進程共享數據段,父進程繼續提供讀寫服務,寫入的頁面數據會逐漸和子進程分離開來。
關係型數據庫使數據庫的數據之間存在關聯關係,能夠經過一條數據關聯出一些列數據,方便了數據的檢索和查詢,提升開發人員的查詢效率,可是會拖累數據庫,所以關係型數據庫不支持過高的併發
redis默認只容許本機鏈接,因此須要找到「bind 127.0.0.1」並將這行註釋掉:
redis在3.0版本之後增長了保護模式 ,如需保護,改爲yes
將默認的「daemonize no」改成yes,設置redis以守護線程方式啓動:
分別配置pid,log,db文件的保存地址
啓動redis
設置開機啓動
從節點配置
(1) 修改redis從配置文件,添加一行配置「slaveof 192.168.0.101 6379」映射到主節點
(2) 重啓從節點的redis
(1)主節點與從節點均登陸redis並執行info命令查看主從配置結果
找到「# Replication」模塊,能夠看到主節點提示存在一個從節點,而且會列出從節點的相關信息,一樣,能夠在從節點看到本身的主節點是哪一個,列出主節點的相關信息
(2)驗證主從
登陸主節點redis,set age 24,到從節點直接get age,看到能夠get到咱們在主節點設置的值24,說明主從配置成功
筆者回答:以解決問題爲前提條件,先添加從庫數量,臨時把問題給解決,而後抓取slow log ,分析sql語句,該優化就優化處理。慢要不就是硬件跟不上,須要升級;要不就是軟件須要調試優化,等問題解決在細化。
一、修改my.ini配置文件,添加跳過密碼驗證代碼;
代碼:skip-grant-tables,使用爲跳過密碼驗證。代碼添加位置,建議放在[mysqld]以後;
二、進入命令行,使用mysql -u root登陸;
三、使用use mysql;選擇數據庫;
四、執行update代碼;
update mysql.user set authentication_string=password('root_password') where user='root';
5.執行完成後,再輸入如下代碼:
flush privileges;
刷新MySQL的系統權限相關表,不然會出現拒絕訪問等錯誤;
再記得刪除my.ini中配置的skip-grant-tables(跳過密碼驗證)代碼;
五、重啓服務後,再使用新密碼登陸便可;
Nginx上傳大文件150M以上上傳不了。是由於帶寬的問題,由於你們都在上傳,小文件能夠傳是由於在優化的65秒能夠上傳內容這麼大。把上傳的優化斷開時間修改到1800秒。過了幾天服務器直接宕機了。後來發現後來服務器的進程滿級了。由於上傳的小的文件也是佔用1800秒。因此不少人上傳不了文件,由於進程都被佔用了。解決。。要進行邏輯業務分離,上傳的專門作上傳服務器,再也不走網站形式進行上傳。
多是端口受阻。網絡線路抖動,致使通電信號受阻。。致使健康信號包發送不了也接收不了。因此雙方都起了VIP,客戶訪問時出現兩個VIP,因此出現這個問題。
將其安裝在一臺能正常上網的機器上,看其指示燈是否閃爍,正常接入狀態下指示燈應爲紅色或者綠色,而後用ping命令檢測是否能ping通網絡上的主機,若通則正常,若網卡驅動安裝無誤而ping命令不通,則能夠判定網卡壞掉。
35.數據庫滿了,怎麼縮容,騰出更多的磁盤空間,也是公司常遇到的問題;
將30天之前的不多用到日誌進行按期的清除。
Nginx是輕量級的web服務比Apache佔用更小的內存以及資源
Nginx併發量比Apache高三倍以上
可做爲負載均衡,反向代理器
LVS羣集,也叫LVS虛擬服務器,針對Linux內核開發的一個負載均衡項目。LVS是基於IP地址和內容請求分發的高效負載均衡解決方案,如今屬於linux內核的一部分,默認編譯爲ip_vs模塊。
/etc/security/limits.conf
# 當前用戶最大登陸數
# max number of logins for this user
* soft maxlogins 100
* hard maxlogins 100
# 系統最大登陸用戶數
# max number of logins on the system
* soft maxsyslogins 100
* hard maxsyslogins 100
Insert into 目標表 select * from 來源表 ;
1、增長內存
redis存儲於內存中,數據太多,佔用太多內存,那麼增長內存就是最直接的方法,可是這個方法通常不採用,由於內存滿了就加內存,滿了就加,那代價也太大,至關於用錢解決問題,不首先考慮,通常全部方面都作到最優化,才考慮此方法
2、搭建Redis集羣
(1)全部的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬.
(2)節點的fail(失敗)是經過集羣中超過半數的節點檢測失效時才生效.
(3)客戶端與redis節點直連,不須要中間proxy層.客戶端不須要鏈接集羣全部節點,鏈接集羣中任何一個可用節點便可
(4)redis-cluster把全部的物理節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value
Redis集羣中內置了 16384 個哈希槽,當須要在 Redis 集羣中放置一個 key-value 時,redis 先對key 使用 crc16 算法算出一個結果,而後把結果對 16384 求餘數,這樣每一個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大體均等的將哈希槽映射到不一樣的節點
RAID級別有如下幾種:NRAID,JBOD,RAID0,RAID1,RAID0+1,RAID3,RAID5等。目前常用的是RAID0,RAID1,RAID3,RAID5和RAID(0+1)。它們的區別大體以下:
RAID 0 存取速度最快 但沒有容錯 2塊盤
RAID 1 徹底容錯但成本比較高,可用於數據備份,磁盤利用率爲50% 2塊盤
RAID 3 寫入性能最好 但沒有多任務功能 3塊盤n+1,1爲校驗盤
RAID 5 具有多任務及容錯功能,安全性高,隨機和連續讀寫性能低 3塊盤
RAID 0+1 讀寫速度快、徹底容錯但成本高,用的比較多 4塊盤 利用率50%
→兩種方法:
方法一:該方法適用於主從庫數據相差不大,或者要求數據能夠不徹底統一的狀況,數據要求不嚴格的狀況
首先進入master庫,查看進程是否sleep太多,還有狀態是否正常,而後在從slave上查看,IO線程和SQL線程是否正常。若是不正常,則中止slave,而後set globai sql_slave_skip_counter=1(跳過一個事物);再從新啓動slave,再用show slave status \G;查看,若是IO線程和SQL線程均爲yes,那麼主從同步狀態恢復正常。
方法二:該方法適用於主從庫數據相差較大,或者要求數據徹底統一的狀況
1.先進入主庫,進行鎖表,防止數據寫入 。使用命令: flush tables with read lock;
2..進行數據備份 。把數據備份到mysql.bak.sql文件 ,使用命令:mysqldump -uroot -p -hlocalhost > mysql.bak.sql
3.查看master 狀態 。使用命令:show master status;
4.把mysql備份文件傳到從庫機器,進行數據恢復 。使用命令:scp mysql.bak.sql root@192.168.128.101:/tmp/
5.中止從庫的狀態 。使用命令:stop slave;
6.而後到從庫執行mysql命令,導入數據備份。使用命令:source /tmp/mysql.bak.sql
7.設置從庫同步,注意該處的同步點,就是主庫show master status信息裏的| File| Position兩項
change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
8.從新開啓從同步 。使用命令:start slave;
9.查看同步狀態 。使用命令:show slave status\G ;若是IO線程和SQL線程均爲yes時,則主從可同步。
45.當文件系統受到破壞時,如何檢查和修復系統?
參考答案:
成功修復文件系統的前提是要有兩個以上的主文件系統,並保證在修復以前首先卸載將被修復的文件系統。
使用命令fsck對受到破壞的文件系統進行修復。fsck檢查文件系統分爲5步,每一步檢查系統不一樣部分的鏈接特性並對上一步進行驗證和修改。在執行 fsck命令時,檢查首先從超級塊開始,而後是分配的磁盤塊、路徑名、目錄的鏈接性、連接數目以及空閒塊鏈表、i-node。
401:用戶驗證失敗。402:密碼認證失敗。403:訪問被拒絕。404:文件位置發生了轉變或刪除。500:用戶權限的問題致使。501: 不具備請求功能。502:錯誤網關。503:正在維護或者暫停。504:網關超時的現象 505:http的版本是不受支持。
日訪問量100萬,小時點擊量4-5萬,最高QPS 1000左右,UV量是20-30萬,IP量爲55萬
①報錯:
centos6.5裝上agent以後,卻發現啓動不了,日誌裏面報錯以下:
zabbix_agentd [20529]: cannot create Semaphore: [28] No space left on device(設備上沒有剩餘空間)
zabbix_agentd [20529]: unable to create mutex for log file
修改/etc/sysctl.conf
添加以下行:
kernel.sem (信號量)= 500(信號集容納最大量) 64000(全部信號量) 64(單個集) 256(信號集最大)
修改以後,執行sysctl -p使其生效。
從新啓動zabbix-agent便可
登陸時候能夠查看或者使用命令select version() ; cat /etc/redhat-release cat /etc/issue
開放某個端口
開放8080端口:firewall-cmd --zone(區)=public(公衆)--add-port=8080/tcp --permanent(永久)
重啓防火牆:firewall-cmd --reload
開機自檢,加載BIOS→Grub引導→加載內核Kernel→init系統初始化腳本(/etc/rc.d/rc.sysinit)→加載啓動的服務
系統日誌通常都存在/var/log下
經常使用的系統日誌以下:
核心啓動日誌:/var/log/dmesg
系統報錯日誌:/var/log/messages(幾乎全部的開機系統發生的錯誤)
郵件系統日誌:/var/log/maillog
FTP系統日誌:/var/log/xferlog
最大鏈接數,響應的鏈接數,索引緩衝區的大小,等待行動的秒數,表高速緩存的大小,容許的同時客戶的數量,爲全部線程打開表的數量,服務器在關閉它以前在一個鏈接上等待行動的秒數
ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9
說明:
grep firefox的輸出結果是,全部含有關鍵字「firefox」的進程。
grep -v grep是在列出的進程中去除含有關鍵字「grep」的進程。
cut -c 9-15是截取輸入行的第9個字符到第15個字符,而這正好是進程號PID。
xargs kill -s 9中的xargs命令是用來把前面命令的輸出結果(PID)做爲「kill -s 9」命令的參數,並執行該命令。「kill -s 9」會強行殺掉指定進程。
殺死殭屍進程:kill -9 7811 還會產生新的進程,用如下命令進行殺死進程
解決辦法:
ps -ef | grep defunct(查出再也不使用的進程,死的)
$3 是這些殭屍進程的父進程 PID ( PPID ),殺之!
ps -ef | grep defunct | awk '{print $3}' | xargs -i kill {}
命令,輸入,編輯模式
數據存儲方式不一樣,擴展方式不一樣,對事物的支持不一樣
關係型數據庫最典型的數據結構是表,由二維表及其之間的聯繫所組成的一個數據組織。
非關係型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合,能夠是文檔或者鍵值對等。
添加一個server{},每一個server裏面的配置對應一個虛擬主機vhost
在 location下的fastsgi_pass 後面跟 虛擬主機ip+端口。
59.查看資源有哪些?
iostat監控系統設備的IO負載 top系統實時狀況 ifconfig查看網絡 uptime查看系統負載
free內存狀況
/etc/security/limits.conf
# 當前用戶最大登陸數
# max number of logins for this user
* soft maxlogins 100
* hard maxlogins 100
# 系統最大登陸用戶數
# max number of logins on the system
* soft maxsyslogins 100
* hard maxsyslogins 100
mysql5.7是5.6的新版本,新增了新的優化器,原生JSON支持,多源複製,還優化了總體的性能、GIS空間擴展、innodb.
併發工具加強 Networking加強 Security 加強
即分佈式拒絕服務攻擊,是指攻擊者經過網絡遠程控制大量殭屍主機向一個或多個目標發送大量攻擊請求,耗盡攻擊目標服務器的系統資源,致使其沒法響應正常的服務請求,利用的是TCP/IP三次握手 sync實現攻擊... 最容易消耗目標服務器的網絡帶寬
1.禁用或刪除無用帳號2.檢查特殊帳號 3.限制用戶su 4.禁止root用戶直接登陸
5.關閉沒必要要的服務 6.記錄全部用戶的登陸和操做日誌 7.設置登陸超時 8.ssh服務安全
64.如今給你三百臺服務器,你怎麼對他們進行管理?
管理3百臺服務器的方式:
1)設定跳板機,使用統一帳號登陸,便於安全與登陸的考量。
2)使用salt、ansiable、puppet進行系統的統一調度與配置的統一管理。
3)創建簡單的服務器的系統、配置、應用的cmdb信息管理。便於查閱每臺服務器上的各類信息記錄。
65.LVS、Nginx、HAproxy有什麼區別?工做中你怎麼選擇?
LVS: 是基於四層的轉發
HAproxy: 是基於四層和七層的轉發,是專業的代理服務器
Nginx: 是WEB服務器,緩存服務器,又是反向代理服務器,能夠作七層的轉發
區別: LVS因爲是基於四層的轉發因此只能作端口的轉發
而基於URL的、基於目錄的這種轉發LVS就作不了
工做選擇:
HAproxy和Nginx因爲能夠作七層的轉發,因此URL和目錄的轉發均可以作
在很大併發量的時候咱們就要選擇LVS,像中小型公司的話併發量沒那麼大
選擇HAproxy或者Nginx足已,因爲HAproxy由是專業的代理服務器
配置簡單,因此中小型企業推薦使用HAproxy
66.講一下Keepalived的工做原理?
在一個虛擬路由器中,只有做爲MASTER的VRRP路由器會一直髮送VRRP通告信息,
BACKUP不會搶佔MASTER,除非它的優先級更高。當MASTER不可用時(BACKUP收不到通告信息)
多臺BACKUP中優先級最高的這臺會被搶佔爲MASTER。這種搶佔是很是快速的(<1s),以保證服務的連續性
因爲安全性考慮,VRRP包使用了加密協議進行加密。BACKUP不會發送通告信息,只會接收通告信息
67.講述一下Tomcat800五、800九、8080三個端口的含義?
8005==》 關閉時使用
8009==》 爲AJP端口,即容器使用,如Apache能經過AJP協議訪問Tomcat的8009端口
8080==》 通常應用使用
68.什麼叫CDN?
- 即內容分發網絡
- 其目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到
最接近用戶的網絡邊緣,使用戶可就近取得所需的內容,提升用戶訪問網站的速度
69.什麼叫網站灰度發佈?
灰度發佈是指在黑與白之間,可以平滑過渡的一種發佈方式
AB test就是一種灰度發佈方式,讓一部用戶繼續用A,一部分用戶開始用B
若是用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把全部用戶都遷移到B上面 來
灰度發佈能夠保證總體系統的穩定,在初始灰度的時候就能夠發現、調整問題,以保證其影響度
70.簡述DNS進行域名解析的過程?
用戶要訪問www.baidu.com,會先找本機的host文件,再找本地設置的DNS服務器,若是也沒有的話,就去網絡中找根服務器,根服務器反饋結果,說只能提供一級域名服務器.cn,就去找一級域名服務器,一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,二級域服務器只能提供三級域名服務器.baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網站www.baidu.com,而後發給請求的服務器,保存一份以後,再發給客戶端
71.RabbitMQ是什麼東西?
RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程當中保存消息的容器
消息中間件再將消息從它的源中到它的目標中標時充當中間人的做用
隊列的主要目的是提供路由並保證消息的傳遞;若是發送消息時接收者不可用
消息隊列不會保留消息,直到能夠成功地傳遞爲止,固然,消息隊列保存消息也是有期限地
答案:
在TCP/IP協議中,TCP協議提供可靠的鏈接服務,採用三次握手創建一個鏈接。第一次握手:創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認。第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態。第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。完成三次握手,客戶端與服務器開始傳送數據
簡版:首先A向B發SYN(同步請求),而後B回覆SYN+ACK(同步請求應答),最後A回覆ACK確認,這樣TCP的一次鏈接(三次握手)的過程就創建了
答案:
常見的Linux發行版有,Debian, Gentoo, Ubuntu, RedHat, CentOS, Fedora, Kali Linux, Suse等,最擅長CentOS,擅長部分命令使用,腳本編程,環境服務搭建與配置。
答案:
/boot 分200M,/分50G,swap 分16G,其他分到 /data 下。
答案:
文件系統只讀,多是誤操做,好比掛載的時候加了ro的掛載選項。也多是文件系統損壞,這時候可使用fsck -y 分區 來嘗試修復一下,但在修復以前最好是把重要數據作一個備份以防萬一。若是修復失敗,那說明是磁盤損壞,這就須要更換磁盤了。
答案:
iptables -I INPUT -p tcp -m multiport --dport 443,80,1723,22,3306,11211,25,110,53,123 -j ACCEPT
iptables默認是容許全部端口開放的,若是想只放行指定某些端口,那就須要配置一下默認規則了。好比本例中,咱們寫完放行的端口規則後還須要寫一條默認拒絕的規則iptables -P INPUT DROP 這樣除了上面那規則中提到的端口能夠訪問外,其餘端口都是拒絕的。
答案:
HTTPS證書須要有兩個文件,一個是crt,一個是key。crt文件就是公鑰文件,用來加密的。而key文件是私鑰文件,是用來解密的。
設備:13臺服務器,要求:有負載均衡和數據庫主從
答案:
架構:Keepavlied + lvs + nginx/php + NFS + mysql + redis
keepalived+lvs 使用2臺
Nginx+php-fpm使用5臺
NFS 使用1臺
Mysql雙主,並使用keepalived構建高可用 使用2臺
Redis 使用1臺,用來存session
備份機器使用1臺
監控機器使用1臺
Web服務器Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模塊)模式。它們分別是prefork,worker和event,它們同時也表明這Apache的演變和發展。
一、Prefork MPM
Prefork MPM實現了一個非線程的、預派生的web服務器。
二、Worker MPM
和prefork模式相比,worker使用了多進程和多線程的混合模式,worker模式也一樣會先預派生一些子進程,而後每一個子進程建立一些線程,同時包括一個監聽線程,每一個請求過來會被分配到一個線程來服務。
三、Event MPM
這是Apache最新的工做模式,它和worker模式很像,不一樣的是在於它解決了keep-alive長鏈接的時候佔用線程資源被浪費的問題
80.寫一條192.168.10.0網段從網關192.168.9.1出去的路由
答:route add -net 192.168.10.0/24 gw 192.168.9.1
81.寫一條放行80端口的防火牆規則。
答:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
82. 你公司監控(如zabbix)系統監控了哪些項目。
答:監控了CPU使用率、內存剩餘、磁盤使用空間、網卡流量、web服務、mysql主從、訪問日誌等
83. linux引導加載的前後順序是BIOS kernel GRUB MBR RAID?
答案:BIOS -> RAID -> MBR -> GRUB -> kernel
84.進程間通訊方式主要有哪幾種方式?
答案:1管道 2命名管道 3信號 4消息隊列 5共享內存 6信號量 7套接字
85.簡要說明你對內核空間和用戶空間的理解?
答案:這個問題有點偏開發,你們不明白沒有關係,瞭解一下便可。操做系統和驅動程序運行在內核空間,應用程序運行在用戶空間。你們能夠看看這個文章http://www.go-gddq.com/html/QianRuShiXiTong-JiShu/2012-07/1031748.htm
86.你用過或測試過哪些 linux/unix文件系統?
答案:centos5默認是ext3,centos6爲ext4,centos7爲xfs
87. 怎樣用命令查看3天前的CPU分核的負載數據?
答案:sar -f /var/log/sa/(三天前日期)
88. 某命令CPU負載顯示如下各段,分別是什麼? 10.6%us,6.6%sy, 0.0%ni 74.4%id 0.0%wa
答案:us 用戶cpu百分比 sy內核cpu百分比 ni進程佔用百分比 id 空閒百分比 wa io等待佔用的百分比
89.. 列舉你知道的linux下的壓力測試程序
答案:測試web的工具:http_load,ab
專業的測試工具loadrunner
90. 描述linux系統下建立軟RAID5的命令和步驟
答案:假若有四塊硬盤 /dev/sda,/dev/sdb,/dev/sdc,/dev/sdd,分別給他們分一個主分區sda1,sdb1,sdc1和sdd1,而後建立RAID設備名爲md0, 級別爲RAID5,使用3個設備創建RAID,空餘一個作備用.
命令以下:
mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[a-d]1
使用下面命令查看raid詳細信息
mdadm --detail /dev/md0
91 如何查找某一文件被哪一個進程打開?
答案:lsof|grep file
92. 新增一塊存儲設備,lvm操做的命令如何寫
答案:
將物理硬盤格式化成pv pvcreate /dev/sdb
建立卷組(VG)並將pv加到VG中 vgcreate vg1 /dev/sdb
基於VG建立邏輯卷(LV) lvcreate -n mylvm -L 20G vg1
93. 給主機host:172.16.0.2 增長gateway10.0.0.1
答案: route add 172.16.0.2 gw 10.0.0.1或者網卡配置文件更改
94.簡述linux的優化
【硬件方面】
1. cpu
2. 內存 (增長內存)
3. 存儲 (使用raid,使用ssd)
4. 網卡 (使用千兆網卡,或者雙網卡綁定)
【系統方面 】
1. 內核參數優化(網絡相關、內存相關、緩衝緩存相關)
2. 文件系統方面(分區調優,格式化時根據存儲文件特性,指定合適的塊大小,noatime,日誌隔離,軟raid,有效使用/dev/shm,關閉沒必要要的服務)
3. cpu優化 (進程綁定,中斷綁定)
numa架構cpu: http://blog.csdn.net/jollyjumper/article/details/17168175
taskset 把進程和cpu綁定 http://blog.csdn.net/ttyttytty12/article/details/11726569
【應用程序方面】
1. nginx、apache、php-fpm、mysql、tomcat、squid等應用,是能夠經過調節各個參數得到性能優化的。
2. web優化,好比能夠把用戶請求合併(js、css合併),使用cdn加速靜態頁訪問速度,把圖片文檔壓縮減小帶寬傳輸,
3. 優化網站程序
【架構方面】
1. 使用簡單而且穩定的架構方案
2. 多使用緩存
10. iptables表和鏈
filter INPUT FORWARD OUTPUT
nat PREROUTING POSTROUTING OUTPUT
mangle PREROUTING INPUT FORWARD OUTPUT POSTROUTING
95.在不umount的狀況下,如何從新設置mount的參數。
答案:mount -o remount
96. 說一下公司多少臺服務器,是什麼架構
答案:有7臺服務器,lnmp+nginx負載+keepalived,其中2臺keepalived+2臺nginx/php-fpm+2臺mysql(一主一從)+NFS(上面兼着跑監控、備份)
97.提升性能和併發數,須要優化哪些內核參數
答案:
net.ipv4.tcp_max_tw_buckets = 6000 //timewait的數量,默認是180000。
net.ipv4.ip_local_port_range = 1024 65000 //容許系統打開的端口範圍。
net.ipv4.tcp_tw_reuse = 1 //容許將TIME-WAIT sockets 從新用於新的TCP 鏈接。
net.ipv4.tcp_syncookies = 1 //開啓SYN Cookies,當出現SYN 等待隊列溢出時,啓用cookies 來處理。
net.ipv4.tcp_max_orphans = 262144 //系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上。若是超過這個數字,孤兒鏈接將即刻被複位並打印出警告信息。這個限制僅僅是爲了防止簡單的DoS攻擊,不能過度依靠它或者人爲地減少這個值,更應該增長這個值(若是增長了內存以後)。
net.ipv4.tcp_max_syn_backlog = 262144 //記錄的那些還沒有收到客戶端確認信息的鏈接請求的最大值。對於有128M內存的系統而言,缺省值是1024,小內存的系統則是128。
net.ipv4.tcp_synack_retries = 1 //爲了打開對端的鏈接,內核須要發送一個SYN 並附帶一個迴應前面一個SYN的ACK。也就是所謂三次握手中的第二次握手。這個設置決定了內核放棄鏈接以前發送SYN+ACK 包的數量。
net.ipv4.tcp_syn_retries = 1 //在內核放棄創建鏈接以前發送SYN 包的數量。
net.ipv4.tcp_keepalive_time = 30 //當keepalive 起用的時候,TCP 發送keepalive 消息的頻度。缺省是2 小時。
98.簡述tcp三次握手的過程?
第一次握手:創建鏈接。客戶端發送鏈接請求報文段,將SYN位置爲1,Sequence Number爲x;而後,客戶端進入SYN_SEND狀態,等待服務器的確認;
第二次握手:服務器收到SYN報文段。服務器收到客戶端的SYN報文段,須要對這個SYN報文段進行確認,設置Acknowledgment Number爲x+1(Sequence Number+1);同時,本身本身還要發送SYN請求信息,將SYN位置爲1,Sequence Number爲y;服務器端將上述全部信息放到一個報文段(即SYN+ACK報文段)中,一併發送給客戶端,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK報文段。而後將Acknowledgment Number設置爲y+1,向服務器發送ACK報文段,這個報文段發送完畢之後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。
99.如何查看當前linux系統的狀態如cpu使用,內存使用,負載狀況,看到swap使用量大時,是否是意味着物理內存已不夠用?
答案:top命令就能夠看cpu使用、內存使用以及負載狀況,當swap使用率大時,不必定是內存不夠,若是swap容量固定不變,那內存就不是瓶頸。用vmstat 1命令看,si so兩列的數值在不斷變化時,內存就不夠了。
100. 如何修改ip主機名DNS?
修改ip和DNS在配置文件/etc/sysconfig/network-scripts/ifcfg-eth0中修改,修改主機名,在/etc/sysconfig/network中修改。
101.如何查看PID爲29394的進程的環境變量?
cat /proc/29394/environ
102.當io出現瓶頸時,應該查看哪一個參數,爲何?
vmstat 1 查看wa列,wa列表示處於等待狀態的cpu百分比,當IO比較慢時,CPU會有大量的wait。
103. 在 bash 裏 $0 $? $* $@各表示什麼意思?
$0 Shell自己的文件名
$?最後運行的命令的返回值
$*全部參數列表。如"$*"用「"」括起來的狀況、以"$1 $2 … $n"的形式輸出全部參數
$@ 全部參數列表。如"$@"用「"」括起來的狀況、以"$1" "$2" … "$n" 的形式輸出全部參數。
--------------------------------------------------------------
本身整理的,後期會持續更新·······