天天看點

JumpServer雙機備份方案

一、寫在前頭

由于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

    [sysfile]

    path = /etc/

④、建立使用者認證檔案/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 [email protected]: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.*/目錄下的檔案進行備份。

    [email protected]: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配置檔案(從)

server-id = 2

修改配置檔案後,重新開機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 [email protected]:/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;

四、系統使用者相關檔案、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 [email protected]:/etc/

scp /etc/shaow [email protected]:/etc/

scp /etc/group [email protected]:/etc/

3、登入主伺服器并複制/home路徑下所有檔案 到從伺服器

scp -r /home/* [email protected]:/home/

3、登入主伺服器并複制jumpserver下所有檔案 到從伺服器

scp -r /jumpserver [email protected]:/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,内容如下:

    ##擷取目前系統時間

    now_time=`date "+%Y-%m-_%d %H:%M:%S"`

    ##開始同步jumpserve使用者以及keys資料

    /usr/bin/rsync -avH --port=873 --progress --delete [email protected]::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 [email protected]::home --password-file=/etc/rsync.passc /home

        echo [$now_time] "同步系統使用者資料成功" >> /data/jumpserver/logs/jump_cron.log

        echo [$now_time] "同步系統使用者失敗" >> /data/jumpserver/logs/jump_cron.log

    ##同步shaow passwd group檔案

    /usr/bin/rsync -avH --port=873 --progress --delete --include 'shaow' --include 'passwd' --include 'group' --exclude '*' [email protected]::sysfile --password-file=/etc/rsync.passc /etc/

        echo [$now_time] "同步shaow passwd group檔案成功" >> /data/jumpserver/logs/jump_cron.log

        echo [$now_time] "同步shaow passwd group檔案失敗" >> /data/jumpserver/logs/jump_cron.log

    ##擷取目前使用者資訊用于修改相關檔案權限

8、建立定時任務,5分鐘執行一次資料同步操作crontab -e:

   */5 * * * * /bin/sh /data/jumpserver/jump_cron.sh >> /dev/null 2>&1

9、啟動jumpserver:

    ./service.sh start

     本文轉自aaron428 51CTO部落格,原文連結:http://blog.51cto.com/aaronsa/1740524,如需轉載請自行聯系原作者