nfs+keepalive+inotify+unison实现共享服务池的高可用

nfs服务器  rip1:192.168.1.134

rip2:192.168.1.135

vip:192.168.1.137

客户端   ip1: 192.168.1.136

ip2: 192.168.1.234

用nfs来提供共享

用keepalive来实现对nfs的高可用

用inotify来检测文件的变化

用unison来同步主从nfs共享文件夹的数据

1.nfs服务器的搭建

yum install -y nfs-utils rpcbind

/etc/init.d/rpcbind start

/etc/init.d/nfs start

vi /etc/exports

/nfs_data/home/paixian192.168.1.0/24(rw,sync,no_wdelay)

/etc/init.d/nfs reload

chmod 755 /nfs_data

chown -R nfsnobody:nfsnobody /nfs_data

2.客户端测试

yum install -y nfs-utils rpcbind

/etc/init.d/rpcbind  start

/etc/init.d/nfs start

[[email protected] paixian]# showmount -e192.168.1.134

Export list for 192.168.1.134:

/nfs_data/home/paixian 192.168.1.0/24

nfs服务器测试成功!下一步就是要做keepalive来实现高可用

3.keepalive实现nfs高可用

http://linuxnote.blog.51cto.com/9876511/1652612

keepalive安装可参考这个博客

http://linuxnote.blog.51cto.com/9876511/1652981

配置介绍请参考这个博客

主的keepalive配置

[[email protected] local]# cat/etc/keepalived/keepalived.conf|egrep -v "\#|^$"

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

[email protected]

}

notification_email_from [email protected]

smtp_server 192.168.1.135

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth1

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.137/24

}

}

}

从的keepalive配置

[[email protected] ~]#  cat /etc/keepalived/keepalived.conf|egrep -v"\#|^$"

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

[email protected]

}

notification_email_from [email protected]

smtp_server 192.168.1.135

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.137/24

}

}

}

客户机测试

[[email protected] paixian]#showmount -e192.168.1.137

Export list for 192.168.1.137:

/nfs_data/home/paixian 192.168.1.0/24

看来需求是可以解决了,当在客户机删除或者创建一个文件的时候就会同步到别的客户机和主nfs服务器上,那么问题来了,另外一台从的nfs服务器该如何同步呢?那么我们需要用到unison+inotify来实现主从那个共享文件的互相同步了

4.用inotify+unison实现共享文件互相同步

unison参考文档  http://yangsc.blog.51cto.com/7051889/1580846

http://wenku.baidu.com/link?url=PeWElTzzYAYnzBLLMbJRL5GV34QAVriXf6W_sSpBfP1OYNfFqESsaCeO6rpYGdIe6na344u9bwyqZUx6gM6PrUQX6DPoeBHtFImnrrRsnIS&qq-pf-to=pcqq.group

1.135上的操作

wgethttp://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.0.tar.gz ///下载2进制安装程序

tar xf ocaml-3.12.0.tar.gz

cd ocaml-3.12.0

./configure

make world opt

make install

wgethttp://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.3.tar.gz

mv unison-2.48.3.tar.gz ../

cd ..

tar xf unison-2.48.3.tar.gz

cd unison-2.48.3

make UISTYLE=text

yum install emacs -y(报错etags安装emacs)

mkdir /root/bin/

cp unison /root/bin/(报错没有/root/bin这个文件夹)

make install

双机互信:

ssh-keygen

ssh-copy-id -i .ssh/[email protected](2台互相做)

scpunison [email protected]:/usr/local/bin/unison

134上创一个/root/bin目录然后把unison复制到/root/bin下面

创建文件[[email protected] paixian]# cat /root/.unison/default.prf

#Unison preferences file

batch= true

owner= true

group= true

perms= -1

fastcheck= true

rsync= false

sshargs= -C

xferbycopying= true

confirmbigdel= false

log= true

logfile= /home/unison/unison.log

然后复制到134上

scp/root/.unison/default.prf 192.168.1.134:/root/.unison/default.prf

1.135和1.134安装inotify

更多的inotify与rsync的同步请看http://10554846.blog.51cto.com/10544846/1693630

wget   http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

mvinotify-tools-3.14.tar.gz /usr/local

cd /usr/local

tar xf inotify-tools-3.14.tar.gz

mv inotify-3.14 inotify

./configure

make&&make install

写脚本检测变同步

[[email protected]]# cat /usr/local/unison.sh

inotifywait-mrq --timefmt ‘%Y/%m/%d-%H:%M:%S‘ --format ‘%T %w %f %e‘ -emodify,attrib,move,create,delete /nfs_data/home/paixian|while read files

do

/root/bin/unison/nfs_data/home/paixian ssh://192.168.1.134//nfs_data/home/paixian &&echo "${files} was rsynced" >>/tmp/unison.log 2>&1

done

复制到134

scp/usr/local/unison.sh 192.168.1.134:/usr/local/unison.sh

然后修改里面的ip为192.168.1.135即可

开始同步可能得花很长一段时间

但后面就可以做到4台甚至N台(只要你多几台挂载就行)实时同步并且高可用了

时间: 2024-08-18 02:49:42

nfs+keepalive+inotify+unison实现共享服务池的高可用的相关文章

服务稳定、高可用

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 64.0px; font: 48.0px "PingFang SC Semibold"; color: #6c6c6c } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 59.5px; line-height: 18.0px; font: 26.7px "Songti SC"; color: #6c6c

唯品会、滴滴、沪江架构师,关于微服务粒度、高可用、持续交互的实践分享交流(下)

架构师小组交流会:每期选择一个时下最热门的技术话题进行实践经验分享. 本期小组交流会邀请到了沪江黄凯.唯品会郑明华.滴滴赵伟.七牛云肖勤,对微服务粒度.高可用.持续交互展开了交流. 本期接着上期唯品会.滴滴.沪江架构师,关于微服务粒度.高可用.持续交互的实践分享交流(上)进行了交流. 第一轮:话题交流 滴滴赵伟:在整个服务,从单体服务到微服务的演进过程当中,如何去影响业务的这种正常发展? 唯品会郑明华:从单体服务到微服务的改造,有两种方式,一种是小打小闹,每次稍微改一点,这个时间会非常长,有时候

cosync+pacemaker+DRBD共享存储实现mysql高可用集群

DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的,另外的节点是不可读的,连挂载都不可能,只有一个节点是主的,其它节点都是从的.当做为主主架构时,需要达到几个条件,1.在高可用集群中启用DRBD;  2. 启用分布式文件锁功能,即需要把磁盘格式化为集群文件系统(如GFS2,OCFS2等):3. 把DRBD做成资源. 数据的存储过程:当某个进程存储数据

Keepalived+Lvs_DR模式实现Web服务的HA高可用集群

Keepalived基于VRRP协议实现LVS服务的高可用集群,可以利用其来避免单点故障.一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性.Keepalived是VRRP的完美实现,因此在介绍keepalived之前,先介绍一下VRRP的原理.

linux企业常用服务---lvs+Keepalived高可用集群

部署前准备: iptables和selinux没配置,关掉 挂载系统镜像作为本地yum源,修改yum文件 源码包准备keepalived-1.2.13.tar.gz 环境介绍: 主服务器ip:192.168.100.157(keeplived+lvs) 从服务器ip:192.168.100.156(keeplived+lvs) 节点服务器ip:192.168.100.153-192.168.100.155(httpd) 集群vip:192.168.100.95 1.安装keepalived(在两

spring cloud构建互联网分布式微服务云平台-高可用的服务注册中心

文章介绍了服务注册与发现,其中服务注册中心Eureka Server,是一个实例,当成千上万个服务向它注册的时候,它的负载是非常高的,这在生产环境上是不太合适的,这篇文章主要介绍怎么将Eureka Server集群化.愿意了解源码的朋友直接求求交流分享技术 一七九一七四三三八零 一.准备工作 Eureka can be made even more resilient and available by running multiple instances and asking them to r

heartbeat v2配置高可用web集群和基于nfs搭建MySQL高可用集群

安装环境:Centos 6.4, httpd2.4,mysql5.5,heartbeat v2 提供两台机器node1和node2,在/etc/hosts文件中添加名称解析,并且主机名称要与节点名称要相同,即uname -n的名称要和hosts定义的名称必须一样. #   IP                         HOSTNAME             ALIAS 10.204.80.79     node1.mylinux.com     node1 10.204.80.80  

初识MariaDB之9——keepalive+GTID双主实现高可用

一.背景介绍 传统的主从复制架构下,尽管可以使用半同步的方式进行读写分离,但是主节点仍然存在单点隐患,在规模不大的情况下可以采用keepalive+双主的模式对主节点进行高可用保护,客户端通过VIP访问MySQL服务器 二.实现方式 keepalive是通过vrrp协议实现,之前有过介绍这里不多赘述,要注意的是在云主机是禁用vrrp协议的.本次实验采用CentOS7.4,数据库版本为MariaDB-10.2.14,2台MySQL服务器互为主从,172.16.10.30/24为keepalived

设计高可用Web服务

高可用的设计可以说是web服务架构的目标,如果服务达不到高可用,万一出现故障将会对产品带来重大的负面影响.高可用的架构就是能够让服务在任何情况下都能正常响应,比如双十一的淘宝,面对激增的洪峰照样正常工作:而聚美三周年时服务器的宕机恰好是高可用的反例. 什么是高可用 可用性:在应用工作周期中可用时间的百分比 不可用:应用无法访问,服务中断应用访问非常缓慢 高可用:服务一直正常可用,快速响应 Tags SPoF:单点故障 Failover:故障转移 Disaster Recovery:灾难恢复 Lo