## 1 架構背景
? ? ? ? CleverCode了解了一下架構。現在的情況是:一共約有50臺服務器,安裝的服務nginx,mysql,memcached,squid,solor等。
現在日均純PHP訪問的PV是2500萬,最高峰值可以抗住5000萬訪問。
? ? ? ?以下只列出來一些常用域名,部分訪問域名未列出來,其中的機器也只列出來部分。
## 2 架構原理圖

## 3 架構原理說明
### 3.1 LVS部分
1)首先讓所有的域名都通過DNS指向211.181.168.168。211.181.168.168是一個外網IP。對于LVS結構來說他是一個虛擬IP。
? ?這個ip可以配置到eth0:1(一個網卡多個ip),禁止登陸用。eth0(211.181.168.151)的ip用于登陸。
? ?
2)當請求到了VIP之后,LVS會進行負載均衡,通過IP隧道將請求發送到某一個實際的服務器上,即(192.168.1.100,192.168.1.101,192.168.1.102)其中一個上。
? ?LVS的負載均衡時IP層的負載均衡,速度特別快,給服務器的壓力也特別小。
說明:
? ?211.181.168.168通常只用與負載均衡用,盡量不要安裝其他的服務,比如mysql。可以用配置較低的服務器當VIP。?
### 3.2 Nginx反向代理負載均衡
3)192.168.1.100,192.168.1.101,192.168.1.102是三臺Nginx反向代理服務器。三臺機器的nginx配置完全一樣。
4)當請求到達比如192.168.1.102后,nginx會根據請求的域名做負載均衡。這時候可以使一組域名,用同一個upstream。upstream中的服務器可以根據配置設置權重。
5)如果訪問的是css,js,圖片,可以負載均衡到squid服務器。
說明:
? ?三臺RealServer,也盡量不要安裝其他的服務,比如mysql。也可以用配置較低的服務器當RealServer。?
### 3.3 squid透明代理
6)squid服務器收到js,css,images請求后,首先看自己的緩存是否命中,如有命中再去后面的nginx源站中去取數據,然后在緩存一份。
7)squid取數據的時候可以根據域名做透明的反向代理。
說明:
? ?squid服務器盡量配置2臺,每臺服務器都緩存,同一個圖片會被緩存2次。防止一臺掛掉后,靜態資源訪問不了。squid軟件需要占用80端口,所以不能安裝nginx服務。
