设为首页 收藏本站
查看: 1725|回复: 1

[经验分享] intotify+heartbeat+rsync实现samba的双机集群方案

[复制链接]

尚未签到

发表于 2019-1-7 07:30:37 | 显示全部楼层 |阅读模式
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 &




至此,搭建完成。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660119-1-1.html 上篇帖子: Heartbeat v3 + ttserver + DRBD 构建高可用ttserver 下篇帖子: Heartbeat和syslog配置
累计签到:6 天
连续签到:1 天
发表于 2019-1-16 15:26:45 | 显示全部楼层
这个不错,值得借鉴,支持了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表