天天看點

搭建一個高可用負載均衡的叢集架構(第三部分)

1.使用腳本編寫一個簡單的檔案分發系統即可,首先expect編寫一個腳本檔案rsync.expect,這個腳本是實作檔案同步的腳本,内容如下:

expect編寫一個腳本檔案rsync.expect,這個腳本是實作檔案同步的腳本,内容如下:

提示:如果你的rsync指令沒有加-R選項的話,就需要確定目标機器也有這個檔案清單中所定義的目錄路徑,不然就會報錯。而且存放檔案路徑清單的檔案内容不能有空格,不然會把這個空格看作為檔案路徑的一部分。

2.然後再編輯一個文本檔案,這個檔案用來放需要同步的檔案清單,例如我這裡需要同步以下幾個檔案:

3.還需要編輯一個ip.txt檔案,用于存放需要同步的目标機器的IP位址,例如我需要将檔案都同步這幾個IP的機器上:

4.再編寫一個shell腳本syncFile.sh,這個腳本比較簡單,隻是周遊出ip.list檔案内容然後交給syncFile.expect腳本去執行而已,示例:

5.最後我們隻需要執行syncFile.sh腳本即可實作批量同步多個檔案:

[root@localhost ~/syncList]$ sh ./syncFile.sh "/root/webServerIP.txt" "/tmp/fileList.txt" "lri35krJF;ba"

我運作完之後,沒有報錯,檔案也正常同步了,這樣我們就實作了一個簡單的檔案分發系統,這個需求就實作了。

11 制定合理的mysql資料備份方案,并寫備份腳本,要求把備份資料傳輸到備份伺服器

這個mysql的主從已經可以滿足備份的需求了,如果需要通過腳本另外備份,可以參考以下代碼:

假定,我們知道mysql root賬号的密碼,要備份的庫為discuz,本地備份目錄為/bak/mysql, 遠端伺服器ip為192.168.123.30,遠端提供了一個rsync服務,備份的位址是 192.168.200.149::backup . 寫完腳本後,需要加入到cron中,每天淩晨3點執行。

接着加入cron:

0 3 * /bin/bash /usr/local/sbin/mysqlbak.sh

然後就會每天淩晨3點進行備份了。

12 制定代碼、靜态檔案的備份方案,并寫備份腳本,要求備份

13 編寫資料恢複文檔,能保證當資料丢失在2小時内恢複所有資料

以上這兩個需求可以一起實作,結合起來就是兩個小時同步一次檔案,因為提到需要恢複所有資料,是以需要備份整個站點目錄,備份的腳本修改一下分發系統那個expect腳本就可以了,代碼如下:

建立密碼檔案:

建立檔案存放需要同步的目錄路徑清單:

在備份服務上建立目錄:

mkdir -p /data/wwwroot/

8.測試一下能否進行同步:

9.執行完腳本後到備份伺服器上确認一下:

10.看看日志檔案裡有沒有記錄每次同步的時間:

11.添加到任務計劃裡:

7 所有伺服器要求隻能普通使用者登入,而且隻能密鑰登入,root隻能普通使用者sudo

1.首先使用visudo指令編輯配置檔案,設定使用者的alias:

User_Alias ADMINS = user1, user2, user3

然後批量執行useradd指令在全部伺服器上添加user1、user2、user3使用者

2.找到Allow root to run any commands anywhere,在這行下面添加以下内容:

3.修改sshd.config配置檔案,修改以下内容:

重新開機服務:

systemctl restart sshd.service

4.建立/root/.ssh 檔案夾,然後生成密鑰

檢視生成的密鑰檔案:

把公鑰的檔案名修改成authorized_keys,并複制一份到user1使用者的家目錄下:

mv id_rsa.pub authorized_keys mkdir /home/user1/.ssh/ touch /home/user1/.ssh/authorized_keys cat /root/.ssh/authorized_keys > /home/user1/.ssh/authorized_keys

設定權限:

chmod 700 /home/user1/.ssh/ chmod 600 /home/user1/.ssh/authorized_keys chown -R user1:user1 /home/user1/.ssh/

5.将id_rsa檔案下載下傳到本地。

搭建一個高可用負載均衡的叢集架構(第三部分)

6.連接配接時選擇這個檔案,或者導入Xshell中:

搭建一個高可用負載均衡的叢集架構(第三部分)

登入成功:

搭建一個高可用負載均衡的叢集架構(第三部分)

7.然後把/etc/sudoers、/etc/ssh/sshd_config配置檔案同步到所有機器上,密鑰也一并同步,同步完之後記得重新開機sshd服務。

完成以上操作後,無論使用密鑰或者是密碼都無法遠端登入root使用者,隻能登入普通使用者了。

因為我們禁止了root遠端登入,并且普通使用者也隻能密鑰登入,是以之前寫的那個備份檔案的腳本需要進行更改,改成通過ssh指定密鑰進行連接配接遠端機器。

1.給剛剛生成的密鑰檔案授予700權限:

chmod 700 .ssh/id_rsa

2.使用ssh測試一下看看能否進行同步檔案(user1的密鑰檔案我已經同步到所有機器上了):

從結果可以看到,能夠成功同步檔案。

好,接下來修改之前的腳本,首先修改的是密碼檔案,将之前的登入密碼改為生成密鑰時設定的密碼:

shell腳本不用修改,修改expect腳本如下:

到備份伺服器上給/data/wwwroot/目錄授予777權限:

chmod 777 /data/wwwroot/

然後測試一下該腳本:

可以看到沒有報錯,同步成功,到備份伺服器上看看:

沒毛病 ,到目前為止這個項目就告一段落了,其中有一些細節還需慢慢處理,這些都是日後維護的問題了。

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/2052429,如需轉載請自行聯系原作者