一、寫在前頭
由于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,如需轉載請自行聯系原作者