高可用是實作了,但由于我們隻設定了一個group,如果現在有5台伺服器那将會出現5台隻有一個group,每台伺服器内的檔案内容都相同(互備份)如下圖,會造成資源浪費。
是以下面就5台伺服器進行優化改造,進一步添加keepalived+nginx多tracker 架構,做到真正的高可用和高性能。
其中keepalived+nginx用作30和31 tracker伺服器作熱備。用虛拟VIP 27作統一入口。
我們将按上面的架構分伺服器:
虛拟VIP用192.168.80.27 keepalived+nginx 熱備、負載均衡 : 28、29 tracker: 30和31伺服器 storage: group1:32、33 group2:34、35
雖然每個伺服器上都有Nginx,但這裡還是先強調一下這裡Nginx的用途:
首先所有的Nginx都是用于上傳後的檔案通路用的,跟上傳無關。
28、29上面的就是常見的端口負載,這裡是對兩個tracker通路檔案端口8000(自己設定)負載。
tracker 上安裝的 nginx 主要為了提供 http 通路的反向代理、負載均衡以及緩存服務。
每一台storage伺服器主機上部署Nginx及FastDFS擴充子產品,由Nginx子產品對storage存儲的檔案提供http下載下傳服務, 僅當目前storage節點找不到檔案時會向源storage主機發起redirect或proxy動作。
注:圖中的tracker可能為多個tracker組成的叢集;且目前FastDFS的Nginx擴充子產品支援單機多個group的情況
安裝配置步驟前文一緻,配置tracker.conf 和client.conf,主要注意防火牆 開啟端口22122
記得手動建立兩個檔案夾:
/data/fastdfs/tracker
/data/fastdfs/client
兩個節點内容一樣。
記得手動建立兩個檔案夾:/data/fastdfs/storage
安裝步驟與上文一緻,配置:
/etc/fdfs/storage.conf
注意:
32和33 group_name=group1
34和35 group_name=group2
其他配置一樣預設,注意防火牆 開啟端口23000。
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
chkconfig fdfs_trakcerd on
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
chkconfig fdfs_storaged on
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg
以上就是FastDFS的安裝與配置。下面就與Nginx子產品結合作介紹。
fastdfs-nginx-module的作用已經在上篇介紹過,在此主要是配置。
上傳fastdfs-nginx-module.tar.gz到/opt檔案夾下
解壓插件壓縮包
unzip fastdfs-nginx-module.zip
cd nginx
對nginx重新config
再進行 make && make install
将mod_fastdfs.conf 拷貝到fdfs下進行配置
cd fastdfs-nginx-module/src
cp mod_fastdfs.conf /etc/fdfs/ #将mod_fastdfs.conf 拷貝到fdfs下進行配置
vim /etc/fdfs/mod_fastdfs.conf
vim /opt/nginx/conf/nginx.conf
8888的請求且有group的都轉給 ngx_fastdfs_module 插件處理,防火牆什麼的就不說了。
shell> /opt/nginx/sbin/nginx
浏覽器通路測試時上傳的檔案,應該都能正常通路。
http://192.168.80.32:8888/group1/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
http://192.168.80.34:8888/group2/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
說明:每個節點執行相同的操作
tracker節點:30,31
在 tracker 上安裝的 nginx 主要為了提供 http 通路的反向代理、負載均衡以及緩存服務。
同樣都上傳nginx和ngx_cache_purge包
解壓檔案到/opt檔案夾下
tar -zxvf ngx_cache_purge-2.3.tar.gz
vi /opt/nginx/conf/nginx.conf
添加以下内容
上面配置的是當請求8000端口時根據group1還是group2進行選擇到對應的伺服器響應。
要注意的已标色。還要提前建立緩存目錄:/data/fastdfs/cache/nginx/proxy_cache
前面直接通過通路Storage節點中的Nginx通路檔案:
現在可以通過Tracker中的Nginx來進行通路:
(1)、通過 Tracker1 中的 Nginx 來通路
http://192.168.80.30:8000/group1/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
http://192.168.80.30:8000/group2/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
(2)、通過 Tracker2 中的 Nginx 來通路
http://192.168.80.31:8000/group1/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
http://192.168.80.31:8000/group2/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
每一個Tracker中的Nginx都單獨對後端的Storage組做了負載均衡,但整套FastDFS叢集,如果想對外提供統一的檔案通路位址,還需要對兩個Tracker中的Nginx進行HA叢集
其實上面可以通過30或31的8000端口進行檔案通路了,下面統一端口,對30和31再進行一次負載均衡。
使用Keepalived + Nginx組成的高可用負載均衡叢集,做兩個Tracker節點中Nginx的負載均衡。
這裡使用Nginx,将Keepalived 和 Nginx 安裝到 28和29上,VIP為27。
http://192.168.80.27:8000/dfs/group1/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
http://192.168.80.27:8000/dfs/group2/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
以上就是整個配置過程,看起來是非常的繁雜,是以一定要先弄清整個的部署架構,然後每個插件是用來做什麼的都要清楚,後面如果要擴充的話就有個清晰的思路。
環境搭建隻是開始,真正的使用、優化才是重點,是以耐心的看吧。