最近有個案子在圖片的流量上面比較吃重,所以需要做圖片的分流,這篇主要是寫如何透 crontab / sshpass / rsync 來實現自動同步圖片。
主機A IP 127.0.0.9 主要上傳圖檔主機
主機B IP 127.0.0.10 圖片分流主機 1
主機C IP 127.0.0.11 圖片分流主機 2
先登入主機B
主要利用排程 crontab 與 sshpass
step 1: 因為要用sshpass功能所以要先安裝sshpass
指令:apt install sshpass
step 2:新增備份指令檔
移到你要存放指令檔的目錄
指令:cd /home/jeff/
新增 指令檔
指令:vi syncfile.sh
輸入以下同步指令
#!/bin/bash
sshpass -p ‘A_password’ rsync -azvv –progress –delete A_account@127.0.0.9:/var/www/html/file/ /var/www/html/file/
編輯指令檔權限
指令:chmod 777 syncfile.sh
說明:看你排程執行的角色去給序檔案權限 我比較懶 直接全開
step 3:編輯排程
指令:crontab -e
*/5 * * * * sh /home/jeff/syncfile.sh
說明:每五分鐘執行檔案同步的指令檔
主機C再重覆一次主機B的步驟
分流機制實作:
圖片主機 陣列
取得隨機的 陣列keys
指定圖片網址
[php]
$picture_url=array(‘http:/127.0.0.9′,’http://127.0.0.10′,’http://127.0.0.11’);
$random_keys=array_rand($this->picture_url,1);
echo $picture_url[$random_keys]
[/php]