基于rsync+inotify-tools 同步geo主从节点的artifacts文件

文章目录

    • [1. 背景](#1. 背景)
    • [2. 操作](#2. 操作)
      • [2.1 geo主节点查看仓库的路径](#2.1 geo主节点查看仓库的路径)
      • [2.2 安装 inotify-tools](#2.2 安装 inotify-tools)
      • [2.3 主从免密](#2.3 主从免密)
      • [2.4 编写同步脚本](#2.4 编写同步脚本)
      • [2.5 同步文件](#2.5 同步文件)
    • [3. 验证](#3. 验证)

1. 背景

由于某个repo的主从artifacts目录偏差非常严重(主节点100G,从节点10G),为了保证主从目录数据的一致性,通过rsync同步来实现。

此外,由于rsync仅仅是同步了主从节点的artifacts文件,其实际并未操作数据库,因为对数据库本身数据不会造成任何影响。

2. 操作

2.1 geo主节点查看仓库的路径

获取当前repo的hash路径:

Menu -> Admin -> Project -> Select Project-> Gitaly相对路径

eg:

Gitaly相对路径是**@hashed/4a/44/4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5.git**

则此项目的artifacts路径是:/var/opt/gitlab/gitlab-rails/shared/artifacts/4a/44/4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5

2.2 安装 inotify-tools

该工具可以实时监听某个目录的变化,同时触发rsync进行同步。

yum install -y inotify-tools

2.3 主从免密

ssh-keygen #一路回车即可
ssh-copy-id -i ~/.ssh/id_rsa.pub root@secondary_ip #输入从节点的密码即可

2.4 编写同步脚本

cd /usr/local/src/

cat inotify.sh

HOST_IP=10.100.0.2 #从节点ip
MONITOR_DIR=/var/opt/gitlab/gitlab-rails/shared/artifacts/4a/44/4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5 #主节点上repo的artifacts目录
DES=/var/opt/gitlab/gitlab-rails/shared/artifacts/4a/44/4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5 #从节点上的目标路径
USE=root
CMD=/usr/bin/inotifywait
${CMD} -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib ${MONITOR_DIR} | while read files
do
/opt/gitlab/embedded/bin/rsync -avzP ${MONITOR_DIR}/ --delete --timeout=100  ${USE}@${HOST_IP}:$DES
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done

2.5 同步文件

cd /usr/local/src/
nohup bash inotify.sh & 
tail -f nohup.out #查看同步的文件信息

3. 验证

通过tree、du -sh等命令查看文件数量和大小。

相关推荐
Nejosi_念旧4 天前
开发常用工具
flutter·vue·gitlab·postman
yaoshengting5 天前
GitLab集成Jira
gitlab·jira
mrhaoxiaojun7 天前
gitlab runner正常连接 提示 作业挂起中,等待进入队列 解决办法
gitlab
铜锣烧1号7 天前
【学习笔记】GitLab 使用技巧和说明和配置和使用方法
git·python·pycharm·gitlab
极小狐7 天前
如何在 Rocky Linux 上安装极狐GitLab?
gitlab·devsecops·devops·极狐gitlab·安全合规
ihengshuai8 天前
Gitlab搭建npm仓库
前端·docker·npm·gitlab
Channing Lewis9 天前
在使用 GitLab API 时,如果只能获取少量的 Merge Request(MR)信息,而没有完整的数据
gitlab·mr
Channing Lewis9 天前
如何查看gitlab mr labels 添加和删除的历史
gitlab·mr
ihengshuai9 天前
Gitlab流水线配置
前端·docker·gitlab·devops
阿里云云原生9 天前
GitLab 国际站中国大陆等地区停服,如何将数据快速迁移到云效
阿里云·云原生·gitlab