Scenario
許多人會遇到在一台Stingray底下,需要使用到相同Port建立不同的服務的情況,當Stingray綁訂多組IP時候,當然可以把來自不同ip的部分分別設定Virtural Server,但是若只有綁訂一組IP,Port重複使用的部份就是個頭痛的問題,這邊虛擬一個簡單的範例,如下圖所示:
如上圖,當Stingray只有Binding一組IP時候,三組DNS共用一組Domain Name,則需要透過Traffic Rule來進行流量的控制,Traffic Rule的內容大致上就是取出連線的Target端Domain Name,並且將該Traffic重導到適當的Pool...
在這個設定中,需要事先準備下面設定:
- 三組Pool,分別對應到要Group的Server
- 一組Virtual Server,對應到port 80,預設Pool可以設定為discard
- 設定Virtual Server上的Traffic Rule
Traffic Rule
進入Traffic Rule的編輯部分,在Input Traffic部分建立下面的規則:
#使用getHostHeader取出連線進入的domain name
$hostheader = http.getHostHeader();
#透過log確認是否是正確的規則
log.info("$hostheader:". $hostheader);
#撰寫連線規則
if($hostheader == ‘www1.abc.com’)
pool.use( "www1_pool");
else if($hostheader == ‘www2.abc.com’)
pool.use( "www2_pool");
else if($hostheader == ‘www3.abc.com’)
pool.use( "www3_pool");
測試
當Virtual Server enable之後,則可以透過在你的連線主機上hard code hosts設定來達到可以連線www1.abc.com, www2.abc.com, www3.abc.com的效果,此時如果設定無誤,則可以正確的連線到您所指定的Pool中的主機。