Destination Address Unreachable

2

場景

偵測 100 個服務器的狀態,想要得知目前網路斷線或是 HTTP 服務中斷,以及多久可以測一輪。

java isReachable?

雖然 java 5 有個 isReachable 的方法,但是似乎剛開始支援,有點問題,個人測試結果也是有點怪。一是時間有點長,接近一秒。

Sun Microsystems Inc. 1.5.0_06 running on Windows XP 5.1
127.0.0.1--982ms

另外也放鯊入區網,跑個 isReachable 觀察一下,確實沒有看到 ICMP 在區網出沒,只看到 TCP echo 出現。為了加以對照,用 ping.exe 跑一下,果然出現 ICMP

(謎之音:小心鯊魚很可怕,上班時候就別在區網上亂摸魚了)

order of magnitude

至於為何在上面先出現 ICMP ? 那是因為 ping.exe 用了 8ms 比較短,Tcp echo port 7 用了接近 1000 ms ,所以慢了一點出現。

這種顯著性的差異是幾個數量級,所以必須確保該平台可以跑到,不然同一時間只出跑一台跟預期跑出一百台,會有很大的期望落差。

links

isReachable method

這不是肯德基也不是 ping 替代品

拔掉也OK ? 問題很大

還會吃掉資源

wireshark

apache mod proxy balancer

0

http level switch ?

apache 之前即有反向代理 reverse proxy 機制,代理所有的內部服務機的內容,主要安裝在內部服務器的前端,既然流量都由這台機器 reverse proxy 經手,所以也可以在經手前動手腳。

手腳一:分攤負載

將超過一台服務器的負載,轉送到預先設定好並排服務器,分擔負載。

手腳二:服務不中斷

如果其中一台內部服務器壞掉,其他服務器設定正確並正常運作,對外的服務並不會中斷。

如何分配

關於如何分配可以參考下面部份設定,目前支援分配邏輯目前只有兩種,根據需求數 lbmethod=byrequests 或是流量分配 lbmethod=bytraffic。

目前並無根據後端服務器狀態分配的模式,這功能在商業機器常見到,也就是反應比較快的服務器就給比較多負載。

一般商業機器有各種協定測試方法,例如 HTTP 會直接發出一個靜態的 GET 需求,看看是否有回應。

ProxyPass /fooservice balancer://cluster
<Proxy balancer://cluster>
  BalancerMember http://app1.inside.com:8080/fooservice
  BalancerMember http://app2.inside.com:8080/fooservice
</Proxy>

links

mod_proxy_balancer

ApacheCon 2006 mod_proxy_balancer

Mongrel, Apache 2.2, and mod_proxy_balancer

apache mod rewrite

0

HTTP response of 302 (MOVED TEMPORARILY)

外轉 external redirection 常常看到 R(redirect) 與 L (last),預設會送出 302,所以這個方式必須懂 302 客戶端。另外既然外轉,也就不需要再繼續 rewrite 規則判讀,所以要加上個 L 表示結束。

這個模式比較像是彈回去,讓客戶端(通常是瀏覽器)再發球一次。也因為如此,HTTP 中的 BODY 流量不經過這台機器,跟 mod_proxy 來比較,比較不需要大機器。

mod_proxy 的 reverse proxy 模式比較像吞下去,然後再私下轉給內部看不到的機器處理,在取得處理結果後,轉給客戶端。

links

mod_rewrite

Linux Layer 7 Filter

0

the L7-Filter is different from the L7-Switch

過濾器不是交換器?

這個 netfilter 延伸模組可以新增 pattern 根據 URL 來貼標籤。但是貼了之後要做 redirect 不是很容易,主要是來不及改的問題,引述自 Linux Layer 7 FAQ :

L7-filter can't possibly identifiy what protocol a connection is using 
until it sees a packet with data in it. 

要拆來看要爬到第四層以上,redirect 牽涉到第三層的問題,到了第四層要改第三層已經遲了,除非是 UDP 比較適用。

For TCP, this is the third packet, far too late to start redirecting anything. 
For UDP, it could work, providing that l7-filter gets enough data in the 
first packet to make a decision. 

參考 Http Pattern 可以看到語法。

links

l7-filter

Jamyy weblog

LVS-HOWTO

打造 Linux 具有 L7-Filter Function?

【教學】Linux Layer 7 Netfilter QOS 實作成功紀錄

Coyote Linux 頻寬管制 (QoS) 設定教學

探討Qos頻寬管理器-解決塞車,搶頻寬,取代IP分享器

Html to RoR Task C

0

Task C 是個 RSS 加裝任務。

改寫 YML 中的名詞,改用泛用的名詞以利後續維護。

screencast 1

Use FeedTools to build RSS 2.0

screencast 2

改用 YahooUI Grids CSS to build new layout.

screencast 3

首頁最新10筆消息,只有抓單一來源比對日期,沒有做所有來源比對。

screencast 4

多來源最新10筆消息,目前只有抓rails 所有頻道比對日期,沒有做java來源比對。

screencast 5

Older posts: 1 2 3 ... 6