1. 程式人生 > >社交網站部署——MFS分布式文件系統

社交網站部署——MFS分布式文件系統

依賴包 分布式文件系統 webp 文件夾 第一個 systemctl 關閉防火墻 ++ 防火

案例概述

某公司的社交網站采用PHP語言開發,為了管理PHP程序員開發的代碼,上級領導要求搭建SVN服務器進行版本控制。社交網站的第一個版本部署在LNMP平臺之上,前端為Nginx服務器,通過fastcgi協議訪問後端的PHP服務器。為了保證數據安全,要求搭建MySQL數據庫主從集群。

社交網站項目包含用戶的相冊功能,允許用戶上傳照片,上傳照片需要使用共享存儲來存放。針對共享存儲可用的開源方案有很多,如MFS、FastDFS 等。公司決定使用MFS分布式文件系統來實現,並將MFS掛載在PHP服務器的相關目錄下。
技術分享圖片

案例實施

根據公司的需求,實施過程大致分為以下步驟。

  • 部署SVN服務器,為PHP程序員創建repo目錄的訪問賬戶,通知程序員可以導入代碼。
  • 部署MySQL主從服務器,根據PHP程序員的要求創建數據庫與表。
  • 部署Nginx服務器。部署PHP服務器。
  • 部署MFS,將MFS文件系統掛載在前端PHP服務器的相關目錄下。
  • 通知上線部署人員可以發布上線。

MFS部署並掛載

搭建 Master Server
1、安裝MFS
yum install -y zlib-devel gcc gcc-c++      //安裝依賴包環境包
useradd mfs -s /sbin/nologin -M            //創建管理用戶

tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
cd /opt/mfs-1.6.27/

./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

make && make install 
2、復制文件
cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg          # 主配置文件
cp mfsexports.cfg.dist mfsexports.cfg           # 掛載權限
cp mfstopology.cfg.dist mfstopology.cfg           # top架構感知

cd /usr/local/mfs/var/mfs/ 
cp metadata.mfs.empty metadata.mfs        #防斷裂
3、啟動 Master Server
/usr/local/mfs/sbin/mfsmaster start       //開啟
/usr/local/mfs/sbin/mfsmaster -s        //停止
netstat -antp | grep mfs

systemctl stop firewalld.service 
setenforce 0         //關閉防火墻和安全功能

技術分享圖片

搭建 Metalogger Server

1、安裝MFS
yum install -y zlib-devel gcc gcc-c++       //安裝依賴包環境包
useradd mfs -s /sbin/nologin -M          //創建管理用戶

tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
cd /opt/mfs-1.6.27/

./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

make && make install
2、復制文件
cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg 
cp mfsexports.cfg.dist mfsexports.cfg 
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

vim mfsmetalogger.cfg
......
MASTER_HOST = 192.168.43.118         //IP指向master
3、啟動 Metalogger Server
/usr/local/mfs/sbin/mfsmetalogger start   //開啟
/usr/local/mfs/sbin/mfsmetalogger -s    //停止
netstat -antp | grep mfs

systemctl stop firewalld.service 
setenforce 0         //關閉防火墻和安全功能

技術分享圖片

搭建 Chunk Server

1、安裝MFS
yum install -y zlib-devel gcc gcc-c++        //安裝依賴包環境包
useradd mfs -s /sbin/nologin -M          //創建管理用戶

tar xzvf mfs-1.6.27-5.tar.gz -C /opt/

cd /opt/mfs-1.6.27/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount

make && make install 
2、復制文件
cd /usr/local/mfs/etc/mfs/ 
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

vim mfschunkserver.cfg
......
MASTER_HOST = 192.168.43.118         //IP指向master

vim mfshdd.cfg
......
/data            //添加一行/data,在這裏/data是一個給MFS的分區,生產環境最好使用獨立的分區或磁盤掛載到此目錄

mkdir /data        //創建文件夾
chown -R mfs:mfs /data        //屬主屬組都改為mfs

技術分享圖片

3、啟動Chunk Server
/usr/local/mfs/sbin/mfschunkserver start   //開啟
/usr/local/mfs/sbin/mfschunkserver start -s    //停止
netstat -antp | grep mfs

systemctl stop firewalld.service 
setenforce 0         //關閉防火墻和安全功能

技術分享圖片

客戶端配置

此處PHP服務器是客戶端角色,在PHP服務器上搭建

1、安裝fuse
yum install -y zlib-devel gcc gcc-c++     //安裝依賴包環境包

tar xzvf fuse-2.9.2.tar.gz -C /opt        //mfs客戶端依賴於fuse
cd /opt/fuse-2.9.2

./configure

make && make install
2、設置環境變量
vim /etc/profile
#在末尾處插入
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

source /etc/profile         //加載立即生效
3、安裝MFS客戶端
useradd mfs -s /sbin/nologin -M        //創建管理用戶
tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
cd /opt/mfs-1.6.27/

./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --enable-mfsmount       //註意此處開啟客戶端

make && make install
4、掛載MFS文件系統

將MFS文件系統掛載在前端PHP服務器的/var/www/html/webphp/uploads/photos目錄下

mkdir -p /var/www/html/webphp/uploads/photos         //創建掛載點
modprobe fuse                     //加載fuse模塊到內核
/usr/local/mfs/bin/mfsmount /var/www/html/webphp/uploads/photos -H 192.168.43.118        //掛載MFS

技術分享圖片

社交網站部署——MFS分布式文件系統