轉自 http://blog.faq-book.com/?p=6180
前言
設定項目
1. 修改LOG存放位置
2. 設定NFS
3. 設定MAIL
4. 防火牆設定
5. 排程設定
進階設定
1. 修改LOG存放位置
由於VMware ESXi 重開機後會自動還原一些設定,造成備份後所產生的LOG被刪除掉。所以為了避免此問題發生。可以手動修改LOG儲存位置的設定,才不會每次一重開機後資料就不見了。(建議存到/vmfs/volumes/datastore1內或是自行設定的NFT內)
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 修改設定值
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 通過使用。
|
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資料夾
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。然後在重啟防火牆。
|
~ # 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
|
~ # 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檔了。在日後的管理會較為方便。
|
~ # 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
|
~ # 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
|
~ # 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
|
沒有留言:
張貼留言