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

 

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

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 {

     admin@example.com

   }

  notification_email_from  admin@example.com  设置邮件报警

  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 {

     admin@example.com

   }

  notification_email_from  admin@example.com  设置邮件报警

  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

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
项目名称:自助洗车平台 项目背景:随着汽车保有量的不断增长,洗车市场逐渐形成。但传统洗车方式存在排污、耗水、人工成本高等问题,自助洗车成为一种新兴的洗车方式。本项目旨在建立一个自助洗车平台,方便消费者进行自主洗车,减少传统洗车方式的不利影响。 项目职责: 1. 架构设计:设计并实现自助洗车平台的架构,包括前端、后端、数据库、缓存、负载均衡、日志等组件的选择和配置。其中,Nginx 负责反向代理和负载均衡,Tomcat 负责处理业务逻辑,keepalived 实现高可用性,redis 缓存常用数据,MySQL 存储洗车记录,inotify+rsync 实现文件同步,ELK 实现日志管理和分析。 2. 系统开发:基于 Spring Boot 框架,使用 Java 语言开发自助洗车平台的后端系统,实现洗车订单管理、设备管理、用户管理、支付管理等功能。同时,使用 Vue.js 开发前端页面,实现用户注册、登录、下单、支付等功能。 3. 数据库设计:设计并实现 MySQL 数据库,建立洗车订单表、设备信息表、用户信息表、支付记录表等,实现数据的存储和管理。 4. 缓存设计:使用 Redis 缓存常用数据,如用户信息、设备状态等,提高系统的响应速度和并发能力。 5. 日志管理:使用 ELK(Elasticsearch、Logstash、Kibana)实现日志的收集、分析和管理,方便运维人员进行系统监控和问题排查。 6. 系统部署:使用 Docker 镜像技术,将自助洗车平台的各个组件打包成镜像,并使用 Kubernetes 进行容器编排和部署,实现系统的高可用性和自动运维。 7. 系统监控:使用 Zabbix 实现系统监控,包括 CPU、内存、磁盘、网络等性能指标的监控和告警,保障系统的稳定性和可靠性。 项目收益: 1. 提高用户体验:通过自助洗车平台,消费者可以方便、快捷地进行洗车,提高用户体验和满意度。 2. 减少人工成本:自助洗车平台减少了人工操作和管理成本,提高了洗车效率和经济效益。 3. 降低环境污染:自助洗车平台的洗车方式较传统方式更为环保,减少了水资源和废水排放,降低了环境污染。 4. 提高系统运维效率:通过自动运维和日志管理,减少人工操作,提高系统稳定性和运维效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunday_ding

一分钱也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值