大家好,
我有一個網站,其實也不會有什麼大負載,每日人數跟 session 小於一百,而且只是單純的 靜態內容,單純是要做零時備援而已。
雖然不會有啥大負載,但我想要它達到零時備援,或說,在幾分鐘內備援完成。
也就是說,其中一台主機掛了,另一台可以馬上撐起來。
只會有一個 domain,頂多分出 www.abc.com 以及 abc.com。
有三個對外 ipv4,使用的是各地異地的線路,連到各自異地的三台機器,
機器 a 當負載控制 server,也就是最主要的進入點。
機器 b 當真正放網頁的 server 1。
機器 c 當真正放網頁的 server 2。
實際上卻不是很清楚該如何設定,還是也不需要那麼多機器呢?
跟流量大小無關, 但小量預算通常負擔不起 Load Balancer 的費用. 因為有一些基本架構的成本, 不論你流量大小, 都要先負擔這整個架構的費用, 再來才是增加流量的成本.
嚴格講, 你所說的情境比較接近 HA Failover 備援, 而不是負載平衡; 只不過剛好可以用負載平衡的元件來組成 Failover 備援的功能.
因為你提到 XAMPP, 我就先假設你打算用 LAMP (XAMP) 技術堆疊.
低成本有一種做法 (限同一個機房內):
將 Web Server+php-fpm+網站程式(.php, .html, .css) 打包成一個 Container
其他靜態圖片影片, 儲存在雲端 S3 相容的 Storage 內
在本地建三台 MySQL DB 組成 Master-Slave 的 HA Cluster
接下來:
實際動作:
Web Failover: 任何一個 Container 掛掉, 由 DNS 或 CF 自動轉到活著的 Container
DB Failover: DB 死掉 HA Cluster 會自動切換, 程式不需要更換 DB Connection IP
File Failover: 雲端 S3 都有自動 Failover 機制, SLA 達 99.99% 以上
以上可完成:
透過單一機房達到不死程度, 但只能備援 Host 掛掉, 不能處理 Infra 掛掉
複雜一點的, 要做到跨機房 (=異地) 備援:
將 Web Server+php-fpm+網站程式(.php, .html, .css) 打包成一個 Container
其他靜態圖片影片, 儲存在雲端 S3 相容的 Storage 內
在各地機房內都建一台 MySQL DB, 然後跨機房組成 Multi-Master Replicatoin Cluster
接下來:
實際動作:
Web Failover: 任何一個 Container 掛掉, 由 DNS 或 CF 自動轉到活著的 Container
DB Failover: 任何一個機房的 DB 死掉, 該機房的 Wer Server 就吐 503, 這會讓 Global Load Balancer 自動剔除這個機房的服務節點; 資料則透過 Multi-Master Replication 同步複寫到不同機房去; 等到他恢復, GLB 偵測到沒有 503 了, 就會又把它放回服務清單內
File Failover: 雲端 S3 都有自動 Failover 機制, SLA 達 99.99% 以上
以上可完成:
跨機房異地不死程度, 任何一個 Host/Infra 掛掉都可以 Failover
以上兩種架構, 不管你放: 實體單機, 虛擬機, 地端機房, 雲端機房, 通通都適用
如果你的靜態檔案儲存不想用現成的 S3 雲端服務的話, 那跨機房的 File Replication 又是另外一個更複雜的故事了....(因為上面架構原本是靠 S3 幫你解決掉這件事情, 如果不用 S3 的話, 你只好自己想辦法解決這個問題)
還有, 我們也還沒談到:高流量, 高併發, Scale-out....以上僅僅處理備援而已....
以上僅是多種做法的其中一種架構, 還有很多種不同組合的可能性, 但設計者必須要考慮兩大因素: Query Latency (查找反應時間), Data Consistency (資料一致性)
筆記中!
對我而言
這個回答本身的價值
已經超過樓主的「小型網站/架構」了
現在不是有人在推web3.0,讓網站去中心化,不是更能做到分散式區塊鏈的優點,有多少礦工,就有多少可用處理器群,來分散工作跟流量?不過我還不知道是否可以達成有大量計算需求的資料庫網站型態,坐著看元宇宙新部門成立的成果吧
K8S 可以解決你得問題唷
3台VM 就可以了
1台 Master
2台 WorkNode
上面跑你的容器Pod
若你只是要部署靜態網頁(HTML,CSS,Javascript)直接使用雲端的Serverless,只要將靜態網頁內容放上去,後端的負載平衡或擴展都是雲端業者做掉了,爾且價錢上有使用到它的上限才開始收費,(各家AWS,GCP,Azure細節上可能不太一樣,不過大方向差不多),這邊推薦 AWS ,如下連結介紹及教學
設備可以提供線路負載平衡
伺服器負載平衡
例如 NFW-460
當中就有兩種
http://www.ublink.org/index.php/news/541-inbound-loadbalance-dns-server-nfw-460
要是嫌麻煩而且技術不足的狀況下
建議直接丟到雲端虛擬主機好了
找中華電信的業務談談應該就有詳細解釋
你要的功能不算是負載平衡,靜態網頁如果要達到零時備援,研究一下serverless方式或是直接用github架設.. 就基本上不會有停機的疑慮