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

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

-By 祝小伟



目的:

为实现samba服务器出现宕机或网络故障时,能自动切换至另一台samba备用服务器。在用户端访问\\192.168.1.8 即可访问192.168.1.67 或者192.168.1.68 上实时同步的samba服务。


各服务所起作用:


1inotify +rsync :实现A机与B机上的文件实时一致性

2heartbeat:实现samba的集群,当A机宕机后,B机能及时的提供服务;当A机恢复正常后,B机退出作为备用机。


实验准备:

 A机:192.168.1.67   (主)hostname :zxw   samba共享的目录 /zxw

 B机:192.168.1.68   (备)hostname :zxw1  samba共享的目录 /zxw


实验步骤:

A机:


一:安装inofityrsyncheartbeatsamba

wKioL1TvFd-iJ8gWAABdr0ZEVuI280.jpg


二:修改hostname

vim /etc/hosts    添加如下所示的两行

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! 前面的# 去掉

wKiom1TvFPPy6MBeAAB153M9ag4902.jpg

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/ 目录下找得到相应的启动文件才行

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

wKioL1TvFh-QfNCMAAB048-oKOA728.jpg

 在末行加入以下内容:

[alex]

comment = share all

path = /zxw

browseable = yes

public = yes

writeable = yes

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机:

一:安装inofityrsyncheartbeatsamba (与A机一致)

wKioL1TvFjfxe-54AAByZSgWjvI158.jpg


二:修改hostname (与A机一致)

vim /etc/hosts    添加如下所示的两行

wKiom1TvFTSxI595AACIgvqgSqA211.jpg


三:创建登录公钥 (rsync同步时不用每次都输入密码)(192.168.1.67A机的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! 前面的# 去掉

wKiom1TvFUOgn8bgAAB153M9ag4493.jpg

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/ 目录下找得到相应的启动文件才行

wKioL1TvFlqhfAgYAABHxFnqyp4903.jpg

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

wKiom1TvFVmTxfdvAAB048-oKOA653.jpg

 在末行加入以下内容:

[alex2]

comment = share all

path = /zxw

browseable = yes

public = yes

writeable = yes

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 &



至此,搭建完成。


本文出自 “夜读才子盼女鬼” 博客,转载请与作者联系!

你可能感兴趣的:(集群,samba,inotify,samba实时同步)