(1) 動靜分離部署wordpress,動靜都要能實現負載均衡,要注意會話的問題;
(2) 在haproxy和後端主機之間添加varnish進行緩存;
(3) 設計拓撲;
(4) haproxy的設定要求:
(a) stats page,要求僅能通過本地訪問使用管理接口;
(b) 動靜分離;
(c) 分別考慮不同的服務器組的調度算法;
(5) haproxy高可用;
實驗規劃:
利用keepalived主備高可用兩個haproxy服務器
對varnish緩存服務器做高可用
動態web集羣
靜態web集羣
haproxy1: 172.16.1.4
haproxy2: 172.16.1.2
varnish1: 172.16.1.5
varnish2: 172.16.1.6
dynamic server1:172.16.1.3
dynamic server2:172.16.1.7
static server1: 172.16.1.10
static server2: 172.16.1.8
拓撲圖
00.PNG
一、兩臺haproxy配置文件配置
haproxy1.PNG
haproxy2.PNG
啓動服務
~]# systemctl start haproxy
~]# systemctl status haproxy #查看狀態
~]# ss -tnlp #查看80和9999端口是否啓用
~]# systemctl enable haproxy #設置開機啓動
二、keepalived的配置
haproxy1的keepalived配置
11111.PNG
haproxy2的keepalived配置
22222.PNG
三、兩臺varnish主機的配置
更改varnish的監聽端口爲80
[root@varnish1 ~]# vim /etc/varnish/varnish.params
VARNISH_LISTEN_PORT=80
varnish配置文件內容
[root@varnish1 ~]# vim /etc/varnish/default.vcl
aaa.PNG
bbb.PNG
ccc.PNG
編譯使配置生效
[root@varnish1 ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
200
Varnish Cache CLI 1.0
Linux,3.10.0-327.el7.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
varnish-4.0.5 revision 07eff4c29
Type 'help' for command list.
Type 'quit' to close CLI session.
vcl.list
200
available 0 boot
active 0 myconf3
varnish> vcl.load conf1 default.vcl
200
VCL compiled.
vcl.use conf1
200
VCL 'conf1' now active
vcl.list
200
available 0 boot
available 0 myconf3
active 0 conf1
四、後端動靜服務器wordpress主機配置
後端amp配置不做贅述
在動態主機的/var/www/html/下創建health.php用於動態健康狀態檢查
<h1>DynamicServer is Health.</h1>
在靜態主機的/var/www/html/下創建health.html用於靜態健康狀態檢查
<h1>StaticServer is Health.</h1>
五、客戶端查看
客戶端登陸haproxy的stats page
登陸.PNG
關閉一臺varnish服務器後,可以在stats page看到一臺正常運行,一臺關閉了
登陸2.PNG
登陸wordpress可以看到之前正常上傳圖片的博客
捕獲.PNG
六、總結
1、架構優點:
(1)HAProxy爲Varnish緩存服務器提供了高可用的負載均衡,其使用的算法,也爲Varnish提升了緩存命中率;
(2)HAProxy提供Web圖形化管理界面,使得管理更加便捷高效;
(3)Varnish的高效緩存機制極大的提升了Web應用的性能,降低了Web服務器的壓力;
(4)Varnish給後端Web服務器提供了高可用負載均衡,並使用了動態分離技術,保障了後端主機的冗餘,顯著提升了其性能;
(5)使用Keepalive對HAproxy做高可用解決了單點故障問題。
2、不足之處:
(1)該架構沒有解決存儲的問題。
解決方案:可以使用NFS+Rsync+inodify實現數據實時同步,再用keepalive做高可用。
(2)MysqlServer,沒有分離
解決方案:獨立數據庫服務器,對其設置數據庫主從複製,讀寫分離;