標籤:value gen mfsmount mysql命令 keep 兩台 檔案目錄 _id 方案
案例概述
公司的社交網站採用PHP語言開發,為了管理PHP程式員開發的代碼,上級領導要求搭建SVN伺服器進資料列版本設定。社交網站的第一個版本部署在LNMP平台之上,前端為 Nginx伺服器,通過 fastcgi協議訪問後端的PHP伺服器。為了保證資料安全,
要求搭建 MYSQL資料庫主從叢集。
社交網站項目包含使用者的相簿功能,允許使用者上傳照片,上傳照片需要使用共用
儲存來存放。針對共用儲存可用的開源方案有很多,如MFS、 FastDFS等。公
使用MFSDistributed File System來實現,並將MFS掛載在PHP伺服器的相關目錄司決定
案例實施
根據公司的需求,實施過程大致分為以下步驟
部署SVN伺服器,為PHP程式員建立repo目錄的訪問賬戶,通知程式員可
以匯入代碼
部署 MYSQL主從伺服器,根據PHP程式員的要求建立資料庫與表
部署 Nginx伺服器
使用keepalived對Nginx伺服器做熱備
部署PHP伺服器
部署MFS,將MFS檔案系統掛載在前端PHP伺服器的相關目錄下
通知上線部署人員發行就緒上線。
保證資料庫服務、PHP服務、 Nginx服務依次啟動,並通知測試人員開始測試,
網站維護人員檢查 Nginx、PHP與資料庫伺服器是否正常工作。
本篇將部署 MYSQL主從服務 與 MFS檔案系統MYSQL 主從服務 部署
主伺服器 (IP 192.168.100.105)
從伺服器 (IP 192.168.100.106)
mysql 5.7 安裝
yum install ncurses ncurses-devel bison cmake -y ##安裝依賴包useradd -s /sbin/nologin mysqltar zxvf mysql-5.7.17.tar.gz -C tar zxvf boost_1_59_0.tar.gz -C /usr/local/cd /usr/local/mv boost_1_59_0 boostcd mysql-5.7.17/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ## 指定安裝目錄 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DSYSCONFDIR=/etc ##指定初始化參數檔案目錄-DSYSTEMD_PID_DIR=/usr/local/mysql -DDEFAULT_CHARSET=utf8 ##指定預設字元集-DDEFAULT_COLLATION=utf8_general_ci #預設使用的字元集校對規則-DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=/usr/local/boost ##指定Boost庫的位置,5.7版本必須添加-DWITH_SYSTEMD=1!!注意:如果在CMAKE的過程中有報錯,當報錯解決後,需要把源碼目錄中的CMakeCache.txt檔案刪除,然後再重新CMAKE,否則錯誤依舊make && make install ##安裝過程時間較長chown -R mysql.mysql /usr/local/mysql/ ##使用權限設定vi /etc/my.cnf[client]port = 3306default-character-set=utf8socket = /usr/local/mysql/mysql.sock[mysql]port = 3306default-character-set=utf8socket = /usr/local/mysql/mysql.sock[mysqld]user = mysql ##使用者basedir = /usr/local/mysql ##基礎目錄datadir = /usr/local/mysql/data ##資料目錄port = 3306 ##連接埠character_set_server=utf8 ##服務語言設定pid-file = /usr/local/mysql/mysqld.pid ##pid檔案位置socket = /usr/local/mysql/mysql.sock ##socket檔案位置server-id = 1 ##服務IDsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTESchown mysql:mysql /etc/my.cnfecho ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH‘ >> /etc/profileecho ‘export PATH‘ >> /etc/profilesource /etc/profile## 方便使用mysql命令,設定環境變數/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data## 初始化資料庫cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/systemctl daemon-reloadsystemctl start mysqldnetstat -anpt | grep 3306## 3306連接埠開啟 服務開啟成功systemctl enable mysqldmysqladmin -u root -p password "abc123" 給root賬戶設定密碼為abc123
mysql主從複製
在主 和 從mysql伺服器上vim /etc/my.cnf[mysqld]binlog-ignore-db=mysql,information_schemacharacter_set_server=utf8log_bin=mysql_binserver_id=1 ## 主從伺服器的 server_id 不相同log_slave_updates=truesync_binlog=1auto_increment_increment=2auto_increment_offset=1systemctl restart mysqld在 主MYSQL上 為 從伺服器授予許可權mysql -u root -pgrant replication slave on *.* to ‘replication‘@‘192.168.100.%‘ identified by ‘123456‘;show master status; +-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| master-bin.000002 | 335 | | |+-------------------+----------+--------------+------------------+在從伺服器上mysql -u root -pchange master to master_host=‘192.168.100.105‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000002‘,master_log_pos=335;start slave;show slave status \G; Slave_IO_Running: Yes Slave_SQL_Running: Yes## 出現這兩條YES 則說明 MYSQL主從複製完成
MFS 檔案系統部署
MFS Master (IP 192.168.100.107)
MFS MetaLogger (IP 192.168.100.108)
MFS Chunk1 (IP 192.168.100.109)
MFS Chunk2 (IP 192.168.100.110)
MFS Master
yum install zlib-devel gcc gcc-c++ male -yuseradd -s /sbin/nologin mfstar xzvf mfs-1.6.27-5.tar.gzcd mfs-1.6.27-5./configure --prefix=/usr/local/mfs ##安裝目錄--with-default-user=mfs ##預設使用者--with-default-group=mfs ##預設使用者基本組--disable-mfschunkserver ##不啟動節點伺服器--disable-mfsmount ##不啟動mount伺服器make && make installcd /usr/local/mfs/etc/mfs/cp mfsmaster.cfg.dist mfsmaster.cfgcp mfsexports.cfg.dist mfsexports.cfg ##掛載許可權cp mfstopology.cfg.dist mfstopology.cfg ##架構感知cd/usr/local/mfs/var/mfscp metadata.mfs.empty metadata.mfs ##防斷電/usr/local/mfs/sbin/mfsmaster start ##啟動服務/usr/local/mfs/sbin/mfsmaster -s ##停止服務用這條命令
MFS MetaLogger
yum install zlib-devel gcc gcc-c++ male -yuseradd -s /sbin/nologin mfstar xzvf mfs-1.6.27-5.tar.gzcd mfs-1.6.27-5./configure --prefix=/usr/local/mfs ##安裝目錄--with-default-user=mfs ##預設使用者--with-default-group=mfs ##預設使用者基本組--disable-mfschunkserver ##不啟動節點伺服器--disable-mfsmount ##不啟動mount伺服器make && make installcd /usr/local/mfs/etc/mfs/cp mfsmetalogger.cfg.dist mfsmetalogger.cfgvi mfsmetalogger.cfgMASTER_HOST = 192.168.100.107/usr/local/mfs/sbin/mfsmetalogger start ##啟動服務/usr/local/mfs/sbin/mfsmetalogger -s ##停止服務用這條命令
MFS Chunk
兩台Chunk伺服器的配置相同yum install zlib-devel gcc gcc-c++ male -yuseradd -s /sbin/nologin mfstar xzvf mfs-1.6.27-5.tar.gzcd mfs-1.6.27-5./configure --prefix=/usr/local/mfs ##安裝目錄--with-default-user=mfs ##預設使用者--with-default-group=mfs ##預設使用者基本組--disable-mfsmaster ##不啟動主伺服器--disable-mfsmount ##不啟動mount伺服器make && make installcd /usr/local/mfs/etc/mfs/cp mfschunkserver.cfg.dist mfschunkserver.cfgcp mfshdd.cfg.dist mfshdd.cfgvim mfschunkserver.cfgMASTER_HOST = 192.168.100.107vim mfshdd.cfg添加一行/datamkdir /datachown -R mfs:mfs /data/usr/local/mfs/sbin/mfschunkserver start ##啟動服務/usr/local/mfs/sbin/mfschunkserver -s ##停止服務用這條命令
MFS 用戶端
由於要將MFS 檔案系統掛載到 前端PHP 伺服器上 ,作為使用者上傳圖片的儲存, MFS用戶端需要在PHP伺服器上安裝
安裝FUSE,MFS用戶端依賴於FUSEtar xzvf fuse-2.9.2.tar.gzcd fuse-2.9.2./configuremake && make installvi /etc/profileexport PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH## 設定環境變數source /etc/profile安裝mfs用戶端yum install zlib-devel gcc gcc-c++ male -yuseradd -s /sbin/nologin mfstar xzvf mfs-1.6.27-5.tar.gzcd mfs-1.6.27-5./configure --prefix=/usr/local/mfs ##安裝目錄--with-default-user=mfs ##預設使用者--with-default-group=mfs ##預設使用者基本組--disable-mfschunkserver ##不啟動節點伺服器--enable-mfsmount ##啟動mount伺服器make && make installmodprobe fuse ##載入fuse模組到核心/usr/local/mfs/bin/mfsmount /var/www/html/webphp/uploads/photos -H 192.168.100.107 ##將MFS 檔案系統 掛載到 PHP伺服器上df -hT## 查看掛載情況
部署社交網站- MYSQL主從 與 MFS 檔案系統