Squid3.0反向代理+DNS輪詢實現(xiàn)負載均衡_第1頁
Squid3.0反向代理+DNS輪詢實現(xiàn)負載均衡_第2頁
Squid3.0反向代理+DNS輪詢實現(xiàn)負載均衡_第3頁
Squid3.0反向代理+DNS輪詢實現(xiàn)負載均衡_第4頁
Squid3.0反向代理+DNS輪詢實現(xiàn)負載均衡_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Squid3 0 反向代理反向代理 DNS 輪詢實現(xiàn)負載均衡輪詢實現(xiàn)負載均衡 系統(tǒng)拓樸圖系統(tǒng)拓樸圖 一臺 DNS 服務器 操作系統(tǒng) Freebsd 軟件 BIND 9 5 IP 192 168 76 222 三臺 Squid 服務器 操作系統(tǒng) Linux AS 4 軟件 Squid 3 0 相應的 IP 如下 Squid1 192 168 76 223 Squid2 192 168 76 224 Squid3 192 168 76 225 三臺 WEB 服務器 操作系統(tǒng) Linux AS 4 應用軟件 Tomcat 5 0 Mysql 相應的 IP 地址如下 webServer1 210 82 118 195 webServer2 192 168 76 226 webServer1 192 168 76 227 應用軟件的安裝和配置應用軟件的安裝和配置 配置配置 DNS 服務器服務器 軟件利用 Freebsd 自帶的 bind 9 5 然后針對該系統(tǒng)配置 bind 首先修改 bind 的配 置文件 etc namedb named conf 在文件中添加 zone type master file master 再在 etc namedb master 目錄下添加 文件 該文件的內(nèi)容如下 TTL 3600 IN SOA search root 20080807 Serial 3600 Refresh 900 Retry 3600000 Expire 3600 Minimum IN NS 1 IN PTR wenjin IN A 192 168 76 223 wenjin IN A 192 168 76 224 wenjin IN A 192 168 76 225 這樣當用戶請求的時候 DNS 通過輪詢機制將 的域名解析為 192 168 76 223 192 168 76 224 和 192 168 76 225 其中之一 配置完成后 運行 rndc star t 啟動 bind 服務 用 ps A grep named 查看 bind 服務是否起來 用 nslookup 測試 bind 服務是否正常運行 配置配置 Squid1 服務器服務器 下載 squid 3 0 STABLE8 tar gz 源碼包 將其放在 home 目錄下 解壓縮 tar zxvf squid 3 0 STABLE8 tar gz 設置配置參數(shù) cd squid 3 0 STABLE10 configure prefix usr local squid 將 squid 安裝在 usr local 目錄下 編譯安裝 Make make install 安裝完以后會在 usr local 目錄下看見 squid 目錄 配置 squid 配置文件 編輯 squid conf 文件 vi usr local squid etc squid conf cache effective user squid cache effective group squid 設定 squid 的主機名 如無此項 squid 將無法啟動 visible hostname 配置 squid 為加速模式 http port 80 accel vhost vport icp port 3130 配置 squid2 squid3 為其鄰居 當 squid1 在其緩存中沒有找到請求的資 源時 通過 ICP 查詢?nèi)テ溧従又腥〉镁彺?cache peer sibling 80 3130 cache peer sibling 80 3130 squid1 的三個父節(jié)點 originserver 參數(shù)指明是源服務器 round robin 參數(shù) 指明 squid 通過輪詢方式將請求分發(fā)到其中一臺父節(jié)點 squid 同時會對這些父節(jié)點 的健康狀態(tài)進行檢查 如果父節(jié)點 down 了 那么 squid 會從剩余的 origin 服務器 中抓取數(shù)據(jù) cache peer 210 82 118 195 parent 8080 0 no query originserver round robin name webServer1 cache peer 192 168 76 226 parent 8080 0 no query originserver round robin name webServer2 cache peer 192 168 76 227 parent 8080 0 no query originserver round robin name webServer3 將 域的請求通過 RR 輪詢方式轉(zhuǎn)發(fā)到三個父節(jié)點 中的一個 cache peer domain webServer1 cache peer domain webServer2 cache peer domain webServer3 cache peer domain webServer1 webServer2 webServer3 上 面三行也可以寫成一行 下面是一些訪問控制 日志和緩存目錄的設置 acl localnet src 192 168 76 223 192 168 76 224 192 168 76 225 acl all src 0 0 0 0 0 0 0 0 http access allow all icp access allow localnet cache log usr local squid var logs cache log access log usr local squid var logs access log squid cache dir ufs usr local squid var cache 1000 16 256 對 squid 的一些優(yōu)化 maximum object size 10240 KB 能緩存的最大對象為 10M maximum object size in memory 512 KB 內(nèi)存中緩存的最大對象 512K cache mem 256 MB squid 用于緩存的內(nèi)存量 保存后 wq 退出 在 etc hosts 文件中添加 192 168 76 223 192 168 76 224 192 168 76 225 保存后 wq 退出 檢查 squid 配置文件正確與否 usr local squid sbin squid k parse reconfigure k help 可以查看 生成緩存目錄 usr local squid sbin squid z 啟動 squid usr local squid sbin squid D 配置配置 squid2 和和 squid3 服務器服務器 squid2 和 squid3 服務器的配置方法和配置參數(shù)和 squid1 一樣 配置完成后 分別啟 動這兩個服務器上的 squid 服務 在 squid 的日志文件 cache log 中 出現(xiàn)如下日志信息則說明三臺 squid 之間成功配 置為 sibling 且配置了三個父代理 2008 11 17 10 08 47 Configuring Sibling 2008 11 17 10 08 47 Configuring Sibling 2008 11 17 10 08 47 Configuring Parent 210 82 118 195 8080 0 2008 11 17 10 08 47 Configuring Parent 192 168 76 226 8080 0 2008 11 17 10 08 47 Configuring Parent 192 168 76 227 8080 0 2008 11 17 10 08 47 Ready to serve requests 測試測試 測試之前 保證 DNS 服務 三臺 squid 服務和三臺 web 服務都正常起來 在客戶端 輸入 則正確的顯示該網(wǎng)頁 服務器端的響應對客戶端是透 明的 客戶端不知道請求是由哪臺 WEB 服務器處理的 而且其中某臺 Squid 服務器或 WEB 服務器發(fā)生故障 也不影響服務的正常運行 總結(jié)總結(jié) Squid 是一個開源的軟件 利用它的反向代理技術可以提高網(wǎng)站系統(tǒng)的訪問速度 本文 在真實的網(wǎng)絡環(huán)境下 利用三臺 squid 反向代理服務器加速了網(wǎng)站的性能 同時結(jié)合 DNS 輪詢技術實現(xiàn)了網(wǎng)站的負載均衡 經(jīng)過一段時間的測試和試運行 該網(wǎng)站的訪問速度 和可用性方面都有很大的提高 從未出現(xiàn)過網(wǎng)站服務中斷情況 但 DNS 輪詢具有明顯的缺 點 一旦某個服務器出現(xiàn)故障 即使及時修改了 DNS 設置 還是要等待足夠的時間 刷新 時間 才能發(fā)揮作用 在此期間 保存了故障服務器地址的客戶計算機將不能正常訪問服 務器 缺點 第一 域名服務器是一個分布式系統(tǒng) 是按照一定的層次結(jié)構組織的 當用戶將域名 解析請求提交給本地的域名服務器 它會因不能直接解析而向上一級域名服務器提交 上 一級域名服務器再依次向上提交 直到 RR DNS 域名服務器把這個域名解析到其中一臺服 務器的 IP 地址 可見 從用戶到 RR DNS 間存在多臺域名服務器 而它們都會緩沖已解 析的名字到 IP 地址的映射 這會導致該域名服務器組下所有用戶都會訪問同一 Web 服務器 出現(xiàn)不同 Web 服務器間的負載不平衡 為了保證在域名服務器中域名到 IP 地址的映射不 被長久緩沖 RR DNS 在域名到 IP 地址的映射上設置一個 TTL Time To Live 值 過了這 一段時間 域名服務器將這個映射從緩沖中淘汰 當用戶請求 它會再向上一級域名服務 器提交請求并進行重新映射 這就涉及到如何設置這個 TTL 值 若這個值太大 在這個 TTL 期間 很多請求會被映射到同一臺 Web 服務器上 同樣會導致負載不平衡 若這個 值太小 例如是 會導致本地域名服務器頻繁地向 RR DNS 提交請求 增加了域名解析 的網(wǎng)絡流量 同樣會使 RR DNS 成為系統(tǒng)中一個新的瓶頸 第二 用戶機器會緩沖從名字到 IP 地址的映射 而不受 TTL 值的影響 用戶的訪問 請求會被送到同一臺 Web 服務器上 由于用戶訪問請求的突發(fā)性和訪問方式不同 例如 有的人訪問一下就離開了 而有的人訪問可長達幾個小時 所以各臺服務器間的負載仍存 在傾斜 Skew 而不能控制 假設用戶在每個會話中平均請求數(shù)為 20 負載最大的服務器 獲得的請求數(shù)額高于各服務器平均請求數(shù)的平均比率超過百分之三十 也就是說 當 TTL 值為 0 時 因為用戶訪問的突發(fā)性也會存在著較嚴重的負載不平衡 第三 系統(tǒng)的可靠性和可維護性不好 若一臺服務器失效 會導致將域名解析到該服 務器的用戶看到服務中斷 即使用戶按 Reload 按鈕 也無濟于事 系統(tǒng)管理員也不能 隨時地將一臺服務器切出服務進行維護 如進行操作系統(tǒng)和應用軟件升級 這需要修改 RR DNS 服務器中的 IP 地址列表 把該服務器的 IP 地址從中劃掉 然后等上一段時間 等所有域名服務器將該域名到這臺服務器的映射淘汰 和所有映射到這臺服務器的客戶機 不再使用該站點為止 如果要將此架構環(huán)境用于實際生產(chǎn)的同志請謹慎考慮 優(yōu)點 dns 相對于 lvs 或其它負載均衡策略而言也有優(yōu)勢所在 這是因為負載均衡都是把所有 的訪問先集中到一個 ip 上 因為只有一個 ip 所以無意間這個 ip 的穩(wěn)定性就關系重大了 ip 穩(wěn)定性會受很多因素影響 n 個交換機 線路 機器等等 頗為復雜 而首頁很有可能 會用到異地的負載均衡 這么來不用 dns 方案就很難設計了 現(xiàn)在的常用瀏覽器和下載 軟件 都有對 dns 的故障處理機制 所以 dns 也是可以屏蔽掉一些故障的 雖然功能不強 但也較為實用 相比之下 即使是 lvs 也會有很多雜七雜八的問題 反而不如 dns 性能強 和穩(wěn)定 建議可以以此模型架構來學習 squid 反向代理原理及語法 建議采用源碼安裝 squid3 0 squid2 6 反向代理實驗模型反向代理實驗模型 作者 王斌斌 撫琴煮酒 Tool squid 2 6 STABLE6 4 el5 拓撲圖 如上圖 有兩個網(wǎng)絡 公司內(nèi)部私有網(wǎng)絡 192 168 1 0 24 Internet 外部網(wǎng)絡 10 66 0 0 24 公司內(nèi)部網(wǎng)絡有兩個服務器 Server A 提供兩種服務 端口 81 提供服務 1 端口 82 提供服務 2 Server B 提供一種服務 通過端口 80 來提供服務 Squid 作為公司內(nèi)部服務器的反向代理 兩塊網(wǎng)卡 其 IP 分別是 eth0 10 66 0 80 接 Internet 外部網(wǎng)絡 eth1 192 168 1 200 接公司內(nèi)部私有網(wǎng)絡 Internet 外部網(wǎng)絡通過 Squid 代理服務器 訪問公司內(nèi)部服務器 例如 Client 10 66 0 174 它不能直接訪問公司內(nèi)部服務器 而是通過 Squid 訪問公司內(nèi)部服務器 外部網(wǎng)絡客戶端訪問公司內(nèi)部網(wǎng)絡服務器的流程 舉個例子 如下 首先 在 Client 端修改 etc hosts 文件 添加如下三行 10 66 0 80 www serverA www 10 66 0 80 www serverA www 10 66 0 80 www serverB com www 注 添加這三行 目的是為了讓客戶端能夠解析這三個域名 www serverA www serverA www serverB com 其對應 IP 為 10 66 0 80 squid 反向代理服務器的 IP 這里 Squid 反向代理服務器監(jiān)聽端口 8000 默認是 3128 在客戶端 打開瀏覽器 在瀏覽器地址欄輸入 www serverA 8000 下圖顯示了 客戶端發(fā)出這個請求后 到最后收到數(shù)據(jù)的整個流程 Phase 1 這里客戶端在瀏覽器地址欄輸入 www serverA 8000 通過 Client 本地 etc hosts 解析 域名 www serverA 對應的 IP 是 10 66 0 80 Squid 反向代理服務器 于是客戶端向 Squid 反向代理服務器端口 8000 發(fā)送請求 注 在客戶端瀏覽器地址欄輸入 www serverA 8000 和 http 10 66 0 80 8000 是不一樣的 雖然都是請求 Squid 反向代理服務器 8000 端口 但它們有本質(zhì)的區(qū)別 如 果通過 IP 方式 http 10 66 0 80 8000 訪問 Squid 服務器 則不能實現(xiàn)讓 Squid 服務器對 內(nèi)部網(wǎng)絡多個服務器作代理 此時 Squid 只能將客戶端的請求向內(nèi)部網(wǎng)絡的 一個 服務 器作請求 為了實現(xiàn) Squid 能對內(nèi)部網(wǎng)絡多個服務器作代理 需要使用域名方式 例如這 里的 www serverA 8000 Squid 服務器收到這樣的請求后 它會解析 Host 是 www serverA 在 配置 Squid 時 有兩個選項 cache peer 和 cache peer domain 這兩個配置項讓 Squid 有能力知道 www serverA 這個請求最終 是想訪問公司內(nèi)部網(wǎng)絡服務器 A Server A 的 81 端口 從而實現(xiàn)了 Squid 對內(nèi)部多個 服務器作代理的功能需求 關于 cache peer 和 cache peer domain 的使用見后文 Phase 2 如上所述 Squid 服務器收到客戶端發(fā)來的請求 一看是 www serverA Squid 知道接下來去請求公司內(nèi)部網(wǎng)絡服務器 A Server A 的 81 端 口 Phase 3 Server A 提供的服務 1 Service 1 監(jiān)聽端口 81 收到 Squid 發(fā)送過來的請 求 于是根據(jù)請求發(fā)送相應數(shù)據(jù)給 Squid 服務器 Phase 4 Squid 收到服務器 A Server A 從端口 81 發(fā)送過來的數(shù)據(jù)后 會將該數(shù)據(jù) 在本地緩存 同時將數(shù)據(jù)從自己的 8000 端口發(fā)送給外部網(wǎng)絡的客戶端 上面四個步驟結(jié)束后 客戶端就會收到所希望的數(shù)據(jù) 值得說明的是 在整個過程中 公司內(nèi)部網(wǎng)絡的服務器對客戶端是透明的 即客戶端 并不知道內(nèi)部網(wǎng)絡究竟有哪些服務器 提供哪些服務 客戶端僅僅是訪問 Squid 服務器的 8000 端口 然后獲得相應的數(shù)據(jù) 理解上面 Squid 作代理 客戶端的請求流程后 下面介紹 Squid 的一些配置項 注 以下內(nèi)容是 Squid 一些基本配置項的說明 其中重點解釋給多個服務器作代理所涉 及的配置項 需要讀者對 Squid 有一些基本的認識 另外關于 Squid 還有很多沒提到的配 置項 有些配置項是直接影響 Squid 服務器的性能 這里不作說明 vim etc squid squid conf http port 8000 vhost Squid 服務器監(jiān)聽本機 8000 端口 vhost 支持虛擬主機 cache peer 192 168 1 50 parent 81 0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論