TPC

TPC - TCP Port Center
充分實現軟體port橋接對應,兼具Firewall/Filter等功能
1. 簡單之本機port轉接, 例如 443(ssl) 轉其他應用程式之服務port,讓原程式變成多埠服務
2. 將本機port橋接至其他LAN或WAN上其他的IP/host/domain之指定port,讓原程式變成多點服務(例如使用多線xDSL作服務)
3. 可實現多port與多機同時對應到同一服務port上,例如LAN中某機器服務SQL之1433,WAN上多埠機器橋引連接
4. 可針對其他服務程式之弱點提供保護過濾
5. 可讓實際服務之主機完全隱藏於LAN或防火牆中,避免被直接攻擊,且完全正常服務
6. 可設定透過Proxy-SSL做跳板轉接
7. 可減低實際服務之程式的Send Loading,可將服務集中,負載分散
8. 可過濾IP,設定快速且容易,各種功能生效皆不須重啟程式,可維持線上不中斷服務
9. 提供主機群組設定方式,可以同時作為備源/負載平衡之功能服務
10.一般伺服端程式特別容易在其用戶端連線或斷線時有高負載或例外發生而中斷服務,僅須改以TPC作為前端便能立刻改善

程式面貌:


指令功能:





指令示範:

加入一個 81 port 服務, 最大連線數 8192, 所有連到此port的連線與 127.0.0.1:80 作連結

add 81 127.0.0.1:80 8192

加入一個主機群叫 @881
編號 1 是 127.0.0.1:80 可負載平衡權數是 600 個連線
編號 3 是 192.168.1.110:80 可負載平衡權數是 400 個連線

SetGroupHost @881 1 127.0.0.1:80 600
SetGroupHost @881 3 192.168.1.110:80 400

加入一個 881 port 服務, 最大連線數 1000, 所有連到此port的連線與 @881主機群 作連結(負載平衡)

add 881 @881 1000

指令說明:

■新增一個 TCP port 作對應服務, delay值愈大表該服務較不即時,()表預值
Add port host_address[:port(80)] [MaxConn(8)] [delay(0)] [LocalIP(0.0.0.0)]

(略)

■保護模式之對應服務 **** 為選擇之保護方式,例如 u8i8,DC,HCC,HPCC
****Add port host_address[:port(80)] [MaxConn(8)] [delay(0)] [LocalIP(0.0.0.0)]


■針對指定的 TCP port 變更Host對應設定
ChangeHost port host_address[:port(80)]

即時變更對應橋接之Host, 不影響已連線中的橋接, 之後的新連線會直接對應新的Host設定

■設定(新增/變更)對應主機群組(備源/負載平衡模式)
SetGroupHost @GroupName ID HostAddress [MaxCount]

(假設本機有IIS於port 8080,保留port 80給TPC,另有其他同功能之Web服務於區網中)
加入一個主機群叫 @Web (主機群組名稱 必須以 @帶頭作為識別, 包含 @ 最多 7 個字元)
編號 1 是 127.0.0.1:8080 可負載平衡權數是 600 個連線
編號 3 是 192.168.1.110:80 可負載平衡權數是 400 個連線

SetGroupHost @Web 1 127.0.0.1:8080 600
SetGroupHost @Web 3 192.168.1.110:80 400

註1: MaxCount權數是用來計算實際連線數的負載百分比, 負載率低的優先分配
如將MaxCount權數設為0代表此編號不列入分配只是先建立項目而已

註2: 開始時指定的編號1和3的對應項目尚未存在,因此指令作用即為新增對應項目,
之後使用已存在的編號1和3進行指令操作則指令的作用在於變更對應項目

變更主機群@Web編號 3 可負載平衡權數是 300 個連線

SetGroupHost @Web 3 "" 300

註1: 如果是縮小,設定值不能低於當前的Using連線數,不然會設定失敗

註2: 有指定MaxCount的指令操作, Host參數可用空白("") 代表不作變更
註3: 如果將MaxCount設為0, 代表暫停分配新的負載到此編號項目

同時變更主機群@Web編號 3 可負載平衡權數是 600 個連線 同時改指定對應主機為 192.168.1.110:80

SetGroupHost @Web 3 192.168.1.110:80 600

變更主機群@Web編號 1 對應主機為 192.168.1.117:80

SetGroupHost @Web 3 192.168.1.117:80

暫停主機群@Web配發連線到編號 3 的對應項目

SetGroupHost @Web 3 "" 0
註: 此方式為將MaxCount設為0, 代表暫停分配新的負載到此編號項目
若要
恢復分配可下同樣的指令方式將MaxCount改為所要之權數值即可

SetGroupHost @Web 3 ""
註: 此方式為將Host設為空白(""), 代表暫停分配新的負載到此編號項目
若要恢復分配可下同樣的指令方式將Host改為所要對應的實際Address即可

刪除主機群@Web編號 3 的對應項目

SetGroupHost @Web 3 -

註: 若當前的Using連線數不為0,則無法刪除 (可先設成暫停分配並等所有連線結束後再刪除)

增加服務port 80對應主機群@Web最大連線數1000

Add 80 @Web 1000

註: 連線到TPC 80 port上的連線會被依負載率均勻分配到主機群@881的主機編號 1 和 3 的實際目標上
當連線總數為100時, 主機編號 1 會有 60個連線(10%=60/600), 主機編號 3 會有 40個連線(10%=40/400)

■刪除指定port之服務
Del port

(略)

■清除所有服務
DelAll

(略)

■指定一個 TCP port 之對應服務, 透過指定的HTTP Proxy橋接連線
SetProxy port proxy_host[:port(80)]

proxy_host內容若為 - , 代表移除Proxy設定; Proxy可以使用SWS或任何支援HTTP/CONNECT指令的Proxy,
此模式TPC會對Proxy發出HTTP/CONNECT指令要求連線, 待Proxy回應許可則才將對應連線透過Proxy橋接

例如將SSL連線透過HiNet Proxy處理

SetProxy 443 proxy.hinet.net:80

移除指定port之Proxy設定 (2016-11-21新增即時異動可以有移除設定的方式)

SetProxy 443 -

■指定一個 TCP port 之對應服務, 連線失敗之嘗試重連次數(預設為 2, 可為 0~255)
SetRetry port count

(略)

■指定一個 TCP port 之對應連線時間超過Timeout設定未完成則視為失敗(預設為 10200(2秒), 可為 10001(0.01秒)~16000(60秒))
SetTimeOut port count

當應用於Group Host的方式時,可將此時間間隔縮短使於連到有問題的對應Host時,
更快切換到其它可用Host作重連嘗試(SetRetry不可為0才有作用),讓用戶端沒有任何等待的感覺

應用於單一Host時, 對應的Host有問題時可提供快速的斷線反應免讓用戶端處於長時間的空等待情形
例如橋接的HTTP服務主機Shutdown時可快速回應斷線, 使瀏覽器不會卡住在連不上的狀態等一分鐘

■指定一個 TCP port 之對應服務Client連線至少要發送多少資料才允許橋接(0~65535)
SetByteRequire port data_in_bytes

(略)

■指定一個 TCP port 之對應服務緩衝大小之限制(預設為 131072, 可為 1~128MB), 超過此限制強制斷線, 設0則是不限制
SetBufferLimit port size_in_bytes

(略)

■針對指定port啟用或停用Log紀錄功能 (option: 0-Disable , 1-Enable , 2-Close , 3-Suspect)
SetLogEnable port option

0-Disable (預設)

完全不顯示連線斷線訊息

1-Enable

顯示所有連線斷線之運作訊息

2-Close

僅顯示斷線狀態訊息

3-Suspect

只顯示因為達到限制被TPC斷線的部分

■將指定的連線斷線
Close port socket

(略)

■載入拒連IP設定檔(預設檔名 TPRS.ip)
ReadDisAllowIP [file]

(略)

■載入服務指令檔(預設檔名 TPRS.svc ,程式啟動預設檔為 TPC.svc)
Load [file]

(略)

延伸指令說明:

與橋接服務無關的指令功能稱為延伸命令, 皆以 '$' 字符作首, 這些命令也能寫入設定檔中配合需求

■指定Log訊息存檔時使用之路徑或檔名字首
$SetLogSavePath forder_path_for_write

例如設定 D:\FileDS\TPClog\ 代表檔案會存於該路徑下, 檔名為開檔當時之日期與時間 YYYYMMDD-hhmmss.log
也可設定 D:\FileDS\TPClog\TPC_ 代表檔案會存於 D:\FileDS\TPClog\ 路徑下, 檔名為開檔當時之日期與時間 TPC_YYYYMMDD-hhmmss.log
未設定時之預設為 .\TCPlog\ 於TPC的程式工作路徑下
指令範例:
$SetLogSavePath D:\FileDS\TPClog\
$SetLogSavePath D:\FileDS\TPClog\TPC_

■Log訊息檔案長度限制,超過此限制更換新檔續存
$SetLogSaveSizeLimit file_size_limit

例如設定 1048576 代表當檔案大小超過 1MB 時會開新檔儲存, 避免檔案過大不便使用
未設定時之預設即為 1048576
指令範例:
$SetLogSavePath 1048576

■啟用/關閉 Log訊息存檔
$SetLogSaveEnable [Yes/True/1|No/False/0]

可用 Yes , True , 1 來指定啟用, 而用 No , False , 0 來設定關閉
Log存檔功能預設為關閉, 透過指令設定才會啟動
指令範例:
$SetLogSaveEnable Yes

■將當前所有連線運作狀態存成csv檔供檢視
$SaveCurrStatus

將所有介面檢視看到的當前連線狀態資訊存成EXCEL可以開啟使用的.csv檔供分析
檔案會存於Log訊息存檔指定路徑中, 檔名為開檔當時之日期與時間, 例如 YYYYMMDD-hhmmsscur.csv
指令範例:
$SaveCurrStatus

EXCEL內容如


■用'?'搜尋當前狀態表列中某個IP
?ip_address

當連線數量大,要針對某IP作觀察時可用此指令讓介面滾動到該IP狀態行
(此命令沒有寫入設定檔的必要)


雲端應用:

TPC應用於雲端服務的改善實例 不用改任何程式,透過TPC輕鬆架構最精簡優良的服務系統