最近有個案子在圖片的流量上面比較吃重,所以需要做圖片的分流,這篇主要是寫如何透 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
指定圖片網址

$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]

Leave a comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *