大併發架構
負載均衡
簡單理解:負載均衡是反向代理的衍生品,當真實服務器有多臺時,可以合理分配負載。
也可認爲:反向代理是負載均衡的一種,當真實的服務器只有一臺時就是反向代理。
負載均衡解決方案:
- 硬件方案:F5、A10、Radware、NetScaler,性能強進,價格偏高
- 軟件方案:LVS、Nginx、HAProxy,性能不錯,開源免費
搭建步驟:
- 簡單約定(硬件配置表),都需要安裝nginx
名稱 | IP | 作用 |
---|---|---|
LB01 | 10.36.137.86 | 負載均衡服務器(主) |
LB02 | 負載均衡服務器(備) | |
W01 | 10.30.137.9 | 提供服務的真實服務器 |
W02 | 10.30.137.4 | 提供服務的真實服務器 |
2. 負載均衡主服務器配置(LB01)
upstream lb01 { #默認輪詢
server 10.36.137.9;
server 10.36.137.4 down;
server 10.36.137.6;
server 10.36.137.15 backup; 作爲備用負載,其它服務器都忙碌時
}
upstream lb02 { #加權輪詢
server 10.36.137.9 weight=10;
server 10.36.137.4 weight=1;
server 10.36.137.6 weight=5;
server 10.36.137.15 weight=4;
}
upstream lb03 { #IP哈希
ip_hash; #對ip採用hash算法,保證每次訪問的都是同一服務器
#優點:能夠保證用戶的身份信息,解決session共享問題
#缺點:若來自某個IP的請求特別多,服務器壓力會比較大,容易造成負載不均的情況
server 10.36.137.9;
server 10.36.137.4;
server 10.36.137.6;
server 10.36.137.15;
}
upstream lb_image {
server 10.36.137.19;
server 10.36.137.14;
server 10.36.137.16;
server 10.36.137.115;
}
#也可使用第三方的負載均衡算法,如:fire、url_hash
server {
listen 80;
server_name www.fuzai.com fuzai.com;
location / {
proxy_pass http://lb01; #指定連接池
proxy_set_header Host $host; #傳遞主機信息
proxy_set_header X-Real-IP $remote_addr; #傳遞用戶IP
}
location ~*\.(jpg|jpeg|png|gif)$ {
proxy_pass http://lb_image; #指定連接池
proxy_set_header Host $host; #傳遞主機信息
proxy_set_header X-Real-IP $remote_addr; #傳遞用戶IP
}
}
在所有的真實服務上搭建一模一樣的項目(測試時可以顯示不一樣的內容以作區分)
雙活技術(keepalived)
作用:主要用來保證負載均衡服務器的高可用,進行節點健康檢查。
配置:
配置兩臺一模一樣的負載均衡服務器,一主一備
兩臺負載均衡服務器同時安裝keepalived:
yum install -y keepalived
備份keepalived配置文件:
/etc/keepalived/keepalived.
主服務器配置
! Configuration File for keepalived #全局定義 global_defs { notification_email { 12345678@qq.com #出現異常時,發送郵件給哪些郵箱 } notification_email_from admin@mxspider.com #使用哪個郵箱發送郵件 smtp_server smtp.qq.com #郵箱服務器 smtp_connect_timeout 30 #連接超時 router_id LB01 #路由IP,要保證主和備不同 } vrrp_instance VI_1 { state MASTER #主負載均衡服務器 interface eth0 #網卡名稱 virtual_router_id 51 #虛擬路由ID,在本配置文件中唯一即可 priority 150 #權重,主應該大於備 advert_int 1 #心跳同步間隔時間 authentication { #認證 auth_type PASS #認證方式:密碼 auth_pass 1111 #密碼內容:1111 } virtual_ipaddress { #虛擬的IP地址 10.36.137.222 } }
備用負載均衡服務器配置
! Configuration File for keepalived #全局定義 global_defs { notification_email { 12345678@qq.com #出現異常時,發送郵件給哪些郵箱 } notification_email_from admin@mxspider.com #使用哪個郵箱發送郵件 smtp_server smtp.qq.com #郵箱服務器 smtp_connect_timeout 30 #連接超時 router_id LB02 #路由IP,要保證主和備不同 } vrrp_instance VI_1 { state BACKUP #備負載均衡服務器 interface eth0 #網卡名稱 virtual_router_id 51 #虛擬路由ID,在本配置文件中唯一即可 priority 100 #權重,主應該大於備 advert_int 1 #心跳同步間隔時間 authentication { #認證 auth_type PASS #認證方式:密碼 auth_pass 1111 #密碼內容:1111 } virtual_ipaddress { #虛擬的IP地址 10.36.137.222 } }
兩臺(主和備)負載均衡服務器都要啓動keepalived服務:
service keepalived start
測試步驟
- 需要域名解析到虛擬的IP地址
- 直接訪問虛擬的IP地址或者域名即可
- 可以將主負載均衡服務器的keepalived關閉,看看備用的是否立即提供服務
- 再次將主負載均衡服務器的keepalived啓動,看看備用的是否立即停止服務
- 可以使用命令查看:ip addr