JumpServer 主备部署的录像同步


Administrator
飞致云 发布于 2022-07-26 / 3305 阅读 / 0 评论 /
概述本文章主要介绍主备部署时,主备 JumpServer 的录像同步解决方案。

概述

本文章主要介绍主备部署时,主备 JumpServer 的录像同步解决方案。

一、同步脚本

该方式适用于客户允许主备之间配置免密登录方式。
录像同步脚本

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); 
then
echo "no args";
exit;
fi 
p1=$1 #远程要备份的目录
remotehost=$2 #远程主机 IP
dir_p1=`dirname $p1`
PINGRET=$( ping $remotehost  -c 4 | grep "Unreachable" )
if [[ "$PINGRET" == "" ]]
then
  # 实现远程服务器到本机的增量备份,前提得实现本机到远程服务器的免密登录&本机安装 rsync 软件包
rsync -vzrtopg --progress  -e 'ssh -p 22' root@$remotehost:$p1  $dir_p1/replay
else
  echo "ping failed,please check the network of remotehost";
  crontab -r; #删除定时任务
  exit;
fi

创建定时任务,定时执行该脚本即可同步。同步命令中添加 --delete 可能会导致互相同步过程中丢失部分录像,不建议加 –delete 选项。
30 2 * * 7 sh rsync.sh /opt/jumpserver/core/data/media/replay 主 IP (每周日晚上 2 点半执行备份)
主备节点均设置定时任务,互相备份即可。

二、以守护进程的方式传输数据,同步录像

该方式适用于客户不允许主备 JumpServer 之间部署免密登录。
该方式适合将备服务器作为 rsync 的服务端,主服务器作为 rsync 的客户端。定时将主服务器也就是 rsync 的客户端的录像文件推送到备服务器也就是 rsync 的服务端。(主要考虑平时为主服务器提供服务,rsync 服务端部署在主上,可能给主造成不必要的压力)

守护进程模式搭建

如果开启了防火墙,需要打开 873 端口。
rsync 客户端与服务端均需要安装 rsync 以及进行时间同步。

yum install ntpdate -y
ntpdate cn.pool.ntp.org
hwclock -w
date

服务端

#确认 rsync 已经安装
[root@a-server ~]# rpm -qa | grep rsync
rsync-3.1.2-10.el7.x86_64
 
#修改 rsync 的配置文件 
[root@a-server ~]# cp -p /etc/rsyncd.conf{,.bak}
[root@a-server ~]# vim /etc/rsyncd.conf
[root@a-server ~]# grep -vE "^#|^$" /etc/rsyncd.conf
uid = root  #用户
gid = root   #组
use chroot = no  #程序安全设置
max conections = 200   #客户端连接数
timeout = 300  #超时时间
pid file = /var/run/rsyncd.pid   #进程号文件位置
lock file = /var/run/rsync.lock   #进程锁
log file = /var/run/rsyncd.log   #日志文件位置
[backup]
path = /opt/jumpserver/core/data/media/replay/   #使用目录
ignore errors     #有错误时忽略
read only = false   #可读可写
list = false   #阻止远程列表(不让远程方式查看服务端有什么)
hosts allow = 192.168.10.0/24   #允许 IP
hosts deny = 0.0.0.0/32     #阻止 IP
auth users = rsync_backup   #虚拟用户
secrets file = /etc/rsync.password    #存放用户和密码的文件 #创建共享目录以及添加 rsync 程序用户
 
[root@a-server ~]# useradd -M -s /sbin/nologin rsync
[root@a-server ~]# cat /etc/passwd | grep rsync
rsync:x:1000:1000::/home/rsync:/sbin/nologin
[root@a-server ~]# cat /etc/group | grep rsync
rsync:x:1000:
 
#启动服务并查看
[root@a-server ~]# rsync --daemon
[root@a-server ~]# netstat -antup | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      7897/rsync        
tcp6       0      0 :::873                  :::*                    LISTEN      7897/rsync
 
修改共享目录的属主以及权限 (该操作不会影响录像形成,已测试)
[root@a-server ~]# chown -R rsync:rsync /opt/jumpserver/core/data/media/replay/
[root@a-server ~]# chmod -R 755 /opt/jumpserver/core/data/media/replay/
 
#创建 rsync 虚拟账户和密码
[root@a-server ~]# echo "rsync_backup:123456" > /etc/rsync.password
[root@a-server ~]# cat /etc/rsync.password
rsync_backup:123456
 
#将账户密码文件权限设置为 600(重要),并将 rsync 启动作为开机自启
[root@a-server ~]# chmod 600 /etc/rsync.password
[root@a-server ~]# ll /etc/rsync.password
-rw-------. 1 root root 20 2月  14 11:38 /etc/rsync.password
[root@a-server ~]# echo "rsync --daemon" > /etc/rc.local
[root@a-server ~]# tail -1 /etc/rc.local
rsync --daemon

客户端

#创建密码文件
[root@b-server ~]# rpm -qa | grep rsync
rsync-3.1.2-10.el7.x86_64
[root@b-server ~]# echo "123456" > /etc/rsync.password
  
#将密码文件的权限设置为 600
[root@b-server ~]# chmod -R 600 /etc/rsync.password
[root@b-server ~]# ll /etc/rsync.password
-rw-------. 1 root root 7 12月 29 22:04 /etc/rsync.password 

测试同步数据

将 rsync 客户端(主服务器)的录像文件推送到 rsync 服务端(备服务器)的共享目录中
rsync avzP /opt/jumpserver/core/data/media/replay/ rsync_backup@备服务器的IP::backup - password-file=/etc/rsync.password
测试成功!
将 rsync 服务端(备服务器)的共享目录下的全部内容同步到客户端的录像文件存放地
rsync avzP rsync_backup@备服务器的IP::backup /opt/jumpserver/core/data/media/replay/ - password-file=/etc/rsync.password
测试成功!

定时任务

crontab -e

0 2 * * 7 rsync avzP /opt/jumpserver/core/data/media/replay/ rsync_backup@备服务器的IP::backup - password-file=/etc/rsync.password #每周日晚上两点主 JS 同步到备 JS

30 2 * * 7 rsync avzP rsync_backup@备服务器的IP::backup  /opt/jumpserver/core/data/media/replay/ - password-file=/etc/rsync.password  #每周日晚上两点半备 JS 同步到主 JS



是否对你有帮助?