去年看見淘寶章博士的PPT裏面講過淘寶的CDN架構,以爲簡單使用。
我也一直以爲haproxy比較簡潔的,另外畫了一個圖,能夠給應用作好負載均衡。不過我這個圖裏兩個LVS只是一主一倍,也能夠做爲相互備份,這樣更能提升利用率。
這個基本是照着淘寶的這個架構搞的。可是其實裏面有些細節地方能夠仔細說一下。這個實現過程是
最最外面作LVS的機器上綁定一堆公網的IP。假如是10.10.114.2 .....10.10.114.254 (這個只是做爲解說)。
作LVS負載均衡的機器上另一個網卡綁定一個內部的IP,假如分別爲192.168.1.2和192.168.1.3.
後端
virtual_server 10.10.114.2 80 {服務器
delay_loop 3架構
lb_algo wlc負載均衡
lb_kind DRfrontend
nat_mask 255.255.255.0tcp
persistence_timeout 50oop
protocol TCPspa
real_server 192.168.1.4 80 {.net
weight 100unix
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 10
}
}
real_server 192.168.1.5 80 {
weight 100
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 10
}
}
virtual_server 10.10.114.3 80 {
delay_loop 3
lb_algo wlc
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.4 80 {
weight 100
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 10
}
}
real_server 192.168.1.5 80 {
weight 100
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 10
}
}
那麼配置 haproxy的幾個機器上每一個機器有一個192.168.1.X的IP外,還須要在每一個機器的迴環地址上綁定全部VIP(10.10.114.x)的。這樣能夠直接使用DR模式來對haproxy作第一級的負載均衡,並且對於安裝haproxy的服務器上,由於在迴環地址上綁定了這麼多的ip(設置好arp抑制後其實只有這些機器本身知道本身有這些VIP),因此在配置haproxy時也很是方便了。
當外部請求進來時,LVS把請求轉發給Haproxy。因爲haproxy上監聽的是綁在lo上的VIP,因此能夠根據對方的目標IP來選擇後端的機器。
frontend server1
mode tcp
bind 10.10.114.2:80
default_backend real_server1
backend real_server1
mode tcp
balance roundrobin
server A 192.168.x.2:80 weight 1
server B 192.168.x.3:80 weight 1
frontend server2
mode http
bind 10.10.114.3:80
default_backend real_server2
backend real_server2
mode http
balance roundrobin
server A 192.168.x.4:80 weight 1
server B 192.168.x.5:80 weight 1
frontend server3
mode http
bind 10.10.114.4:80
default_backend real_server3
backend real_server3
mode http
balance roundrobin
server A 192.168.x.6:80 weight 1
server B 192.168.x.7:80 weight 1
這樣的話全部的haproxy均可以同時工做,lvs對他們也能夠作好健康檢測。對於後端應用,咱們也能夠充分利用haproxy來作好健康檢測。