标签:samba 集群 samba实时同步 inotify 实时同步 heartbeat高可用
Inotify+heartbeat+rsync实现samba双机集群方案
-By 祝小伟
目的:
为实现samba服务器出现宕机或网络故障时,能自动切换至另一台samba备用服务器。在用户端访问\\192.168.1.8 即可访问192.168.1.67 或者192.168.1.68 上实时同步的samba服务。
各服务所起作用:
1:inotify +rsync :实现A机与B机上的文件实时一致性
2:heartbeat:实现samba的集群,当A机宕机后,B机能及时的提供服务;当A机恢复正常后,B机退出作为备用机。
实验准备:
A机:192.168.1.67 (主)hostname :zxw samba共享的目录 /zxw
B机:192.168.1.68 (备)hostname :zxw1 samba共享的目录 /zxw
实验步骤:
A机:
一:安装inofity、rsync、heartbeat、samba
二:修改hostname
vim /etc/hosts 添加如下所示的两行
三:创建登录公钥 (rsync同步时不用每次都输入密码)
ssh-keygen 然后一直回车
scp -r /root/.ssh/id_rsa.pub root@192.168.1.68:/root/.ssh/authorized_keys (用scp复制本地的key至B机上)
四:创建inotify实现监控的脚本
1:vim /root/rsync.sh
写入以下脚本:
#!/bin/bash
src=/zxw/ #本机要同步的目录
des=/zxw/ #对方要同步的目录
ip=192.168.1.68 #对方服务器的IP
/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib $src | while read files
do
rsync -avz --delete --progress ${src} root@${ip}:${des} >/var/log/rsyncclient.log &&
echo "`date +%Y%m%d-%T`: ${src} was rsynced" >>/var/log/rsyncclient.log
echo "-----------------------------------------------------" >>/var/log/rsyncclient.log
done
2:更改rsync.sh 的权限
chmod 700 /root/rsync.sh
五:配置heartbeat (重点)
1:/usr/share/doc/heartbeat-3.0.4目录下复制ha.cf,authkeys,haresources 3个文件到 /etc/ha.d/目录下。
1.a:修改 authkeys 文件;把 #auth 3 和 #3 md5 Hello! 前面的# 去掉
1.b:修改haresources 文件;在末行加入:zxw IPaddr::192.168.1.8/24/eth0:0 smb
zxw :本机的hostsname;
IPaddr::192.168.1.8/24/eth0:0 :虚拟网卡;
smb :需要监控的服务(本实验为samba 此列的服务必须要在/etc/init.d/ 目录下找得到相应的启动文件才行)
1.c:修改ha.cf 删除ha.cf里的所有行,再加入以下的行
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth0 192.168.1.68
auto_failback on
node zxw
node zxw1
ping 192.168.1.1
respawn hacluster /usr/lib64/heartbeat/ipfail
六:配置samba服务
vim /etc/samba/smb.conf
修改security = share
在末行加入以下内容:
[alex]
comment = share all
path = /zxw
browseable = yes
public = yes
writeable = yes
七:启动各项服务及脚本
service smb start 启动samba
/etc/init.d/heartbeat start启动heartbeat
rsync --daemon 以daemon 模式启动rsync
/root/rsync.sh & 启动inotify 的监控脚本 并放到后台运行。
八:把以上启动的服务放到开机启动脚本
vim /etc/rc.d/rc.local 加入以下内容:
service smb start
/etc/init.d/heartbeat start
rsync --daemon 以daemon
/root/rsync.sh &
B机:
一:安装inofity、rsync、heartbeat、samba (与A机一致)
二:修改hostname (与A机一致)
vim /etc/hosts 添加如下所示的两行
三:创建登录公钥 (rsync同步时不用每次都输入密码)(192.168.1.67为A机的IP)
ssh-keygen 然后一直回车
scp -r /root/.ssh/id_rsa.pub root@192.168.1.67:/root/.ssh/authorized_keys (用scp复制本地的key至B机上)
四:创建inotify实现监控的脚本(ip=192.168.1.67)
1:vim /root/rsync.sh
写入以下脚本:
#!/bin/bash
src=/zxw/ #本机要同步的目录
des=/zxw/ #对方要同步的目录
ip=192.168.1.67 #对方服务器的IP
/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib $src | while read files
do
rsync -avz --delete --progress ${src} root@${ip}:${des} >/var/log/rsyncclient.log &&
echo "`date +%Y%m%d-%T`: ${src} was rsynced" >>/var/log/rsyncclient.log
echo "-----------------------------------------------------" >>/var/log/rsyncclient.log
done
2:更改rsync.sh 的权限
chmod 700 /root/rsync.sh
五:配置heartbeat (重点)
1:/usr/share/doc/heartbeat-3.0.4目录下复制ha.cf,authkeys,haresources 3个文件到 /etc/ha.d/目录下。
2.a:修改 authkeys 文件;把 #auth 3 和 #3 md5 Hello! 前面的# 去掉
2.b:修改haresources 文件;(此处要改为zxw1 B机的hostsname)
在末行加入:zxw1 IPaddr::192.168.1.8/24/eth0:0 smb
Zxw1 :本机的hostsname;
IPaddr::192.168.1.8/24/eth0:0 :虚拟网卡;
smb :需要监控的服务(本实验为samba 此列的服务必须要在/etc/init.d/ 目录下找得到相应的启动文件才行)
2.c:修改ha.cf 删除ha.cf里的所有行,再加入以下的行 (ucast eth0 192.168.1.67 A机的IP)
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth0 192.168.1.67
auto_failback on
node zxw
node zxw1
ping 192.168.1.1
respawn hacluster /usr/lib64/heartbeat/ipfail
六:配置samba服务
vim /etc/samba/smb.conf
修改security = share
在末行加入以下内容:
[alex2]
comment = share all
path = /zxw
browseable = yes
public = yes
writeable = yes
七:启动各项服务及脚本
service smb start 启动samba
/etc/init.d/heartbeat start启动heartbeat
rsync --daemon 以daemon 模式启动rsync
/root/rsync.sh & 启动inotify 的监控脚本 并放到后台运行。
八:把以上启动的服务放到开机启动脚本
vim /etc/rc.d/rc.local 加入以下内容:
service smb start
/etc/init.d/heartbeat start
rsync --daemon 以daemon
/root/rsync.sh &
至此,搭建完成。
本文出自 “夜读才子盼女鬼” 博客,转载请与作者联系!
intotify+heartbeat+rsync实现samba的双机集群方案
标签:samba 集群 samba实时同步 inotify 实时同步 heartbeat高可用
原文地址:http://more3.blog.51cto.com/9929586/1615540