NO2

1.如何提升服務器安全性?mysql

  •  防火牆規則linux

  •  關閉沒必要要端口web

  •  禁止root登陸redis

  •  下降web程序運行權限算法

  • 系統跟應用按期打補丁sql

  • 上waf(web應用防火牆)數據庫


2.raid:windows

raid0 :兩塊硬盤以上,合成一塊,提升讀寫速度後端

raid1:兩塊硬盤,又稱爲鏡像方式,數據冗餘,只有一半磁盤空間有效,另外一半用來冗餘,相比raid0,容量減半,速度不變,緩存

raid5:raid0月raid1的折中方案,主流,至少三塊硬盤,讀取速度≈raid0 寫入速度<單個磁盤,可是raid5的磁盤利用率大於raid1,數據寫入時,按照一塊硬盤的方式直接寫入這塊硬盤,

同時寫入校驗信息,讀取寫入的時候,分別從三塊硬盤上讀取數據,再經過校驗信息進行校驗,一塊硬盤順壞,其餘兩塊會計算出那一塊的硬盤內容,raid5:只容許一塊硬盤損壞

當順壞時候,替換上去新硬盤,raid自動利用奇偶校驗信息重建此硬盤上的數據,保持raid5的高可靠性

存儲:只佔用一個磁盤容量,應該三塊硬盤同樣大,不然以最小爲準。

raid0+1:又稱raid10,至少4塊硬盤,簡單的理解,多個磁盤組成raid0陣列,再進行冗餘


3.linux啓動過程:

power on ---->BIOS加電自檢,根據引導順序啓動---->MBR---->grub(stage2 ) --->/boot/grub/grub.conf ----->加載內核和ramfs文件系統--->init ---->讀取/etc/inittab , 執行/etc/rc.sysinit等腳本文件------>根據/etc/inittab裏的運行級別進入/etc/rc*.d目錄,啓動裏面的服務(s開頭的爲要啓動的) ------->啓動登陸程序

     0:關機模式

    1:單用戶模式<==破解root密碼

    2:無網絡支持的多用戶模式

    3:有網絡支持的多用戶模式(文本模式,工做中最經常使用的模式)

    4:保留,未使用

    5:有網絡支持的X-windows支持多用戶模式(桌面)

    6: 從新引導系統,即重啓

查看開機運行級別:runlevel 或者 who -r

修改運行級別:修改/etc/inittab default後面的數字就是默認的運行級別

忘記密碼

a、重啓系統,在GRUB界面,選取忘記密碼的系統,按e鍵進入編輯模式

b、選項Kernel.....按e鍵進行編輯

c、在編輯界面rhgb quiet後加空格,而後輸入"single"或"1" 回車

d、按b啓動 進入單用戶模式

f、進入系統後passwd回車輸入新密碼(若是有selinux,先暫時關閉 setenforce 0)


4.mysql優化:

  •  項目立項後,設計表 結構:慢查詢、低效的查詢語句、沒有適當創建索引、數據庫堵塞(死鎖)等。

  •  考慮高可用性,可採用mysql主從複製+keepalived作雙機熱備。

  •  數據庫配置優化:鏈接數,緩衝區,共享表空間等。

  •  操做系統的一些參數 也會影響Mysql性能。sysctl.conf進行內核優化:time_wait時間、鏈接數、文件句柄等。

  • 加大物理內存,提升文件系統性能。linux內核會從內存中分配出緩存區(系統緩存和數據緩存)來存放熱數據,經過文件系統延遲寫入機制,等知足條件時(如緩存區大小到達必定百分比或者執行sync命令)纔會同步到磁盤。也就是說物理內存越大,分配緩存區越大,緩存數據越多。

  •  SSD硬盤代替SAS硬盤,將RAID級別調整爲RAID1+0,相對於RAID1和RAID5有更好的讀寫性能(IOPS),畢竟數據庫的壓力主要來自磁盤I/O方面。

  • 架構擴展:一主多從,讀寫分離等。

  •  給數據庫增長緩存系統,把熱數據緩存到內存中,若是緩存中有要請求的數據就再也不去數據庫中返回結果,提升讀性能。緩存實現有本地緩存和分佈式緩存,本地緩存是將數據緩存到本地服務器內存中或者文件中。分佈式緩存能夠緩存海量數據,擴展性好,主流的分佈式緩存系統有memcached、redis,memcached性能穩定,數據緩存在內存中,速度很快,QPS可達8w左右。若是想數據持久化就選擇用redis,性能不低於memcached。

  • 分庫:根據業務不一樣把相關的表切分到不一樣的庫中,避免單個庫壓力過大。

  • 分表:數據量大的表拆分紅多個小表,避免單個表壓力過大,來減輕單個表的壓力,提升處理效率。

  • 監控數據庫性能:qps 、tps


5.LVS:

keepalived:高可用,保持存活,防單點故障。keepalived主要用做realserver的健康檢查以及負載均衡主機和backup主機之間的故障漂移。

VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議:實現路由器高可用的協議

一組VRRP路由器協同工做,共同構成一臺虛擬路由器。 Vrrp中存在着一種選舉機制,用以選出提供服務的路由即主控路由,其餘的則成了備份路由。當主控路由失效後,備份路由中會從新選舉出一個主控路由,來繼續工做,來保障不間斷服務。

keepalived主要有三個模塊,分別是core、check和vrrp。core模塊爲keepalived的核心,負責主進程的啓動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各類檢查方式。vrrp模塊是來實現VRRP協議的。

ipvs---(IP Virtual server ):lvs下提供負載均衡的一種技術,是lvs的核心。

lvs負載均衡的三種director方式:NAT DR TUN

DR模式又稱直接路由模式,lvs和real-server必須在相同網段,它是經過改寫請求報文中的MAC地址來實現的

NAT模式下全部real-server網關指向directory(調度服務器),調度服務器有瓶頸,節點數不能多

TUN是ip隧道模式,把客戶請求包封裝在一個IP tunnel裏面,而後發送給realserver,節點服務器接收到以後解開IP tunnel,進行響應處理。

推薦LVS-DR架構:減小LVS負載,RS直接將結果返回給客戶端;由於若是nat, 那麼你的性能瓶頸就是在那個nat主機上面, dr的話, 只有第一次調度須要通過, 調度器, 後面都是直接和客戶端創建鏈接

LVS調度算法:

固定調度算法:rr,wrr,dh,sh

動態調度算法:wlc,lc,lblc,lblcr

靜態不考慮後端服務器鏈接和負載狀況直接轉發。


6.MySQl主從複製:

(1)、Slave上面的IO線程鏈接上Master,而且請求從指定日誌文件的指定位置(或者從最開始的日誌)以後的日誌內容;

(2)、Master接收到來自Slave的IO線程請求後,經過負責複製的IO線程根據請求的信息指定日誌指定位置後的日誌信息,返回給Slave端的IO線程,返回的信息當中除了日誌全部包含的信息外,還包括本次返回信息在Master段的Binary log(二進制)文件名稱以及Binary log(二進制)的位置.

(3)、Slave的IO 線程接收到master返回的信息後,將接收到的日誌內容一次寫入slave端的Relay log文件,(mysql-relay-bin.xx)的最末端,而且將讀取到的Master端的bin-log的文件和位置記錄,紀錄到 master-info文件當中,以方便下一次讀取的時候可以清楚的告訴Master 我須要從某個bin-log的哪一個位置開始日後的日誌內容,請發給我。

(4)、Slave的SQL線程檢測到Relay Log中心增長了內容後,會立刻解析Master 二進制日誌文件中的內容執行裏面的Query語句。

MySQL的replication是一個異步的複製過程,在master和slave之間實現整個複製過程主要由3個線程來完成,在slave端有IO和SQL線程,這兩個線程的狀態必須是yes。

mysql主從架構中其實就一個主在工做,而從就至關於一個備份機器,從經過日誌監測的方式來備份主庫上的數據而保證主庫的數據安全。在這種架構中若是從上的數據作了改變,主數據是不會發生任何變化的。

通常經過 主從複製(Master-Slave)的方式來同步數據,再經過讀寫分離(MySQL-Proxy)來提高數據庫的併發負載能力


7.數據庫系統工做原理:

  1. . 用戶向數據庫發起鏈接;

  2. . MySQL數據庫驗證權限。若是權限不夠,直接拒絕 ,權限ok進入下一步;

  3. . 用戶開始發起SQL語句;

  4. . MySQL數據庫解析器開始解析SQL語句;

  5. . MySQL開始查詢本身的本地緩存,有的話直接反饋給用戶,沒有的話,進入下一步;

  6. . 通過解析器。對SQL語句進行定位,最後找到所須要的數據,在本地緩存一份,而後反饋給用戶。


8.DNS相關 :

DNS -----Domain name system--------域名系統

DNS 的做用:

正向解析:根據域名解析爲IP

反向解析:根據IP解析爲域名

FQDN:(Fully qualified Domain Name)徹底合格域名,是指主機名加上全路徑

www.baidu.com -----主機名 www -----  域  baidu.com

全球共有13臺根邏輯域名服務器 -------  端口號  53

----DNS排錯:

1>.日誌:tail –f /var/log/messages

2>.檢查文件有沒有錯

     /etc/resolv.conf  放dns服務器的地方

     [root@lnmp software]# cat /etc/resolv.conf

     nameserver 114.114.114.114

     /etc/hosts        域名對應IP

經常使用的dns軟件 bind

-----爲何要主從?

1. 起到一個備份的做用

2. 負載均衡,訪問量大的時候忙不過來

-----DNS解析過程:

  1.  客戶機先查看本機DNS 緩存

  2. 查看/etc/hosts  文件

       172.17.0.8  www.zdj.com

  3. 向本地dns服務器發送域名解析的請求

  4. 本地dns查詢緩存,若是有直接返回給客戶機,若是沒有,查詢本身的dns數據庫文件,若是有就直接返回給客戶機,若是尚未就向根域.查詢,發送請求給根服務器

  5. 根域告訴本地DNS服務器找com的服務器

  6. 本地dns服務器向.com的服務器查詢,com服務器告訴本地dns,baidu這個域的dns服務器ip

  7. 本地dns服務器找到baidu.com域的dns服務器,查詢到www這臺主機的IP

  8. 同時放到本身的緩存裏面

  9. 告訴客戶機www.baidu.com的域名對於的IP

  10. 客戶機將IP放到緩存裏

[root@lnmp software]# cat /etc/resolv.conf

nameserver 114.114.114.114


9.三次握手四次揮手:

time_wait過多能夠修改系統參數/etc/sysctl.conf

net.ipv4.tcp_syncookies = 1

// 表示開啓SYN cookies。當出現SYN等待隊列溢出時,啓用cookies來處理,可防範少許SYN***,默認爲0,表示關閉

net.ipv4.tcp_tw_reuse = 1

//表示開啓重用。容許將TIME-WAIT sockets從新用於新的TCP鏈接,默認爲0,表示關閉;

net.ipv4.tcp_tw_recycle = 1

//表示開啓TCP鏈接中TIME-WAIT sockets的快速回收,默認爲0,表示關閉

net.ipv4.tcp_fin_timeout = 30

//修改系統默認的 TIMEOUT 時間

/sbin/sysctl -p   //保存後生效

第一次握手:

客戶端發送一個TCP的SYN標誌位置1的包指明客戶打算鏈接的服務器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段裏。

第二次握手:

服務器發回確認包(ACK)應答。即SYN標誌位和ACK標誌位均爲1同時,將確認序號(Acknowledgement Number)設置爲客戶的I S N加1以.即X+1。

第三次握手.

客戶端再次發送確認包(ACK) SYN標誌位爲0,ACK標誌位爲1.而且把服務器發來ACK的序號字段+1,放在肯定字段中發送給對方.而且在數據段放寫ISN的+1

TCP 四次揮手:

(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送。

(2)服務器B收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。和SYN同樣,一個FIN將佔用一個序號。

(3)服務器B關閉與客戶端A的鏈接,發送一個FIN給客戶端A。

(4)客戶端A發回ACK報文確認,並將確認序號設置爲收到序號加1。

口述版j_0007.gif

假若有一臺客戶機和一臺服務器,如今客戶機想要和服務器通訊,那麼首先客戶機就會發送一個同步位等於1確認序列號有效位等於0的數據包給服務器,(syn(同步位)等於1表示請求創建連接)同時會隨機產生一個sequence number(序列號),假如是100,當服務器接受到客戶機發來的數據後,客戶機從SYN(同步位)=1可知客戶機是想要創建鏈接,第一次握手完成

第二次握手:服務器收到消息後確定要進行確認,就像我和你打招呼的時候我說hello你確定要回一個給我,因此這時候服務器就會向客戶機發送一個確認報文ACK(確認序列號有效位)=1,SYN(同步位)=1,Acknowledge number=101,(確認序列號等於序列號+1)同時還會隨機產生一個序列號sequence number假如等於200,這樣就告訴了客戶機能夠進行鏈接,二次握手完成

第三次握手:當客戶機收到服務器的確認信息後,客戶機會檢查Acknowledge number(確認序列號)是否等於序列號+1即101,以及ACK(確認序列號有效位)是否爲1,若爲1,客戶機會發送一個ACK=1.Acknowledge number=201的確認報文,告訴服務器你的請求鏈接已經被確認,鏈接能夠創建,客戶機進入ESTABLISHED狀態,TCP鏈接創建。三次握手完成

1.天下沒有不散之宴席,數據傳輸結束後,如今服務器和客戶機都處於ESTABLISHED狀態,客戶機想要和服務器斷開鏈接,就會向服務器發送一個標誌位FIN=1的報文(FIN=1表示請求斷開鏈接)這時客戶機就處於FIN—WAIT—1狀態

2.當服務器收到請求斷開的數據包之後當即發出確認,確認號acknowledge number等於序列號加一,標誌位ACK=1,此時服務器進入CLOSE_WAIT狀態

當客戶機獲得服務器的確認後,就進入FIN—WAIT—2狀態,等待服務器發出鏈接斷開報文

3.若服務器已經沒有要向客戶機發送的數據。那麼服務器就向客戶機發送一個標誌位FIN=1的報文,表示本身也將關閉鏈接,此時服務器進入LAST—ACK狀態

4.當客戶機收到請求斷開的報文之後,必須對此發出確認,因而就發送一個標誌位ACK=1的報文給服務器,而後進入到TIME—WAIT狀態,這時TCP鏈接尚未斷開,必須通過時間等待計時器設置的時間以後,客戶機纔會進入到CLOSED狀態


10.CDN原理

CDN是一種組合技術,主要包含如下3個方面:

① 源站

源站指發佈內容的原始站點。添加、刪除和更改網站的文件都是在源站上進行的另外緩

存服務器所抓取的對象也所有來自於源站。

② 緩存服務器

緩存服務器是直接提供給用戶訪問的站點資源有一臺或數臺服務器組成當用戶發起訪問

時他的訪問請求被智能DNS定位到離他較近的緩存服務器。若是用戶所請求的內容恰好在

緩存裏面則直接把內容返還給用戶若是訪問所需的內容沒有被緩存則緩存服務器向鄰

近的緩存服務器或直接向源站抓取內容而後再返還給用戶。

③ 智能DNS

智能DNS是整個CDN技術的核心它主要根據用戶的來源將其訪問請求指向離用戶比較近的緩存服務器如把廣州電信的用戶請求指向到廣州電信IDC機房中的緩存服務器。經過智能DNS解析讓用戶訪問同服務商下的服務器消除國內南北網絡互相訪問慢的問題達到加速做用。智能DNS的出現顛覆了傳統的一個域名對應一個鏡像的作法讓用戶更加便捷的去訪問網站。

緩存服務器中有訪問內容:

客戶端請求 ==> 智能DNS解析到最近的緩存服務器 ==> 緩存服務器返回請求資源

緩存服務器中無訪問內容:

客戶端請求 ==> 智能DNS解析到最近的緩存服務器 ==> 緩存服務器發現沒有客戶端請求

資源,向源站請求 ==> 源站返回資源到緩存服務器 ==> 緩存服務器返回客戶端請求資源

相關文章
相關標籤/搜索