本節所講內容: html
squid服務器常見概念 linux
squid服務器安裝及相關配置文件 web
實戰:配置squid正向代理服務器 vim
實戰:配置透明squid代理提高訪問速度 windows
實戰:配置squid反向代理加速度內網web服務器訪問速度 瀏覽器
squid服務概述: 緩存
全稱: squid cache,是一個流行的自由軟件(GNU通用公共許可證). 安全
主要有連個功能: 代理服務器 和 爲web服務器提供緩存 服務器
應用普遍: 網絡
1. 共享網絡資源,緩存萬維網;
2.爲web服務器前置緩存提升web服務器的訪問速度;
3. 域名和其餘網絡搜索;
4. 過濾流量,幫助網絡安全;
5. 局域網代理上網
主要平臺在 Unix類系統
squid:烏賊 的意思
加速原理:
模式: C/S 模式
安裝squid服務:
yum -y install squid
或
rpm -ivh /mnt/Packages/squid-*.rpm
端口:3128
vim /etc/services
netstat -antup | grep 3128
配置文件:
/etc/squid/squid.conf
啓動服務
/etc/init.d/squid start
或
service squid start
開機啓動:
chkconfig squid on
chkconfig --list squid
實戰舉例
實驗環境:
Server ---> xiaogan64 IP:eth0 192.168.31.64
eth1:192.168.64.1
Client1 ---> xp IP:eth0 192.168.64.123
Client2 ---> xiaogan63 IP:eth0 192.168.64.63
例1:配置squid正向代理服務器
需求分析:
搭建squid服務器,是內網機器,能夠經過squid服務器加速上網
Action:
1. Server端,安裝squid服務
yum -y install squid
2. 配置squid實現正向代理
cp /etc/squid/squid.conf /etc/squid/squid.conf.bak #先備份!
vim /etc/squid/squid.conf
修改 http_access deny all
爲 http_access allow all #即去掉註釋,容許全部主機經過
3. 啓動服務
/etc/init.d/squid start
4. 服務器使用兩塊網卡,
外網---> eth0 IP:192.168.31.64 (橋接模式)
內網---> eth1 IP:192.168.64.1 (VMnet6模式)
添加第二塊網卡後,運行以下命令便可:
ifconfig eth1 192.168.64.1/24 #不要設置網關!!!
5. 客戶端xp系統,安裝瀏覽器,
並設置IP地址:192.168.64.123/24 網關:192.168.64.1(服務器IP)
注意:沒必要設置DNS,由於服務器已經幫助咱們把域名解析了!!!
打開瀏覽器,並設置代理,步驟以下!
工具 ---> Internet選項 ---> 鏈接 ---> 局域網設置
---> 設置代理服務器 192.168.64.1 端口3128 Ok,嘗試瀏覽網頁!
當咱們在xp系統中,運行cmd,ping www.qq.com 時,發現ping不通,可是瀏覽器能夠訪問網站?!
總結:代理的過程:你的需求給代理,代理替你訪問,而後返回給你。
互動:客戶端須要不配置 DNS?
不須要,由於客戶端把連接http://www.qq.com 發給代理後,代理會替你解析完域名,並把收到的數據再轉給客戶端瀏覽器。
例2:配置squid,搭建透明代理服務器
透明代理= squid + iptables
分析: 因爲在例1中,經過瀏覽器,將需求的信息,經過squid服務器的3128端口導向了80端口,因此咱們能夠配置squid讓其默認實現端口轉發.(即在服務端只需設置好IP便可,不用設置IE代理)
即:客戶端不用在瀏覽器裏指定代理服務器的ip地址和端口號,就能夠直接訪問公網上的網站服務器。
Action:
1. 直接修改配置文件/etc/squid/squid.conf
vim /etc/squid/squid.conf
修改 http_access deny all 爲
http_access allow all
修改 http_port 3128
爲 http_port 3128 transparent
2. 重啓或重載squid
/etc/init.d/squid reload
或 /etc/init.d/squid restart
3. 啓動iptables,並配置iptables規則
配置前,設置默認接收,並清空規則
iptables -P INPUT ACCEPT
iptables -F
配置iptables以下:
開啓路由轉發: echo 1 >> /proc/sys/run/ipv4/ip_forward
vim /etc/sysctl.conf
修改 net.ipv4.ip_forward 值 =1
sysctl -p #是修改生效
配置規則:
iptables -t nat -A POSTROUTING -s 192.168.64.0/24 -j SNAT --to 192.168.31.64
# SNAT代理內部上網,將內部的地址所有轉化爲能夠上網的地址 192.168.31.64
iptables -t nat -A PREROUTING -s 192.168.64.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
# 端口轉化,來自192.168.64.0,從eth1且端口爲80的數據進行數據重定向到3128,代理服務器爲你工做
4. 客戶端去掉代理設置,嘗試瀏覽網頁
例3:配置squid反向代理加速度內網web服務器訪問速度
國內主要反向代理 CDN 廠商:網宿 , 藍汛 百度,騰訊,阿里雲等等都有CDN服務。
反向代理服務器: 要求內存夠大,硬盤要夠快不須要太大。
拓撲圖:
讓外網中 win10主機 訪問192.168.31.64代理服務器.
代理服務器緩存192.168.64.63 web服務器中的數據.
實現xiaogan64給xiaogan63加速 80和81端口
只加速度靜態頁面或 視頻。
Actions:
1. 公網客戶端,物理機:
win10 IP: 192.168.31.248:
修改物理機hosts文件:
windows hosts文件在: C:\Windows\System32\drivers\etc
首先,在 Client 端修改 hosts 文件,添加以下兩行:
192.168.31.64 www.xiaogan-a.org
192.168.31.64 www.xiaogan-b.org
注:添加這兩行 ,目的是爲了讓客戶端可以解析這兩個域名
(www.xiaogan-a.com 和www.xiaogan-b.com)
其對應 IP 爲 192.168.31.64 ( squid 反向代理服務器的 IP)
2. 配置xiaogan64 squid代理服務器:
這裏,Squid 反向代理服務器監聽端口:80 (默認是:3128)便於瀏覽器瀏覽
訪問時,須要在客戶端,打開瀏覽器,在瀏覽器地址欄輸入:
www.xiaogan-a.com:80 ---> 瀏覽器默認端口80,因此能夠不寫:80
配置squid代理服務器xiaogan64:
# 配置Squid 服務器監聽本機 80 端口,開啓vhost 支持虛擬主機功能,這樣也能夠給多臺服務器加速。
vim /etc/squid/squid.conf
改:#http_access denny all
爲: http_access allow all
改:http_port 3128
爲:http_port 80 vhost
##打開虛擬主機支持 ,在此行下面,添加以紅色內容:
cache_peer 192.168.64.63 parent 80 0 no-query originserver weight=1 name=a
cache_peer 192.168.64.63 parent 81 0 no-query originserver weight=1 name=b
cache_peer_domain a www.xiaogan-a.com
cache_peer_domain b www.xiaogan-b.com
# 以上4行配置,讓 Squid 服務器知道:
# 從客戶端過來的請求,若是是 www.xiaogan-a.com,則 Squid 向 192.168.64.63的端口 80發送請求;
# 從客戶端過來的請求,若是是 www.xiaogan-b.com,則 Squid 向 192.168.64.63 的端口 81 發送請求;
cache_peer_access a allow all
cache_peer_access b allow all
# cache_peer_access 設置:容許其它 cache 機和訪問a和b
重啓服務:
service squid reload
說明:
1) cache_peer 設置與其它 cache 機的通信,也處理加速方式的核心設置
cache_peer hostname type http-port icp-port [options]
no-query 不發送 icp 信息包到此機器,通常設置原始主機用(若是是 cache 機,則須要互相發送 icp 包驗證存在性)
originserver 指定此機爲原始內容服務器,用於加速模式
type: either 'parent'(父親), 'sibling'(兄弟), or 'multicast'(廣播——最好不用).原始服務器配成 parent
2) cache_peer_domain 限制/指定用戶訪問的鄰居 cache 域,相似
cache_peer_access,cache_peer_domain europe-cache.org parent .ch .dk .fr 以
fr/dk/ch 結尾的域名訪問 europe 緩存
3) cache_peer_access cache-host allow|deny [!]aclname 相似 acl,對 cache 機器進行訪問控制,通常不用。例子:cache_peer_access 192.168.0.249 allow HTTP
其它配置參數說明: 如下
#cache_dir ufs /var/spool/squid 100 16 256
# 指定 Squid 服務器存放數據的目錄
配置兩個站點xiaogan63 配置HTTP虛擬主機:
基於端口作虛擬主機:
mkdir /var/www/html/xiaogana
mkdir /var/www/html/xiaoganb
echo www.xiaogan-a.org > /var/www/html/xiaogana/index.html
echo www.xiaogan-b.org > /var/www/html/xiaoganb/index.html
vim /etc/httpd/conf/httpd.conf
在Listen 80 行後添加以下行:
Listen 81
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/xiaogana
ServerName www.xiaogan-a.org
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost *:81>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/xiaoganb
ServerName www.xiaogan-b.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
重啓httpd服務
service httpd restart
測試:
www.xiaogan-a.org
www.xiaogan-b.org
另外,也能夠把squid代理設置爲80端口,這樣客戶端,在訪問數據時,就能夠直接訪問了。不須要輸入端口號了。
在上面實驗的基礎上,修改如下內容:
[root@xiaogan63 ~]# vim /etc/squid/squid.conf
改:http_port 8000 vhost
爲:http_port 80 vhost ##打開虛擬主機支持 ,在此行下面,添加以紅色內容:
重啓squid服務器:
[root@xiaogan63 ~]#service squid restart
測試:
在瀏覽器中訪問:www.servera.com 和www.serverb.com 能夠正常訪問。
http://blog.csdn.net/kumu_linux/article/details/7892984
//注:cache_men不能超過cache_dir中的一個數值,不然會出現以下報錯,
中止 squid:2012/08/21 16:05:46| WARNING cache_mem is larger than totaldisk cache space!
http://zhumeng8337797.blog.163.com/blog/static/1007689142011111112431140/
CDN簡介及選擇技巧:
CDN服務
CDN的全稱Content Delivery Network,(縮寫:CDN)即內容分發網絡。CDN目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡「邊緣」,使用戶能夠就近取得所需的內容,解決 Internet 網絡擁塞情況,提升用戶訪問網站的響應速度。
CDN的組成部分
CDN是一種組合技術,其中包括源站、緩存服務器、智能DNS、客戶端等幾個重要部分。
源站:源站指發佈內容的原始站點。添加、刪除和更改網站的文件,都是在源站上進行的;另外緩存服務器所抓取的對象也所有來自於源站。
緩存服務器:
緩存服務器是直接提供給用戶訪問的站點資源,有一臺或數臺服務器組成;當用戶發起訪問時,他的訪問請求被智能DNS定位到離他較近的緩存服務器。若是用戶所請求的內容恰好在緩存裏面,則直接把內容返還給用戶;若是訪問所需的內容沒有被緩存,則緩存服務器向鄰近的緩存服務器或直接向源站抓取內容,而後再返還給用戶。
智能DNS:
智能DNS是整個CDN技術的核心,它主要根據用戶的來源,將其訪問請求指向離用戶比較近的緩存服務器,如把廣州電信的用戶請求指向到廣州電信IDC機房中的緩存服務器。經過智能DNS解析,讓用戶訪問同服務商下的服務器,消除國內南北網絡互相訪問慢的問題,達到加速做用。智能DNS的出現,顛覆了傳統的一個域名對應一個鏡像的作法,讓用戶更加便捷的去訪問網站。
客戶端:
客戶端或稱用戶端即發起訪問的普通用戶,通常的訪問方式是瀏覽器。這裏就再也不作詳細說明。
工做原理
傳統的解析過程:
瞭解CDN工做原理以前,咱們先看看傳統的網站訪問流程,傳統的訪問流程沒有CDN,那麼整個解析:
傳統的網站訪問過程爲:
1. 用戶在瀏覽器中輸入要訪問的域名;
2. 瀏覽器向域名解析服務器發出解析請求,得到此域名對應的IP地址;
3. 瀏覽器利用所獲得的IP地址,向該IP對應的服務器發出訪問請求;
4. 服務器對此響應,將數據回傳至用戶瀏覽器端顯示出來。
CDN的解析過程:
1. 用戶在瀏覽器中輸入要訪問的域名;
2. 瀏覽器向域名解析服務器發出解析請求,因爲CDN對域名解析過程進行了調整,因此用戶端通常獲得的是該域名對應的CNAME記錄,此時瀏覽器須要再次對得到的CNAME域名進行解析才能獲得緩存服務器實際的IP地址。
注:在此過程當中,全局負載均衡DNS解析服務器會根據用戶端的源IP地址,如地理位置(深圳仍是上海)、接入網類型(電信仍是網通)將用戶的訪問請求定位到離用戶路由最短、位置最近、負載最輕的Cache節點(緩存服務器)上,實現就近定位。定位優先原則可按位置、可按路由、也可按負載等[智能DNS]。
3. 再次解析後瀏覽器獲得該域名CDN緩存服務器的實際IP地址,向緩存服務器發出訪問請求;
4. 緩存服務器根據瀏覽器提供的域名,經過Cache內部專用DNS解析獲得此域名源服務器的真實IP地址,再由緩存服務器向此真實IP地址提交訪問請求;
5. 緩存服務器從真實IP地址獲得內容後,一方面在本地進行保存,以備之後使用,同時把獲得的數據發送到客戶端瀏覽器,完成訪問的響應過程;
6. 用戶端獲得由緩存服務器傳回的數據後顯示出來,至此完成整個域名訪問過程。
經過以上分析能夠看到,不管是否使用CDN網絡,普通用戶客戶端設置不需作任何改變,直接使用被加速網站原有域名訪問便可。對於要加速的網站,只需修改整個訪問過程當中的域名解析部分,便能實現透明的網絡加速服務。
傳統更直觀的圖解:
用戶在本身的瀏覽器中輸入要訪問的網站的域名
瀏覽器向本地DNS請求對該域名的解析
本地DNS將請求發到網站受權的DNS服務器
受權DNS將服務器的IP地址做爲解析結果送給本地DNS
本地DNS將解析結果返還給用戶,同時將該解析結果保存在本身的緩存中,直到相應的TTL(生存週期)過時,纔再向網站的受權DNS請求解析
用戶在獲得IP地址後,向該地址所指向的網站的服務器進行訪問;
CDN更直觀圖解:
用戶向瀏覽器提供要訪問網站的域名,域名解析的請求被髮往網站的DNS域名解析服務器;
因爲網站的DNS域名解析服務器對此域名的解析設置了CNAME,請求被指向CDN網絡中的智能DNS負載均衡系統;
智能DNS負載均衡系統對域名進行智能解析,將響應速度最快的節點IP返回給用戶;
瀏覽器在獲得速度最快節點的IP地址之後,向CDN節點發出訪問請求;
因爲是第一次訪問,CDN節點將回到源站取用戶請求的數據併發給用戶;
當有其餘用戶再次訪問一樣內容時,CDN將直接將數據返回給客戶,完成請求/服務過程。
精簡原理
解決服務器端的「第一千米」問題
緩解甚至消除了不一樣運營商之間互聯的瓶頸形成的影響
減輕了各省的出口帶寬壓力
緩解了骨幹網的壓力
優化了網上熱點內容的分佈
CDN對網絡的優化做用原理圖以下:
國內外CDN加速有何區別、如何選擇CDN?
CDN的前2名是藍訊和網宿,這個業內異議不大。下面規模較大的有帝聯、快網等還有一些新起之秀,好比騰訊雲CND,阿里雲CND等等,固然小的CDN不可勝數。CDN的加速效果更多的依賴於其普遍的節點部署,因此選擇一個相對較大的CDN更靠譜。價格方面,流量較小時確實沒什麼議價空間
因爲國內外網絡環境的差別,CDN(內容分發網絡)的意義也有了不一樣。在國內,CDN最主要解決的問題是運營商之間的互聯互通問題,固然也確實解決了突發流量、大範圍覆蓋、網民訪問緩慢的問題。所以,國內對CDN需求最明顯的是大型互聯網公司,尤爲是視頻、遊戲、門戶、電商等。企業類相對就瞭解的不多了,只有個別外資企業可以理解CDN的真正意義,國內企業還須要好久的時間去理解。在國外,CDN的至關一部分客戶羣體是企業,各類與互聯網並不直接相關的企業。
CDN的好與壞,我的認爲有以下幾點:(不分前後)
1,基礎建設的投入,也就是節點的質量和數量;(所以小型CDN服務商天然在資金方面是劣勢)
2,技術研發投入,對新技術的敏感,對互聯網流量的敏感,對IP網絡底層技術的敏感;動態數據愈來愈多,如何針對動態技術進行加速,如何真正高效的動靜態分離,如何針對不一樣業務自動進行識別和區分,如何真正智能的調度流量,等等
3,對互聯網公司業務的深入理解,針對遊戲、視頻、門戶、電商等等互聯網公司,不一樣業務類型有哪些獨特的需求,服務和產品該如何實際解決問題,如何讓客戶真正感受到方便、實用、高效。
4,服務意識,如何不斷提高後臺系統的效率,如何給客戶一個真正方便簡潔的操做界面,如何能利用帶寬等數據統計出更有價值的信息給予反饋,如何讓CDN服務變得相對透明,而不是成爲運維部門的一種工做壓力。
5,數聽說話,積累了如此多的數據,有什麼樣的反饋,有什麼樣的彙總和概括,能提煉出哪些對客戶更有附加價值的東西,是否能發現如今系統的問題從而第一時間解決。
6,運營經驗,作運維的朋友們都知道,經驗很是重要。所以,一個CDN服務商的服務時間很關鍵,就像一句老話,吃的鹽比你走的路都多,能同樣麼? 固然,經驗不是單純時間的累計,應該是不斷總結、不斷改進的過程,漫長確意義非凡。
一些見解:
1,計費標準,因爲國內運營商的壟斷地位是不可置疑的,所以計費方式很大一部分是受運營商影響的。Akamai是按照流量計費,而國內不得不以帶寬計費方式爲主。
2,價格高低,若是單純的只是將運營商的帶寬轉售給互聯網公司,那CDN就變成了帶寬批發商,價格天然就只是價格,沒有其餘價值了。但若是能結合大量的數據,從技術上提高體驗,就有了更多的價值,價格天然會高。
3,避免惡性循環,當產品和服務的附加值太低時,惡性循環就開始了。買東西的只看低價,賣東西的只好不斷降價,買東西的發現質量愈來愈差,只好尋找更低的價格,賣東西的就只好不斷壓縮成本,下降投入...久而久之,後果可想而知。
我的認爲一些有價值的東西:
流量調度,提及來簡單,能作到Akamai那樣的全球調度,不容易;
動態數據,目前國內CDN服務商都沒有真正實用、好用的方案,須要持續的技術投入;
高度自動化,一套系統乃至一個公司的效率高低,直接影響結果;
態度,你是隻爲本身着想,仍是能真正站在客戶的角度考慮問題,很重要。
Akamai
Akamai於1998年發明CDN技術架構並誕生於麻省理工學院,1999年NASDAQ上市。總部位於美國波士頓。
Akamai是全球最大的CDN服務商,它巨大的網絡分發能力在峯值時可達到21Tbps。Akamai公司旨在消除Internet瓶頸和提升互聯網用戶訪問體驗,保護最終用戶訪問網站以及企業內部應用的速度,而且提供全面的雲安全服務,提供全球高清流媒體的加速。
目前,該公司爲在全球部署150000多臺服務器,這些服務器部署在全球90多個國家,800多個城市,1000多個運營商的2500多個節點上。