主伺服器群,然後在利用Squid逆向緩衝web80連接埠來加速自己的網站.各大門戶網站象163,sina,chinaitlab之類基本都是使用的這種技術,好處是大大的有.比如加速了網路和可以防駭客(因為他們見到的都是CDN的主機)
這是利用Squid逆向叢集模式做的一種應用
網路環境:
主伺服器群:源Web伺服器群 位於公網ip:220.XXX.XXX.X port:80(後台才是WEB的伺服器)
注: 要保證TCP80,UDP3130在防火牆上是開的(供icp_port通訊使用,多台Squid叢集才會用到)
全國各地分伺服器:A伺服器公網IP111.xxx.xxx.x
B伺服器公網ip112.xxx.xxx.x
注: 要保證TCP80,UDP3130在防火牆上是開的(供icp_port通訊使用,多台Squid叢集才會用到)
……………………
需要解決的問題:
全國的所有使用者,無論是電信,還是網通,都能速度很好的開啟網站
實施
1、分別在主伺服器群和全國各地分伺服器的三台伺服器安裝Squid,不會安裝的請直接關閉本網頁.
2、分別配置Squid,這裡只重點敘述Squid叢集配置要點.
主伺服器群Squid的配置:
http_port 220.XXX.XXX.X:80 vhost vport #讓Squid監聽本機ip的80連接埠
icp_port 3130 #多台squid通訊使用
cache_peer “內網web伺服器的地址” parent 80 0 no-query originserver no-digest name=cache0 #設定源Web伺服器群的ip和連接埠
cache_peer 220.XXX.XXX.X sibling 80 3130 name=cache1 #讓遠端squid串連本地Squid工作在sibling模式並指定其連接埠
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache2 #A伺服器
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache3 #B伺服器
cache_peer_domain cache0 www.php-oa.com #配置本機squid允許接受訪問的網域名稱
acl Safe_ports port 80
acl Safe_ports port 3130 #允許以上連接埠的代理
全國各地分伺服器Squid的配置:
A伺服器:
http_port 111.xxx.xxx.x:80 vhost vport
icp_port 3130
cache_peer 220.xxx.xxx.x parent 81 0 no-query originserver no-digest name=cache0 #設定主伺服器群Web伺服器為原始伺服器
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache1
cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache2
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache3
cache_peer_domain cache0 www.php-oa.com
acl Safe_ports port 80
acl Safe_ports port 3130
B伺服器:
http_port 112.xxx.xxx.x:80 vhost vport
icp_port 3130
cache_peer 220.xxx.xxx.x parent 80 0 no-query originserver no-digest name=cache0
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache1
cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache2
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache3
cache_peer_domain cache0 www.php-oa.com
acl Safe_ports port 80
acl Safe_ports port 3130
雖然配置好了但是如何讓電信和網通的使用者能有選擇的訪問兩個不同鏡像呢?這個請各位自己查相關的資料,要不到https://www.dnspod.com申請雙線,電信網通的轉寄服務
注:下面看看cache_peer的參數
通過squid.conf設定檔中的cache_peer選項來配置Proxy 伺服器陣
列,通過其他的選項來控制選擇代理夥伴的方法.Cache_peer的使用格式如下:
cache_peer hostname type http_port icp_port
共有5個選項可以配置:
1. hostname:指被請求的同級子Proxy 伺服器或父Proxy 伺服器.可以用主機名稱或ip地址表示;
2. type:指明hostname的類型,是同級子Proxy 伺服器還是父Proxy 伺服器,也即parent(父) 還是 sibling(子);
3. http_port:hostname的監聽連接埠;
4. icp_port:hostname上的ICP監聽連接埠,對於不支援ICP協議的可指定7;
5. options:可以包含一個或多個關鍵字.
Options可能的關鍵字有:
1. proxy-only:指明從peer得到的資料在本地不進行緩衝,預設地,squid是要緩衝這部分資料的;
2. weight=n:用於你有多個peer的情況,這時如果多於一個以上的peer擁有你請求的資料時,squid通過計算每個peer的ICP回應時間來 決定其weight的值,然後squid向其中擁有最大weight的peer發出ICP請求.也即weight值越大,其優先順序越高.當然你也可以手工 指定其weight值;
3. no-query:不向該peer發送ICP請求.如果該peer不可用時,可以使用該選項;
4. Default:有點象路由表中的預設路由,該peer將被用作最後的嘗試手段.當你只有一個父Proxy 伺服器並且其不支援ICP協議時,可以使用default和
no-query選項讓所有請求都發送到該父Proxy 伺服器;
5.login=user:password:當你的父Proxy 伺服器要求使用者認證時可以使用該選項來進行認證.
curl -I http://www.xxx.com