keepalived NFS实现HA+Rsync&(sersync)inotify实现数据自动同步配置手册

keepalived NFS实现HA+Rsync&(sersync)inotify实现数据自动同步配置手册集成 keepalived sersync 多机免密互信 autossh 一键安装脚本 https download csdn net download a 1 软件介绍 1 1 NFS 介绍 NFS Network File System 即网络文件系统

大家好,我是讯享网,很高兴认识大家。

 

集成keepalived sersync 多机免密互信autossh 一键安装脚本:https://download.csdn.net/download/a/

1.      软件介绍

1.1   NFS介绍

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

  1. 2    Keepalived介绍

Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管。

  1. 3    Rsync介绍

rsync是一个远程数据同步工具,可通过lan/wan快速同步多台主机间的文件。它使用所谓的“rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。所以通常可以作为备份工具来使用。

运行rsync server的机器也叫backup server,一个rsync server可同时备份多个client的数据;也可以多个rsync server备份一个client的数据。rsync可以搭配ssh甚至使用daemon模式。rsync server会打开一个873的服务通道(port),等待对方rsync连接。连接时,rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

  1. 4    Inotify介绍

inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13开始引入,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开、关闭、移动/重命名、删除、创建或者改变属性。

2.      环境介绍

2.1    主机介绍

主机

IP

功能

vm-shaldr02

10.72.243.141(主)

NFS+Keepalived+rsync+Inotify

vm-shaldr03

10.72.243.142(备)

NFS+Keepalived+rsync

nfsserver-test

10.72.243.143(VIP)

提供客户端挂载

 

  2.2 实验拓扑

718d7a44da7d426c1613e89f469d6a57.png
讯享网

3.      软件安装配置

3.1   配置keepalived

登录两个节点上安装keepalved

#yum –y install keepalived

#systemctl enable keepalived

 

登录主节点vm-shaldr02,配置keepalived服务

#vi /etc/keepalived/keepalived.conf   添加以下内容

! Configuration File for keepalived

 

global_defs {

  notification_email {

    

   }

  notification_email_from    设置邮件报警

  smtp_server IP         设置邮件服务器的IP

   smtp_connect_timeout30

  router_id NFS_M

}

 

vrrp_instance NFS_10.72.243.143 {

   state Master        主节点

   interface ens160     网卡的名称

   virtual_router_id 8   同一局域网内ID不能相同

   priority 100

   advert_int 1

   smtp_alert

   authentication {

       auth_type PASS

       auth_pass 1111

    }

 

   virtual_ipaddress {

       10.72.243.143

    }

}

登录vm-shaldr03备节点,配置keepalived服务

#vi /etc/keepalived/keepalived.conf   添加以下内容

! Configuration File for keepalived

 

global_defs {

  notification_email {

    

   }

  notification_email_from    设置邮件报警

  smtp_server IP         设置邮件服务器的IP

  smtp_connect_timeout 30

  router_id Nfs_M

}

 

vrrp_instance Nfs_IP {

   state Backup        主节点

   interface ens160     网卡的名称

   virtual_router_id 8   同一局域网内ID不能相同

   priority 90        不同节点的优先级值不一样,防止脑裂,争抢资源

   advert_int 1

   smtp_alert

   authentication {

       auth_type PASS

       auth_pass 1111

    }

 

   virtual_ipaddress {

       10.72.243.143

    }

}

 

配置完成后,分别登录各节点启动服务

#systemctl enable keepalived

#systemctl start keepalived

此时虚拟IP已经可以ping通,内网设置此虚拟IP的DNS解析如下:

10.72.243.143>nfsserver-test

3.2   配置NFS

登录两台主机安装nfs服务

#yum -yinstall nfs-utils

#vi /etc/idmapd.conf     第5行改成公司的域名

Domain = example.com

#vi /etc/exports  添加挂载共享的目录,此目录需存在

/jenkins_dev_home *(rw,sync,no_root_squash)

/jenkins_home *(rw,sync,no_root_squash)

/riskappdata *(rw,sync,no_root_squash)

# systemctl startrpcbind nfs   启动服务

查看挂载信息

#showmount -e nfsserver-test

Export list for nfsserver-test:

/riskappdata      *

/jenkins_home     *

/jenkins_dev_home *

3.3   配置rsync及inotify

登录备节点vm-shaldr03配置

安装rsync,一般默认已经安装

#yum -y install rsync

#vi /etc/rsyncd.conf  添加以下内容

log file= /var/log/rsyncd.log  #日志文件位置

pid file= /var/run/rsyncd.pid   #rsync服务端数据目录路径

lock file= /var/run/rsync.lock

secretsfile = /etc/rsync.password   #用户认证配置文件,里面保存用户名称和密码

motd file= /etc/rsyncd.motd

[jenkins_dev_log]   #定义模板,自定义名称

path =/jenkins_dev_home/  #rsync服务端数据目录路径

comment =jenkins_dev_log  #模块名称与[jenkins_dev_log]自定义名称相同

uid =root   

gid = root  

port=873  

usechroot = false  

read only= false  

list =false   

maxconnections = 200 

timeout =600

authusers = backuser     

hostsallow = 10.72.243.141

hostsdeny = *

 

[jenkins_log]  

path =/jenkins_home/

comment =jenkins_log 

uid =root   

gid =root  

port=873  

usechroot = false  

read only= false  

list =false   

maxconnections = 200 

timeout =600

authusers = backuser     

hostsallow = 10.72.243.141

hostsdeny = *

 

[risk_log]  

path =/riskappdata/

comment =risk_log 

uid =root   

gid =root  

port=873  

usechroot = false  

read only= false  

list =false   

maxconnections = 200 

timeout =600 

authusers = backuser   

hostsallow = 10.72.243.141

hostsdeny = *

 

# vim /etc/rsync.password  #编辑用户认证配置文件

backuser:centos

# chmod 600 /etc/rsync.password   #一定要把用户认证配置文件的权限改成600

# systemctl enable rsyncd.service   #设置rsync服务开机自启

# systemctl start rsyncd.service   #启动服务

登录主节点vm-shaldr02配置

安装rsync,一般默认已经安装

#yum -y install rsync

# vim /etc/rsync.password  #编辑用户认证配置文件

backuser:centos

# chmod 600 /etc/rsync.password   #一定要把用户认证配置文件的权限改成600

http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz   #下载inotify源码包

# tar -xzvf inotify-tools-3.14.tar.gz -C /usr/local/  #解压到/usr/logcal目录

# mkdir /usr/local/inotify  #创建安装目录

# cd /usr/local/inotify-tools-3.14/

# ./configure--prefix=/usr/local/inotify  #指定安装目录为/usr/local/inotify

# make &&make install  #编译安装

# systemctl enable rsyncd.service   #设置rsync服务开机自启

# systemctl start rsyncd.service   #启动服务

 

4.      测试及配置脚本自动同步

  • 登录主节点,执行同步命令

#rsync-vzrtopg --progress /jenkins_dev_home/ backuser@10.72.243.142::jenkins_dev_log--password-file=/etc/rsync.password

#rsync-vzrtopg --progress /jenkins_home/ backuser@10.72.243.142::jenkins_log--password-file=/etc/rsync.password

#rsync-vzrtopg --progress /riskappdata/ backuser@10.72.243.142::risk_log--password-file=/etc/rsync.password

登录备节点,查看目录已经同步完成。

 

  • 设置自动同步脚本

[root@vm-shaldr02~]# vi inotify1.sh   添加以下脚本内容

#!/bin/bash

/usr/local/inotify/bin/inotifywait-mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -emodify,delete,create,attrib /jenkins_dev_home/ | while read files

do

/usr/bin/rsync-vzrtopg --delete /jenkins_dev_home/ backuser@10.72.243.142::jenkins_dev_log--password-file=/etc/rsync.password

echo"${files} was rsynced" >> /var/log/rsyncd.log 2>&1

done

[root@vm-shaldr02~]# vi inotify2.sh   添加以下脚本内容

#!/bin/bash

/usr/local/inotify/bin/inotifywait-mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -emodify,delete,create,attrib /jenkins_home/ | while read files

do

/usr/bin/rsync-vzrtopg --delete /jenkins_home/ backuser@10.72.243.142::jenkins_log--password-file=/etc/rsync.password

echo"${files} was rsynced" >> /var/log/rsyncd.log 2>&1

done

[root@vm-shaldr02~]# vi inotify3.sh   添加以下脚本内容

#!/bin/bash

/usr/local/inotify/bin/inotifywait-mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -emodify,delete,create,attrib /riskappdata/ | while read files

do

/usr/bin/rsync-vzrtopg --delete /riskappdata/ backuser@10.72.243.142::risk_log--password-file=/etc/rsync.password

echo"${files} was rsynced" >> /var/log/rsyncd.log 2>&1

done

 

[root@vm-shaldr02~]# chmod u+x *.sh  脚本赋予执行权限

[root@vm-shaldr02~]#nohup /root/inotify1.sh &    #分别后台运行三个脚本

[root@vm-shaldr02~]#nohup /root/inotify2.sh &

[root@vm-shaldr02~]#nohup /root/inotify3.sh &

[root@vm-shaldr02~]# vim /etc/rc.local   #添加以下内容,设置开机自启动

#rsync+inotify

/root/inotify1.sh

/root/inotify2.sh

/root/inotify3.sh

[root@vm-shaldr02~]#chmod +x /etc/rc.d/rc.local   赋予执行权限

 

  • 验证自动同步

登录主节点创建目录和文件

[root@vm-shaldr02~]# cd /jenkins_dev_home/

[root@vm-shaldr02jenkins_dev_home]# mkdir test1

[root@vm-shaldr02jenkins_dev_home]# touch test2

[root@vm-shaldr02jenkins_dev_home]# ls -ld test*

drwxr-xr-x2 root root 6 May  9 15:48 test1

-rw-r--r--1 root root 0 May  9 15:48 test2

 

登录备节点查看自动生成的目录和文件

[root@vm-shaldr03~]# cd /jenkins_dev_home/

[root@vm-shaldr03jenkins_dev_home]# ls -ld test*

drwxr-xr-x2 root root 6 May  9 15:48 test1

-rw-r--r--1 root root 0 May  9 15:48 test2

 

结果显示,前后两边生成文件的时间戳一样,自动同步。

 

删除文件也会自动同步,测试过程如下:

[root@vm-shaldr02jenkins_dev_home]# rm test2

rm:remove regular empty file ‘test2’? y

[root@vm-shaldr02jenkins_dev_home]# rmdir test1

[root@vm-shaldr02jenkins_dev_home]# ls -ld test*

ls:cannot access test*: No such file or directory

查看备节点文件

[root@vm-shaldr03jenkins_dev_home]# ls -ld test*

ls:cannot access test*: No such file or directory

 

 

小讯
上一篇 2025-02-27 20:04
下一篇 2025-01-28 20:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/16201.html