文件服务器高可用

时间:2023-01-17 18:07:55
  1. 背景:

目前我们代码编译后,会先存在在一个中间文件服务器(源码服务器),然后通过文件服务器向外进行代码分发和同步,目前文件服务器是单台服务器,并且未备份,一旦文件服务器出现宕机或者异常情况时,将严重影响流水线的正常使用。

 

     2.目标:

   实现文件服务器的高可用,当文件服务器其中一台机器出现异常时,不影响流水线的发布和使用,当机器恢复后,文件服务器之间自动实现同步,保持其代码的一致性。

 

    3.方案:

     使用方案:rsync + inotify + heartbeat + supervisor

文件服务器高可用

说明: 1、   inotify  监控目录文件代码是否发生变化 ,记录发生变化的文件、文件夹。

            2、   rsync   实现两台机器之间代码的同步。

            3、   heartbeats 检测两台机器的网络、服务,是否宕机。出现问题实现主备切换,虚拟IP的漂移。

            4、    supervisor 守护:守护rsync服务和同步脚本。

 

Demo:

1、两台机器上都需要安装:rsync + inotify + heartbeat + supervisor

2. 同步脚本:(主备机器目标IP不同.)


#!/bin/bash
host=172.26.8.156  ## 目标服务器的IP
mould=f6NUSuSMFqemVDir    ### rsync 模块
src=/data/www/java/maoyuefei    ###监控的目录
des=/data/www/java/                   ### 同步目标路劲
user=root                                    ### 同步账户

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files    #### 监控目录变化
do
          rsync -vzrtopg --delete --progress $src $host::$mould$des   ### 文件同步
          echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done


3. heartbeats 配置:

    主要涉及三个位置文件:ha.cf(主配置文件)  haresources(监控服务,虚拟IP等)   authkeys(认证)

    ha.cf配置文件:(主备IP地址不同,分别为对方的ip地址)


debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
ucast eth0 172.26.8.157 ### ip地址
auto_failback on
node devops-test-3.none ### 主节点
node devops-test-2.none ###备
ping 172.26.11.254   ### 一般设置路由
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail  ### 服务检测,如果服务挂了,由备节点接管服务


haresources 配置:(主备保持一致)

devops-test-3.none IPaddr::172.26.8.135/24/eth0 snmpd rsync snmptrapd