基于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等命令查看文件数量和大小。

相关推荐
测试开发技术2 天前
git rm 命令与系统的 rm 命令有什么区别?
git·gitlab·github·面试题
云和数据.ChenGuang3 天前
关闭 GitLab 升级提示的详细方法
运维·自动化·gitlab·es运维
读创商闻3 天前
极狐GitLab CEO 柳钢——极狐 GitLab 打造中国企业专属 AI 编程平台,引领编程新潮流
人工智能·gitlab
小川zs3 天前
gitee某个分支合并到gitlab目标分支
gitee·gitlab
你的人类朋友3 天前
✨【GitLab】【CI/CD】核心概念一览
gitlab·自动化运维·devops
Gold Steps.4 天前
基于 Gitlab、Jenkins与Jenkins分布式、SonarQube 、Nexus 的 CiCd 全流程打造
运维·ci/cd·gitlab·jenkins
咚咚?4 天前
基于gitlab 构建CICD发布到K8S 平台
容器·kubernetes·gitlab
荔枝吻8 天前
【保姆级喂饭教程】GitLab创建用户规范,分支开发规范,提交日志规范
gitlab·git规范·分支规范
云畅新视界8 天前
从 CODING 停服到极狐 GitLab “接棒”,软件研发工具市场风云再起
人工智能·gitlab