Home | Mirror | Search |
所謂大型網站主要的特點是訪問量大,既海量訪問,對頻寬要求大,而在中國的網絡環境比較複雜,單單靠一家也難保訪問的快速、穩定,我們可能選擇多家網絡運營商,才能得到保障。
我們不得不把伺服器分散部署到各地
一個IP,多台伺服器流水綫方式解決方案。
這種方案必須使用帶有雙網卡的伺服器,建議選擇千兆網卡,web伺服器與database連接建議採用交叉綫互聯,不要通過Hub,Switch連接。
當web和database在同一台伺服器是建議採用 UNIX SOCK 來連結資料庫,以代替TCP/IP Socket。
以上圖中的第三套方案為例,當用戶訪問網站時,通過電信交換機連接到cache伺服器,有兩種情況。第一種是靜態html檔案或圖片,將判斷是否被緩存,如果緩存直接反饋給用戶否則連結web伺服器。第二種動態腳本,將處理立即送給web伺服器。如果動態腳本有請求資料庫操作,將連接database伺服器。
這種方式適合中小型企業,非互聯網運營商,僅僅是用一個IP實現。
兩個IP,多台伺服器解決方案。
建議你吧圖片,縮圖單獨使用一台伺服器實現。
多個IP,多台伺服器解決方案。
這種方案要注意伺服器全部暴露在WAN上,一定要謹慎設置iptables規則。
下面是負載均衡的例子
過程 18.1. 過程訪問演示
訪問用戶 www.example.com 網站
用戶輸入網址: www.example.com回車
dns
域名伺服器將www.example.com解析到load balancing負載請均衡調度伺服器。
load balancing
負載均衡器根據調度算法分配到某個squid節點上
squid
靜態規則:判段是否是緩存,如果已經緩存從cache中直接取出內容,否則請求web伺服器
動態規則:直接請求web伺服器
請求web伺服器是將再次由load balancing分配web節點
web
web server 處理動態腳本,連接資料庫查詢。連接資料庫是仍然需要由load balancing分配database節點
database
database cluster
Example 1 : host to host at double speed +----------+ +----------+ | |eth0 eth0| | | Host A +--------------------------+ Host B | | +--------------------------+ | | |eth1 eth1| | +----------+ +----------+ On each host : # modprobe bonding miimon=100 # ifconfig bond0 addr # ifenslave bond0 eth0 eth1 Example 2 : host to switch at double speed +----------+ +----------+ | |eth0 port1| | | Host A +--------------------------+ switch | | +--------------------------+ | | |eth1 port2| | +----------+ +----------+ On host A : On the switch : # modprobe bonding miimon=100 # set up a trunk on port1 # ifconfig bond0 addr and port2 # ifenslave bond0 eth0 eth1 Example 3: High Availability in a Multiple Switch Topology | | |port3 port3| +-----+----+ +-----+----+ | |port2 ISL port2| | | switch A +--------------------------+ switch B | | | | | +-----+----+ +-----++---+ |port1 port1| | +-------+ | +-------------+ host1 +---------------+ eth0 +-------+ eth1 Example 4: Maximum Throughput in a Multiple Switch Topology Multiple switches may be utilized to optimize for throughput when they are configured in parallel as part of an isolated network between two or more systems, for example: +-----------+ | Host A | +-+---+---+-+ | | | +--------+ | +---------+ | | | +------+---+ +-----+----+ +-----+----+ | Switch A | | Switch B | | Switch C | +------+---+ +-----+----+ +-----+----+ | | | +--------+ | +---------+ | | | +-+---+---+-+ | Host B | +-----------+ Example 5: Using multiple host and multiple switches to build a "no single point of failure" solution. | | |port3 port3| +-----+----+ +-----+----+ | |port7 ISL port7| | | switch A +--------------------------+ switch B | | +--------------------------+ | | |port8 port8| | +----++----+ +-----++---+ port2||port1 port1||port2 || +-------+ || |+-------------+ host1 +---------------+| | eth0 +-------+ eth1 | | | | +-------+ | +--------------+ host2 +----------------+ eth0 +-------+ eth1