设为首页 收藏本站
查看: 4949|回复: 5

[经验分享] JumpServer双机备份方案

  [复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-2-2 08:47:29 | 显示全部楼层 |阅读模式
一、写在前头

由于jumpserver目前不支持双机热备,因此本方案采用数据库以及系统用户数据备份实现,主要有以下方面:
1、MySQL数据库主主同步
2、系统文件:/etc/passwd /etc/shaow /etc/group文件同步(rsync+crontab)
3、jumpserver相关用户以及key文件:jumpserver/keys同步(rsync+crontab)
4、主服务器:10.44.131.212、从服务器:10.169.210.223
二、rsync配置

1、主服务器部分

①、关闭SELINUX 编辑防火墙配置文件/etc/selinux/config如下:
        #SELINUX=enforcing #注释掉
        #SELINUXTYPE=targeted #注释掉
        SELINUX=disabled #增加
    执行setenforce 0 立即生效

    开启防火墙tcp 873端口,编辑防火墙配置文件/etc/sysconfig/iptables,添加以下内容:
        -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
    重启防火墙使配置生效 /etc/init.d/iptables restart

②、安装Rsync服务端软件
    yum install rsync -y

三、创建rsyncd.conf配置文件/etc/rsyncd.conf,添加以下内容:
    uid = root
    gid = root
    use chroot = no
    max connections = 4
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log

    [jumpserver]
    path = /data/jumpserver/keys
    #ignore errors
    read only = false
    list = false
    hosts allow = 10.169.210.223
    hosts deny = 0.0.0.0/32
    auth users = juser
    secrets file = /etc/rsync.pass

    [home]
    path = /home
    #ignore errors
    read only = false
    list = false
    hosts allow = 10.169.210.223
    hosts deny = 0.0.0.0/32
    auth users = juser
    secrets file = /etc/rsync.pass

    [sysfile]
    path = /etc/
    #ignore errors
    read only = false
    list = false
    hosts allow = 10.169.210.223
    hosts deny = 0.0.0.0/32
    auth users = juser
    secrets file = /etc/rsync.pass


④、创建用户认证文件/etc/rsync.pass添加以下内容
    juser:juser20160125 #格式,用户名:密码,可以设置多个,每行一个用户名:密码
    修改配置文件权限:
    chown root.root /etc/rsync.pass
    chmod 600 /etc/rsync.pass

⑤、启动rsync
    /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

2、从服务器部分

①、创建认证密码文件 /etc/rsync.passc
    修改配置文件权限:
    chown root.root /etc/rsync.passc
    chmod 600 /etc/rsync.passc

②、执行数据同步测试操作:
    rsync -avH --port=873 --progress --delete juser@10.44.131.212:jumpserver --password-file=/etc/rsync.passc /data/jumpservertest/
    (命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。--progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。--exclude "logs/" 表示不对/www/logs目录下的文件进行备份。--exclude "conf/ssl.*/"表示不对/www/conf/ssl.*/目录下的文件进行备份。
    juser@10.44.131.212:jumpserver表示对该命令是对服务器10.44.131.212中的jumpserver模块进行备份)
三、MySQL数据库主主配置

MySQL配置文件(主)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
wait_timeout=864000
interactive_timeout=864000
server-id = 1
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days=5
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

MySQL配置文件(从)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id = 2
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days=5
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

修改配置文件后,重启MySQL:service mysqld restart

分别使用root用户登录两台数据库,执行以下密令进行主从复制授权:
GRANT REPLICATION SLAVE ON *.* TO repl@'10.169.210.223' IDENTIFIED BY 'xiaoniu0125';
GRANT REPLICATION SLAVE ON *.* TO repl@'localhost' IDENTIFIED BY 'xiaoniu0125';
GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'xiaoniu0125';
flush privileges;

导出数据库数据,并上传到从服务器上执行数据导入:
mysqldump --single-transaction -h127.0.0.1 -ujumpserver -p jumpserver > jumpserver.sql
scp jumpserver.sql root@10.169.210.223:/data/

使用jumpserver用户登录从数据库执行数据导入:source /data/jumpserver.sql

使用root用户登录主数据库查看主数据库当前二进制日志信息:show master status \G

使用root用户登录从数据库,执行以下数据同步命令:
change master to master_host='10.44.131.212', master_port=3306, master_user='repl', master_password='xiaoniu0125', master_log_file='mysql-bin.000004', master_log_pos=188397822;

启动数据同步:start slave

查看数据同步状态:show slave status \G

使用root用户登录从数据库查看主数据库当前二进制日志信息:show master status \G

使用root用户登录主数据库,执行以下数据同步命令:
change master to master_host='10.169.210.223', master_port=3306, master_user='repl', master_password='xiaoniu0125', master_log_file='mysql-bin.000004', master_log_pos=188397822;

启动数据同步:start slave

查看数据同步状态:show slave status \G
四、系统用户相关文件、jumpserver相关用户以及key文件备份

1、登录从服务器备份/etc/passwd /etc/shaow /etc/group文件
mv /etc/passwd /etc/passwd_bak
mv /etc/shaow /etc/shaow_bak
mv /etc/group /etc/group_bak

2、登录主服务器并复制/etc/passwd /etc/shaow /etc/group 到从服务器
scp /etc/passwd root@10.169.210.223:/etc/
scp /etc/shaow root@10.169.210.223:/etc/
scp /etc/group root@10.169.210.223:/etc/

3、登录主服务器并复制/home路径下所有文件 到从服务器
scp -r /home/* root@10.169.210.223:/home/

3、登录主服务器并复制jumpserver下所有文件 到从服务器
scp -r /jumpserver root@10.169.210.223:/data/

4、执行jumpserver安装
    yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz
    cd jumpserver/install && pip install -r requirements.txt
    python install.py

5、修改相关文件权限,创建change.sh,内容如下:
    #!/bin/sh
    users=`ls -l /data/jumpserver/keys/user | grep pub | awk '{print $9}' | awk -F . '{print $1}'`
    echo $users
    for user in $users
        do
            echo /home/$user
            echo /data/jumpserver/keys/user/$user*
            /usr/bin/id $user >& /dev/null
            result=$?
            if [ $result == 0 ];then
                echo "开始修改文件用户权限!"
                chown $user.$user /home/$user
                chown $user.$user /data/jumpserver/keys/user/$user*
                result=`echo $?`
                if [ $result == 0 ];then
                    echo [$now_time] "修改用户" $user "目录权限成功" >> /data/jumpserver/logs/jump_cron.log
                else
                    echo [$now_time] "修改用户" $user "目录权限失败" >> /data/jumpserver/logs/jump_cron.log
                    exit 0
                fi
            else
                echo [$now_time] $user "用户不存在!" >> /data/jumpserver/logs/jump_cron.log
            fi
        done
    exit 0
    执行改脚本:sh ./change.sh

6、修改日志文件权限:chmod 777 /data/jumpserver/logs/jumpserver.log

7、创建文件定时同步脚本,jump_cron.sh,内容如下:
    #!/bin/sh
    ##获取当前系统时间
    now_time=`date "+%Y-%m-_%d %H:%M:%S"`

    ##开始同步jumpserve用户以及keys数据
    /usr/bin/rsync -avH --port=873 --progress --delete juser@10.44.131.212::jumpserver --password-file=/etc/rsync.passc /data/jumpserver/keys
    result=`echo $?`
    if [ $result == 0 ];then
        echo [$now_time] "同步jumpserve用户以及keys数据成功" >> /data/jumpserver/logs/jump_cron.log
    else
        echo [$now_time] "同步jumpserve用户以及keys失败" >> /data/jumpserver/logs/jump_cron.log
        exit 0
    fi
    ##同步系统用户数据
    /usr/bin/rsync -avH --port=873 --progress --delete juser@10.44.131.212::home --password-file=/etc/rsync.passc /home
    result=`echo $?`
    if [ $result == 0 ];then
        echo [$now_time] "同步系统用户数据成功" >> /data/jumpserver/logs/jump_cron.log
    else
        echo [$now_time] "同步系统用户失败" >> /data/jumpserver/logs/jump_cron.log
        exit 0
    fi

    ##同步shaow passwd group文件
    /usr/bin/rsync -avH --port=873 --progress --delete --include 'shaow' --include 'passwd' --include 'group' --exclude '*' juser@10.44.131.212::sysfile --password-file=/etc/rsync.passc /etc/
    result=`echo $?`
    if [ $result == 0 ];then
        echo [$now_time] "同步shaow passwd group文件成功" >> /data/jumpserver/logs/jump_cron.log
    else
        echo [$now_time] "同步shaow passwd group文件失败" >> /data/jumpserver/logs/jump_cron.log
        exit 0
    fi

    ##获取当前用户信息用于修改相关文件权限
    users=`ls -l /data/jumpserver/keys/user | grep pub | awk '{print $9}' | awk -F . '{print $1}'`
    echo $users
    for user in $users
        do
            echo /home/$user
            echo /data/jumpserver/keys/user/$user*
            /usr/bin/id $user >& /dev/null
            result=$?
            if [ $result == 0 ];then
                echo "开始修改文件用户权限!"
                chown $user.$user /home/$user
                chown $user.$user /data/jumpserver/keys/user/$user*
                result=`echo $?`
                if [ $result == 0 ];then
                    echo [$now_time] "修改用户" $user "目录权限成功" >> /data/jumpserver/logs/jump_cron.log
                else
                    echo [$now_time] "修改用户" $user "目录权限失败" >> /data/jumpserver/logs/jump_cron.log
                    exit 0
                fi
            else
                echo [$now_time] $user "用户不存在!" >> /data/jumpserver/logs/jump_cron.log
            fi
        done
    exit 0
8、创建定时任务,5分钟执行一次数据同步操作crontab -e:
   */5 * * * * /bin/sh /data/jumpserver/jump_cron.sh >> /dev/null 2>&1

9、启动jumpserver:
    ./service.sh start



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-172624-1-1.html 上篇帖子: jumpserver相关软件 下篇帖子: Juniper EX2200几个常用vlan配置(创建,acl过滤,vlan间流量隔离)
累计签到:60 天
连续签到:1 天
发表于 2016-2-14 14:07:14 | 显示全部楼层
11111111111111

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

累计签到:1 天
连续签到:1 天
发表于 2016-2-15 22:27:16 | 显示全部楼层
1111111111

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2016-3-18 22:26:34 | 显示全部楼层
不推荐该方案。。对于jumpserver来讲。主要的是备份ldap服务器。一旦ldap服务器挂了。将导致客户端登陆异常缓慢。影响运维。推荐使用keepalived+ldap主从备份+mysql主从

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2018-1-26 11:00:42 | 显示全部楼层
麻烦问一下,我按照你的方法做了双机备份。测试发现:使用密钥的密钥密码可以连接主的jumpserver跳板机,可是不能连接备份jumpserver跳板机?(这两个跳板机应该是使用的是同一个密钥和密钥密码吧),请问清楚嘛?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表