前言
在了解 [VMware ESXi 備份ghettoVCB.sh基本設定] 後,接下來就來介紹一些比較進階的用法。有助於整體 ghettoVCB 的設定。本篇主要說明進階設定的部份,較為細部若有不懂的請在查看基本設定。
設定項目
1. 修改LOG存放位置
2. 設定NFS
3. 設定MAIL
4. 防火牆設定
5. 排程設定
進階設定
1. 修改LOG存放位置
由於VMware ESXi 重開機後會自動還原一些設定,造成備份後所產生的LOG被刪除掉。所以為了避免此問題發生。可以手動修改LOG儲存位置的設定,才不會每次一重開機後資料就不見了。(建議存到/vmfs/volumes/datastore1內或是自行設定的NFT內)
建立存放LOG的資料夾並修改設定 提供修改好的 ghettoVCB.sh 參考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
~ # mkdir /vmfs/volumes/datastore1/log ~ # vi ghettoVCB.sh # /LOG_OUTPUT 搜尋此字串後找到,以下訊息 # 修改tmp 改為指定存放log的路徑 # 修改前 USE_VM_CONF=0 USE_GLOBAL_CONF=0 BACKUP_ALL_VMS=0 EXCLUDE_SOME_VMS=0 EMAIL_LOG_HEADER=/tmp/ghettoVCB-email-$$.header EMAIL_LOG_OUTPUT=/tmp/ghettoVCB-email-$$.log EMAIL_LOG_CONTENT=/tmp/ghettoVCB-email-$$.content # 修改後 USE_VM_CONF=0 USE_GLOBAL_CONF=0 BACKUP_ALL_VMS=0 EXCLUDE_SOME_VMS=0 EMAIL_LOG_HEADER=/vmfs/volumes/datastore1/log/ghettoVCB-email-$$.header EMAIL_LOG_OUTPUT=/vmfs/volumes/datastore1/log/ghettoVCB-email-$$.log EMAIL_LOG_CONTENT=/vmfs/volumes/datastore1/log/ghettoVCB-email-$$.content |
2. 設定NFS
在設定NFS的方式有兩種,請選一種適合的就可以了
2.1 長久掛載nfs
[Configuration]→[Storage]→[Ass Storage]→[Network File System]
Server:請輸入NFS主機的IP或是名稱
Folder:請輸入NFS主機所分享資料夾的完整路徑
Datastore Name:請輸入在ESXI上NFS資料夾的名稱
然後就一直按Next就可以完成了
完成後就會看到多出一個NFS的資料夾
2.2 需要才掛載
當有備份需要使用到NFS時才會自動掛載上去,一旦備份完成後就會自動卸載,並不會持續的掛載。
依照以下提示設定就可完成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
~ # vi ghettoVCB.sh # 是否要卸載NFS(yes=1,no=0) UNMOUNT_NFS=0 # NFS Server 的地址(ip或主機名) NFS_SERVER=172.30.0.195 # NFS 存放檔案的路徑 NFS_MOUNT=/nfsshare # NFS 資料存放地方的名稱 NFS_LOCAL_NAME=nfs_storage_backup # 虛擬機上NFS備份的目錄 NFS_VM_BACKUP_DIR=mybackups |
3.設定MAIL
可用來方便管理備份,透過mail察看是否備份成功。
3.1 修改設定值
以下設定,請依照個人情況來修改設定。 提供修改好的 ghettoVCB.sh 參考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
~ # vi ghettoVCB.sh # 是否要透過電子郵件來發送備份LOG (yes=1,no=0) EMAIL_LOG=1 # 是否發送debug的LOG,這是做為測試使用 EMAIL_DEBUG=1 # 輸入Email 的SMTP server的ip或網址 EMAIL_SERVER=auroa.primp-industries.com # 設定mail 所使用的port,預設都為25 port EMAIL_SERVER_PORT=25 # 設定每封mail之間發送的延遲時間。 EMAIL_DELAY_INTERVAL=1 # 收件人的mail EMAIL_TO=auroa@primp-industries.com # 寄件人的mail EMAIL_FROM=root@ghettoVCB |
如果設定執行 ghettoVCB.sh 寄送mail,且出現以下錯誤訊息的話,請在防火牆的部份允許25 port 通過使用。
1 2 3 4 |
2012-01-01 19:28:46 -- info: ERROR: Please enable firewall rule for email traffic on port 25 2012-01-01 19:28:46 -- info: Please refer to ghettoVCB documentation for ESXi 5 firewall configuration 2012-01-01 19:30:01 -- info: ERROR: Failed to email log output to 10.254.201.5:25 to derek@iwan.com.tw 2012-01-01 19:30:01 -- info: Email log output will not be deleted and is stored in /tmp/ghettoVCB-email-275 |
3.2 防火牆設定允許25 port 通過使用
首先,先確認ESXi在防火牆部份是否有開啟25 port
確認方式有兩種,請選一種即可。
方式一:
1. [Configuration]→[Security Profile]
查看 Firewall 看是否有25 port
2. 如果在 Firewall 沒看到的話,可點選 [Properties]。查看更詳細的設定
方式二:
透過 ssh 連到server上設定
1. 把防火牆所有的設定都列出來,並查看是否有25 port
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
~ # esxcli network firewall ruleset list Name Enabled ------------------ ------- sshServer true sshClient false nfsClient false dhcp true dns true snmp true ntpClient false CIMHttpServer true CIMHttpsServer true CIMSLP true iSCSI false vpxHeartbeats true updateManager false faultTolerance true webAccess true vMotion true vSphereClient true activeDirectoryAll false NFC true HBR true ftpClient false httpClient false gdbserver false DVFilter false DHCPv6 false DVSSync false syslog false IKED false WOL true vSPC false remoteSerialPort false |
2. 加入25 port
在查看list後發現沒有25 port,所以需要手動加入 [ E-MAIL SMTP]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
~ # cd /etc/vmware/firewall/ ~ # vi smtp.xml #在最後加入以下內容 <!-- E-MAIL SMTP --> <ConfigRoot> <service id='1000'> <id>SMTP</id> <rule> <direction>outbound</direction> <protocol>tcp</protocol> <porttype>dst</porttype> <port>25</port> </rule> <enabled>true</enabled> <required>false</required> </service> </ConfigRoot> |
重啟後會看到多出SMTP 25port的設定
1 2 3 4 5 6 7 8 9 10 11 12 |
~ # esxcli network firewall refresh ~ # esxcli network firewall ruleset list Name Enabled ------------------ ------- 中間略過 DVSSync false syslog false IKED false WOL true vSPC false remoteSerialPort false SMTP true |
4. 此時回頭來看,就會在 Firewall 內看到多出[SMTP 25(TCP) All],這表示25 port 已加入到防火牆內了。
4. 防火牆開機設定
由於VMware ESXi 在重開機後會還原資料,因此在防火牆的部份則需要額外的設定。
了解 [防火牆port的設定] 後。接下來說明如何重開機自動加入防火牆規則。
4.1 首先編寫防火牆規則
編寫好的防火牆規則所儲存的地方(建議存到/vmfs/volumes/datastore1內或是自行設定的NAT內)以避免重開機後被刪除。
以下範例檔案存放在本機datastore1
腳本放在script資料夾,修改文件放在file資料夾
提供修改好的 service.xml 參考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
~ # mkdir -p /vmfs/volumes/datastore1/tools/script ~ # mkdir /vmfs/volumes/datastore1/tools/file ~ # cd /vmfs/volumes/datastore1/tools/file ~ # cp /etc/vmware/firewall/service.xml /vmfs/volumes/datastore1/tools/file ~ # vi service.xml # 在最下面加入E-MAIL SMTP內容 <rule id='0002'> <direction>inbound</direction> <protocol>tcp</protocol> <porttype>dst</porttype> <port> <begin>1024</begin> <end>65535</end> </port> </rule> <enabled>false</enabled> <required>false</required> </service> <!-- E-MAIL SMTP --> <service id='1000'> <id>SMTP</id> <rule> <direction>outbound</direction> <protocol>tcp</protocol> <porttype>dst</porttype> <port>25</port> </rule> <enabled>true</enabled> <required>false</required> </service> </ConfigRoot> |
4.2 編寫開機執行腳本
此腳本在做的是把已經修改好的service.xml,覆蓋掉原本的service.xml。然後在重啟防火牆。
1 2 3 4 5 6 7 8 |
~ # cd /vmfs/volumes/datastore1/tools/script #若沒有tools資料夾請自行建立 ~ # vi firewall.sh #!/bin/sh # Firewall rules cp /vmfs/volumes/datastore1/tools/file/service.xml /etc/vmware/firewall/ esxcli network firewall refresh ~ # chmod 755 firewall.sh |
4.3 寫入到rc.local讓開機自動跑firewall.sh
1 2 3 |
~ # vi /etc/rc.local #在最下面加入此行 /vmfs/volumes/datastore1/tools/script/firewall.sh |
再來就可以重開機測試看是否設定正確。若是正確的話就可在防火牆List中看到SMTP
5. 排程設定
在設定排程的部份,也和設定MAIL的防火牆規則一樣,都會因重開而還原。
因此在這邊提供幾種方式,請依個人需求設定。(設定排程的方式還有很多種,以下只是提供參考)
設定script方式
此種設定方式比較適合主機數較多且方便統一管理。
使用此方式,會建議最好新增一個NFS且將設定資料都統一放到NFS內,之後在有需要的主機上在掛載NSF就可使用。
5.1 設定排程(root)
在這邊會要編修root,主要是為了日後如果有更多的排程要設定的話只需要改此root檔後,執行crontabs.sh此腳本就會自動覆蓋舊的root檔了。在日後的管理會較為方便。
1 2 3 4 5 6 7 8 9 10 11 |
~ # cp /var/spool/cron/crontabs/root /vmfs/volumes/datastore1/tools/file/ ~ # cd /vmfs/volumes/datastore1/tools/file/ ~ # chmod 744 root ~ # vi root # 在最下面加入要設定的排程,這邊設定讓5分鐘跑一次看是否正常。時間部份可自行修改 # 此部份測試請拿小一點的VM測試才不會還沒備完又跑下一個。 #min hour day mon dow command 1 1 * * * /sbin/tmpwatch.py 1 * * * * /sbin/auto-backup.sh 0 * * * * /usr/lib/vmware/vmksummary/log-heartbeat.py */5 * * * * /vmfs/volumes/datastore1/backup/lamw-ghettoVCB-518cef7/ghettoVCB.sh -a |
5.2 設定crontabs.sh
/bin/kill $(cat /var/run/crond.pid) 為刪掉crond的pid
/usr/lib/vmware/busybox/bin/busybox crond 為重啟crond
1 2 3 4 5 6 7 |
~ # cd /vmfs/volumes/datastore1/tools/script ~ # vi crontabs.sh #!/bin/sh /bin/kill $(cat /var/run/crond.pid) cp /vmfs/volumes/tools/file/root /var/spool/cron/crontabs /usr/lib/vmware/busybox/bin/busybox crond ~ # chmod 755 crontabs.sh |
5.3 設定rc.local開機自動跑crontabs.sh
1 2 3 |
~ # vi /etc/rc.local #在最下面加入此行 /vmfs/volumes/datastore1/tools/script/crontabs.sh |
5.4 直接寫在rc.local
此方式比較適合單一主機或是管理人員較少的使用。
此方式的缺點就是,日後要設的排程多的時後,或是加入到rc.local內的東西變多時,在管理上會容易亂掉,管理較不方便。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
~ # vi /etc/rc.local #!/bin/sh export PATH=/sbin:/bin log() { echo "${1}" /bin/busybox logger init "${1}" } # execute all service retgistered in {rcdir} ($1 or /etc/rc.local.d) if [ -d "${1:-/etc/rc.local.d}" ] ; then for filename in $(find "${1:-/etc/rc.local.d}" | /bin/busybox sort) ; do if [ -f "${filename}" ] && [ -x "${filename}" ]; then log "running ${filename}" "${filename}" fi done fi #crontabs /bin/kill $(cat /var/run/crond.pid) /bin/echo " */5 * * * * /vmfs/volumes/datastore1/backup/lamw-ghettoVCB-518cef7/ghettoVCB.sh -a”>> /var/spool/cron/crontabs/root /bin/busybox crond |
評論
此文章尚無評論。