码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-27 01:36:03      阅读:1042      评论:0      收藏:0      [点我收藏+]

标签:samba 集群   samba实时同步   inotify 实时同步   heartbeat高可用   

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

技术分享


二:修改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机:

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

技术分享


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

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

技术分享


三:创建登录公钥 (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! 前面的# 去掉

技术分享

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!