w7 全網架構-rsync-備份

準備

1.從安裝系統開始準備

安裝過程當中添加網卡
eth0
ip 10.0.0.210
netmask 24
gateway 10.0.0.254
eth1
ip 172.16.1.210
netmask 24
2.統一網絡環境
網關都是 10.0.0.254
電腦===>網絡鏈接
2.服務器ip地址規劃

服務器說明 外網IP( NAT) 內網IP( LAN區段/Host-only) 主機名規劃
A1-nginx負載服務器 01 10.0.0.5/24 172.16.1.5/24 lb01
A1-nginx負載服務器 02 10.0.0.6/24 172.16.1.6/24 lb02
B2-nginx web服務器 10.0.0.7/24 172.16.1.7/24 web02
B2-nginx web服務器 10.0.0.8/24 172.16.1.8/24 web01
C3-mysql數據庫服務器 10.0.0.51/24 172.16.1.51/24 db01
C1-NFS存儲服務器 10.0.0.31/24 172.16.1.31/24 nfs01
C2-rsync存儲服務器 10.0.0.41/24 172.16.1.41/24 backup
X-管理服務器 10.0.0.61/24 172.16.1.61/24 m01
系統準備

系統優化html

#全部服務器模板機的基本優化
\cp /etc/hosts{,.bak}
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web02
172.16.1.8 web01
172.16.1.51 db01 db01.etiantian.org
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.61 m01
EOF
#0、更改yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum makecache
#一、關閉selinux

sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
getenforce
#二、關閉iptables

/etc/init.d/iptables stop
/etc/init.d/iptables stop
chkconfig iptables off
#三、精簡開機自啓動服務

export LANG=en
chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash
chkconfig --list|grep 3:on
#四、提權oldboy能夠sudo

useradd oldboy
echo 123456|passwd --stdin oldboy
\cp /etc/sudoers /etc/sudoers.ori
echo "oldboy ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers
visudo -c
#五、英文字符集

cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori
echo 'LANG="en_US.UTF-8"' >/etc/sysconfig/i18n
source /etc/sysconfig/i18n
echo $LANG
#六、時間同步

echo '#time sync by lidao at 2017-03-08' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
crontab -l
#八、加大文件描述

echo '* - nofile 65535 ' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
#九、內核優化

cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#如下參數是對iptables防火牆的優化,防火牆不開會提示,能夠忽略不理。
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
EOF
sysctl -p
#十、安裝其餘小軟件

yum install lrzsz nmap tree dos2unix nc telnet sl -y
#十一、 ssh鏈接速度慢優化

sed -i.bak 's@#UseDNS yes@UseDNS no@g;s@^GSSAPIAuthentication yes@GSSAPIAuthentication no@g' /etc/ssh/sshd_config
/etc/init.d/sshd reload
系統優化

克隆虛擬機mysql

克隆前準備
1清2刪
1清

>/etc/udev/rules.d/70-persistent-net.rules
2刪

sed -ri '/UUID|HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth*
sed -i '/IPADDR/s#210$#31#g' /etc/sysconfig/network-scripts/ifcfg-eth*
克隆

rsync 命令

rsync [OPTION]... 
SRC DEST
rsync [OPTION]... SRC [USER@]host:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rlptgoD。
    -r, --recursive 對子目錄以遞歸模式處理。
    -l, --links 保留軟鏈結。
    -p, --perms 保持文件權限。
    -t, --times 保持文件時間信息。
    -g, --group 保持文件屬組信息。
    -o, --owner 保持文件屬主信息。
    -D, --devices 保持設備文件信息。

-P
 等同於 --partial。   -P, --partial保留那些因故沒有徹底傳輸的文件,以加快隨後的再次傳輸
   顯示同步過程及及傳輸過程進度信息


-e, --rsh=command 指定使用rsh、ssh方式進行數據同步。
-v, --verbose 詳細模式輸出。
-z, --compress 對備份的文件在傳輸時進行壓縮處理。
--delete 刪除那些DST中SRC沒有的文件。 
--exclude=PATTERN 指定排除不須要傳輸的文件模式。
 
--bwlimit=KBPS 限制I/O帶寬,KBytes per second。單位是1KB
scp 全量複製

    -P:指定遠程主機的端口號;
    -r:以遞歸方式複製。
[root@backup ~]# scp -P 22 /etc/hosts 172.16.1.31:/tmp

[root@backup ~]# scp -Pr 22 /etc/ 172.16.1.31:/opt
Bad port 'r'
lost connection
[root@backup ~]# scp -rP 22 /etc/ 172.16.1.31:/opt
scp 全量複製

Rsync的應用場景說明

1.定時備份

1.1.生產場景集羣架構服務器備份方案項目linux

藉助cron+rsync把全部客戶服務器數據同步到備份服務器nginx

案列、全網服務器數據備份解決方案提出及負責實施 200x.03 – 200x.09web

1.針對公司重要數據備份混亂情況和領導提出備份全網數據的解決方案。sql

2.經過本地打包備份,而後rsync 結合inotify應用把全網數據統一備份到一個固定存儲服務器,而後在存儲shell

服務器上經過腳本檢查並報警管理員備份結果。數據庫

3.按期將IDC機房的數據備份公司的內部服務器,防止機房地震及火災問題致使數據丟失。bash

2.實時複製

本地數據傳輸模式( local-only mode)
/oldboy/ 與 /oldboy        【僅限rsync 命令】
/oldboy 表示oldboy目錄及oldboy目錄下面的內容
/oldboy/ 只表示oldboy目錄下面的內容
#/tmp/oldboy.txt /opt/

rsync /etc/hosts /opt/        複製文件
rsync -avz /etc /opt/        複製目錄
    -a 保持屬性不變,全部者不變,遞歸複製目錄
    -v 顯示過程
    -z 壓縮


--delete 複製的時候保持目標與源目錄的內容 如出一轍    目標目錄多餘的會被刪除
        通常用不到
view more
過遠程shell進行數據傳輸

[root@backup ~]# scp -rP 22 /etc/ 172.16.1.31:/tmp
rsync -avz /etc/sysconfig 172.16.1.31:/tmp/
--bwlimit=RATE limit socket I/O bandwidth
(案例:某DBA作數據同步,帶寬佔滿,致使用戶沒法訪問網站)
view more

rsync配置

d4b7045c-80c1-49cc-bcdb-4d9bc1972fa4[4]

建立目錄和文件

[root@backup ~]# mkdir /backup
[root@backup ~]# useradd -s /sbin/nologin -M rsync

[root@backup ~]# chown -R rsync.rsync /backup
[root@backup ~]# ls -ld /backup
drwxr-xr-x 2 rsync rsync 4096 Jan 18 23:18 /backup

[root@backup ~]# echo 'rsync_backup:123456' >/etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:123456
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password
-rw------- 1 root root 20 Jan 18 23:32 /etc/rsync.password
view more

rsync backup 服務器配置

[root@backup ~]# cat /etc/rsyncd.conf
######rsync_config_______________start
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[backup]
path = /backup/
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#rsync_config_______________end
view more

 配置文件詳解服務器

295023656

image

[root@backup ~]# ps -ef |grep rsync
root 24946 1 0 23:34 ? 00:00:00 rsync --daemon
root 24948 1787 0 23:34 pts/1 00:00:00 grep rsync
[root@backup ~]# ss -lntup |grep rsync
tcp LISTEN 0 5 :::873 :::*
users:(("rsync",24946,5))
tcp LISTEN 0 5 *:873 *:*
users:(("rsync",24946,4))

[root@backup ~]# tail -f /var/log/rsyncd.log
2018/07/25 07:45:15 [2014] rsyncd version 3.0.6 starting, listening on port 873

rsync客戶端

image

客戶端密碼配置

[root@nfs01 tmp]# echo '123456' > /etc/rsync.password
[root@nfs01 tmp]# chmod 600 /etc/rsync.password
[root@nfs01 tmp]# rsync -avzP /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
sent 26 bytes received 8 bytes 68.00 bytes/sec
total size is 349 speedup is 10.26

rsync配置多個模塊

[root@backup ~]# cat /etc/rsyncd.conf
######rsync_config_______________start
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /backup/
[nfsbackup]
path = /nfsbackup/

模塊要寫在最下面

要更改 備份文件夾的權限爲rsync

案例

某公司裏有一臺Web服務器,裏面的數據很重要,可是若是硬盤壞了,數據就會丟失,如今領導要求你把數
據在其餘機器上作一個週期性定時備份。要求以下:
天天晚上00點整在Web服務器A(web01)上打包備份網站程序目錄並經過rsync命令推送到服務器B(backup)上備份保留
(備份思路能夠是先在本地按日期打包,而後再利用rsync推到備份服務器上)。
具體要求以下:
1)Web服務器A和備份服務器B的備份目錄必須都爲/backup。
2)Web服務器站點目錄假定爲(/var/www/html)。
3)Web服務器本地僅保留7天內的備份。
4)備份服務器上每週六的數據都保留,其餘備份僅保留180天備份。
5)備份服務器上檢查備份結果是否正常,並將天天的備份結果發給管理員信箱。
需求

image

 

web01腳本

#!/bin/bash
#desc: backup html && conf
Date=$(date +%F_%w)
#backup file && conf
cd / && \
tar zchf /backup/web01-${Date}.tar.gz var/www/html/ etc/rc.local var/spool/cron/
#make md5sum
cd /backup/ && \
md5sum web01-${Date}.tar.gz >check.log
#rsync file to backup
rsync -az /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#delete 7 day ago
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm
view

 

backup 腳本
[root@backup backup]# cat /server/scripts/check.sh
#!/bin/bash
#del 180 day file keep every 6
find /backup/ -type f -name "*.tar.gz" -mtime +180 ! -name "*_6.tar.gz"|xargs rm
#check
cd /backup/ && md5sum -c check.log >/backup/result.log
if [ $? -ne 0 ];then
mail -s "md5sum wrong" 918391635@qq.com </backup/result.log
fi
backup 腳本
#須要開啓postfix
[root@backup backup]# /etc/init.d/postfix start
Starting postfix: [ OK ]
[root@backup backup]# chkconfig postfix on
mail -s "md5sum wrong" 918391635@qq.com </etc/hosts
[root@backup backup]# crontab -l |tail -2
#check & send result lee at 2017-01-01
00 03 * * * /bin/sh /server/scripts/check.sh >/dev/null 2>&1
backup 須要開啓postfix

添加到定時任務

[root@backup backup]# crontab -l |tail -2
#check & send result 
00 03 * * * /bin/sh /server/scripts/check.sh >/dev/null 2>&1

rsync 報錯總結

回答:
1)Failed to parse config file: /etc/rsyncd.conf
rsync --daemon
Failed to parse config file: /etc/rsyncd.conf
緣由:沒有默認的配置文件
解決:生成rsyncd.conf配置文件

2)@ERROR: Unknown module 'backup'
rsync -avz ./rsync-3.1.3 rsync_backup@10.0.0.200::backup
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1657) [sender=3.1.3]
緣由:設置hosts allow = 172.16.1.0/24的網段,跟鏈接的網段10.0.0.220不同
解決:把hosts allow網段改成 hosts allow = 10.0.0.0/24

3)@ERROR: invalid uid rsync
rsync -avz ./rsync-3.1.3 rsync_backup@10.0.0.222::backup --password-file=/etc/rsync.password
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1657) [sender=3.1.3]
緣由:rsync用戶被刪除
解決:添加rsync用戶

4)@ERROR: chdir failed
rsync -avz ./rsync-3.1.3 rsync_backup@10.0.0.222::backup --password-file=/etc/rsync.password
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1657) [sender=3.1.3]
緣由:沒有建立backup目錄
解決:建立/backup目錄,並設置用戶和用戶組

5)rsync: recv_generator: mkdir "rsync-3.1.3" (in backup) failed: Permission denied (13)
[root@oldboyedu-01 ~]# rsync -avz ./rsync-3.1.3 rsync_backup@10.0.0.222::backup --password-file=/etc/rsync.password
sending incremental file list
rsync: recv_generator: mkdir "rsync-3.1.3" (in backup) failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
rsync-3.1.3/

sent 7,318 bytes  received 192 bytes  715.24 bytes/sec
total size is 7,488,150  speedup is 997.09
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1189) [sender=3.1.3]
緣由:服務器端/bakcup的用戶和用戶組不對
解決:修改服務器端/backup的 所屬用戶和用戶組

6)@ERROR: auth failed on module backup
[root@oldboyedu-01 ~]# rsync -avz ./rsync-3.1.3 rsync_backup@10.0.0.222::backup --password-file=/etc/rsync.password
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1657) [sender=3.1.3]
緣由:1,服務器端的密碼文件的權限不對
解決:修改密碼文件權限
緣由:2,客戶端密碼文件不存在
解決:建立客戶端密碼文件
緣由:3,用戶名密碼不對
解決:把客戶端使用的用戶名的密碼修改正確

7)ERROR: password file must not be other-accessible
 [root@oldboyedu-01 ~]# rsync -avz ./rsync-3.1.3 rsync_backup@10.0.0.222::backup --password-file=/etc/rsync.password
ERROR: password file must not be other-accessible
rsync error: syntax or usage error (code 1) at authenticate.c(196) [sender=3.1.3]
緣由:客戶端密碼文件權限不對
解決:修改客戶端密碼文件權限

8)@ERROR: Unknown module 'bbackup'
[root@oldboyedu-01 ~]# rsync -avz ./rsync-3.1.3 rsync_backup@10.0.0.222::bbackup --password-file=/etc/rsync.password
@ERROR: Unknown module 'bbackup'
rsync error: error starting client-server protocol (code 5) at main.c(1657) [sender=3.1.3]
[root@oldboyedu-01 ~]#
緣由:沒有bbackup模塊
解決:把推送命令中的模塊名稱修改正確

9)rsync: failed to connect to 172.16.1.41: No route to host (113)
[root@nfs01 ~]# rsync -avz /root/ backup_rsync@172.16.1.41::backup --password-file=/etc/rsync.password
rsync: failed to connect to 172.16.1.41: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
緣由:被服務器端防火牆阻擋
解決:關閉服務器端防火牆
緣由:服務器端IP寫錯了
解決:修改正確的服務器端IP
rsync 報錯總結
相關文章
相關標籤/搜索