FastDfs分布式文件系統(tǒng)安裝

工作原理

20180729180636880

FastDFS服務端有2個角色 分別是tracker( 調度器 ) 和 storage(存儲節(jié)點)掸冤。

tracker負責調度和負載均衡,tracker負責管理所有的storage 和group稿湿,每個storage在啟動后會連接Tracker,告知自己所屬的group等信息包斑,并保持周期性的心跳,tracker根據(jù)storage的心跳信息罗丰,建立group==>[storage server list]的映射表再姑。并不需要存儲文件的索引信息萌抵,client 通過文件id 就可以獲取存儲信息元镀,所有tracker服務器是對等的,可以隨時增減而不影響已有服務沐兰。

文件id含義:

image
image-20210201142531889

Storage server(后簡稱storage)以組(卷蔽挠,group或volume)為單位組織瓜浸,一個group內包含多臺storage機器比原,數(shù)據(jù)互為備份插佛,存儲空間以group內容量最小的storage為準量窘,所以建議group內的多個storage盡量配置相同,以免造成存儲空間的浪費蚌铜。group 只能通過增加磁盤擴容,無法通過增加機器擴容囚痴。

image

負載均衡

選擇存儲group:

  1. Round robin审葬,所有的group間輪詢
  2. Specified group,指定某一個確定的group
  3. Load balance涣觉,剩余存儲空間多多group優(yōu)先

選擇storage server:

  1. Round robin痴荐,在group內的所有storage間輪詢
  2. First server ordered by ip,按ip排序
  3. First server ordered by priority官册,按優(yōu)先級排序(優(yōu)先級在storage上配置)

選擇storage path:

storage將會為文件分配一個數(shù)據(jù)存儲目錄生兆,支持如下規(guī)則:

  1. Round robin,多個存儲目錄間輪詢
  2. 剩余存儲空間最多的優(yōu)先

文件同步:

寫文件時攀隔,客戶端將文件寫至group內一個storage server即認為寫文件成功皂贩,storage server寫完文件后,會由后臺線程將文件同步至同group內其他的storage server昆汹。

每個storage寫文件后明刷,同時會寫一份binlog,binlog里不包含文件數(shù)據(jù)满粗,只包含文件名等元信息辈末,這份binlog用于后臺同步映皆,storage會記錄向group內其他storage同步的進度挤聘,以便重啟后能接上次的進度繼續(xù)同步;進度以時間戳的方式進行記錄捅彻,所以最好能保證集群內所有server的時鐘保持同步组去。

storage的同步進度會作為元數(shù)據(jù)的一部分匯報到tracker上,tracke在選擇讀storage的時候會以同步進度作為參考步淹。

存在的問題

  • 當storage的某塊磁盤故障時从隆,只能換存磁盤诚撵,然后手動恢復數(shù)據(jù);
  • 存儲空間受限于單機存儲inode數(shù)量

安裝

https://github.com/happyfish100/fastdfs/wiki#%E5%AE%89%E8%A3%85fastdfs

cd /usr/local/src

## 安裝依賴
sudo aptitude install git gcc g++ make automake autoconf libtool pcre2-utils libpcre2-dev zlib1g zlib1g-dev openssl libssh-dev wget vim
sudo aptitude install libpcre3 libpcre3-dev

## 安裝fastdfs的common包
sudo git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon
sudo ./make.sh && sudo ./make.sh install
cd ..

## fastdfs
sudo git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs
sudo ./make.sh && sudo ./make.sh install
#供nginx訪問使用的配置
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/
cd ..

## 安裝 nginx 及相關模塊
sudo git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
sudo cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
sudo wget http://nginx.org/download/nginx-1.15.4.tar.gz && sudo tar -zxvf nginx-1.15.4.tar.gz
cd nginx-1.15.4/

sudo ./configure --prefix=/usr/local/nginx
sudo make && sudo make install

sudo ./configure --prefix=/usr/local/nginx  --add-module=/usr/local/src/fastdfs-nginx-module/src/
sudo make && sudo make install
cd ..

## 防火墻
sudo aptitude install ufw
sudo ufw enable
sudo ufw allow 23000 22122 8888 22

配置

vim /etc/fdfs/tracker.conf
port=22122  # tracker服務器端口(默認22122,一般不修改)
base_path=/home/dfs  # 存儲日志和數(shù)據(jù)的根目錄

vim /etc/fdfs/storage.conf
#需要修改的內容如下
port=23000  # storage服務端口(默認23000,一般不修改)
base_path=/home/dfs  # 數(shù)據(jù)和日志文件存儲根目錄
store_path0=/home/dfs  # 第一個存儲目錄
tracker_server=192.168.52.1:22122  # tracker服務器IP和端口

vim /etc/fdfs/client.conf
#需要修改的內容如下
base_path=/home/dfs
tracker_server=192.168.52.1:22122    #tracker服務器IP和端口
#保存后測試,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz

vim /etc/fdfs/mod_fastdfs.conf
#需要修改的內容如下
tracker_server=192.168.52.1:22122  #tracker服務器IP和端口
url_have_group_name=true
store_path0=/home/dfs
#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加如下配置
server {
    listen       8888;    ## 該端口為storage.conf中的http.server_port相同
    server_name  localhost;
    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   html;
    }
}
#測試下載键闺,用外部瀏覽器訪問剛才已傳過的nginx安裝包,引用返回的ID
http://192.168.52.1:8888/group1/M00/00/00/wKgAQ1pysxmAaqhAAA76tz-dVgg.tar.gz
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末寿烟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辛燥,更是在濱河造成了極大的恐慌筛武,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挎塌,死亡現(xiàn)場離奇詭異徘六,居然都是意外死亡,警方通過查閱死者的電腦和手機勃蜘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門硕噩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來假残,“玉大人缭贡,你說我怎么就攤上這事』岳粒” “怎么了阳惹?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長眶俩。 經(jīng)常有香客問我莹汤,道長,這世上最難降的妖魔是什么颠印? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任纲岭,我火速辦了婚禮,結果婚禮上线罕,老公的妹妹穿的比我還像新娘止潮。我一直安慰自己,他們只是感情好钞楼,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布喇闸。 她就那樣靜靜地躺著,像睡著了一般询件。 火紅的嫁衣襯著肌膚如雪燃乍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天宛琅,我揣著相機與錄音刻蟹,去河邊找鬼。 笑死嘿辟,一個胖子當著我的面吹牛舆瘪,可吹牛的內容都是我干的痢艺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼介陶,長吁一口氣:“原來是場噩夢啊……” “哼堤舒!你這毒婦竟也來了?” 一聲冷哼從身側響起哺呜,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤舌缤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后某残,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體国撵,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年玻墅,在試婚紗的時候發(fā)現(xiàn)自己被綠了介牙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡澳厢,死狀恐怖环础,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情剩拢,我是刑警寧澤线得,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站徐伐,受9級特大地震影響贯钩,放射性物質發(fā)生泄漏。R本人自食惡果不足惜办素,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一角雷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧性穿,春花似錦勺三、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胯舷,卻和暖如春刻蚯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桑嘶。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工炊汹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逃顶。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓讨便,卻偏偏與公主長得像充甚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子霸褒,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容