cxwpf200 发表于 2019-1-7 07:30:37

intotify+heartbeat+rsync实现samba的双机集群方案

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 :zxw1samba共享的目录 /zxw


实验步骤:
A机:


一:安装inofity、rsync、heartbeat、samba
http://s3.运维网.com/wyfs02/M02/59/E8/wKioL1TvFd-iJ8gWAABdr0ZEVuI280.jpg


二:修改hostname
vim /etc/hosts    添加如下所示的两行
http://s3.运维网.com/wyfs02/M00/59/E8/wKioL1TvFe_i2tvKAACIgvqgSqA869.jpg


三:创建登录公钥 (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! 前面的# 去掉
http://s3.运维网.com/wyfs02/M00/59/EC/wKiom1TvFPPy6MBeAAB153M9ag4902.jpg
1.b:修改haresources 文件;在末行加入:zxwIPaddr::192.168.1.8/24/eth0:0 smb
zxw :本机的hostsname;
IPaddr::192.168.1.8/24/eth0:0 :虚拟网卡;
smb :需要监控的服务(本实验为samba此列的服务必须要在/etc/init.d/ 目录下找得到相应的启动文件才行)
http://s3.运维网.com/wyfs02/M01/59/E8/wKioL1TvFhHwOHbJAAB1z_fAASc044.jpg
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
http://s3.运维网.com/wyfs02/M02/59/E8/wKioL1TvFh-QfNCMAAB048-oKOA728.jpg
在末行加入以下内容:

comment = share all
path = /zxw
browseable = yes
public = yes
writeable = yes
http://s3.运维网.com/wyfs02/M02/59/EC/wKiom1TvFSGArMYsAABv3-1iCO8590.jpg






七:启动各项服务及脚本
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机一致)
http://s3.运维网.com/wyfs02/M00/59/E8/wKioL1TvFjfxe-54AAByZSgWjvI158.jpg


二:修改hostname (与A机一致)
vim /etc/hosts    添加如下所示的两行
http://s3.运维网.com/wyfs02/M00/59/EC/wKiom1TvFTSxI595AACIgvqgSqA211.jpg


三:创建登录公钥 (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! 前面的# 去掉
http://s3.运维网.com/wyfs02/M01/59/EC/wKiom1TvFUOgn8bgAAB153M9ag4493.jpg
2.b:修改haresources 文件;(此处要改为zxw1    B机的hostsname)
在末行加入:zxw1IPaddr::192.168.1.8/24/eth0:0 smb
Zxw1 :本机的hostsname;
IPaddr::192.168.1.8/24/eth0:0 :虚拟网卡;
smb :需要监控的服务(本实验为samba此列的服务必须要在/etc/init.d/ 目录下找得到相应的启动文件才行)
http://s3.运维网.com/wyfs02/M02/59/E8/wKioL1TvFlqhfAgYAABHxFnqyp4903.jpg
2.c:修改ha.cf删除ha.cf里的所有行,再加入以下的行 (ucast eth0 192.168.1.67A机的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
http://s3.运维网.com/wyfs02/M02/59/EC/wKiom1TvFVmTxfdvAAB048-oKOA653.jpg
在末行加入以下内容:

comment = share all
path = /zxw
browseable = yes
public = yes
writeable = yes
http://s3.运维网.com/wyfs02/M00/59/EC/wKiom1TvFWfw6X_aAAB757_7rsY734.jpg


七:启动各项服务及脚本
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 &




至此,搭建完成。
  




gswwjm 发表于 2019-1-16 15:26:45

这个不错,值得借鉴,支持了
页: [1]
查看完整版本: intotify+heartbeat+rsync实现samba的双机集群方案