女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CentOS環(huán)境下SFTP雙機(jī)高可用部署實(shí)錄

馬哥Linux運(yùn)維 ? 來(lái)源:cnblogs ? 2024-03-29 11:22 ? 次閱讀

SFTP(SSH File Transfer Protocol),安全文件傳送協(xié)議。有時(shí)也被稱(chēng)作 Secure File Transfer Protocol 或 SFTP。它和SCP的區(qū)別是它允許用戶(hù)中斷傳輸,SCP拷貝速度稍快一些。SFTP可以為傳輸文件提供一種安全的加密方法。SFTP與FTP有著幾乎一樣的語(yǔ)法和功能。SFTP 為 SSH的一部分,是一種傳輸檔案至Blogger伺服器的安全方式。其實(shí)在SSH軟件包中,已經(jīng)包含了一個(gè)叫作SFTP的安全文件傳輸子系統(tǒng),SFTP本身沒(méi)有單獨(dú)的守護(hù)進(jìn)程,它必須使用sshd守護(hù)進(jìn)程(端口號(hào)默認(rèn)是22)來(lái)完成相應(yīng)的連接操作,所以從某種意義上來(lái)說(shuō),SFTP并不像一個(gè)服務(wù)器程序,而更像是一個(gè)客戶(hù)端程序。SFTP同樣是使用加密傳輸認(rèn)證信息和傳輸?shù)臄?shù)據(jù),所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術(shù),所以傳輸效率比普通的FTP要低得多,如果您對(duì)網(wǎng)絡(luò)安全性要求更高時(shí),可以使用SFTP代替FTP。

下面說(shuō)下SFTP+Keepalived雙機(jī)高可用方案部署記錄:
sftp-test01  172.16.51.191
sftp-test02  172.16.51.192
VIP          172.16.51.193
 
一、sftp-test01服務(wù)器操作:
1)查看openssh的版本
使用ssh -V 命令來(lái)查看openssh的版本,版本必須大于4.8p1,低于的這個(gè)版本需要升級(jí)。
[root@sftp-test01 ~]# ssh -V  
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
 
2)創(chuàng)建sftp組
[root@sftp-test01 ~]# groupadd sftp
 
3)創(chuàng)建一個(gè)sftp用戶(hù),用戶(hù)名為mysftp,密碼為mysftp
修改用戶(hù)密碼和修改Linux用戶(hù)密碼是一樣的。
[root@sftp-test01 ~]# useradd -g sftp -s /bin/false mysftp
[root@sftp-test01 ~]# passwd mysftp
 
4)sftp組的用戶(hù)的home目錄統(tǒng)一指定到/data/sftp下,按用戶(hù)名區(qū)分,這里先新建一個(gè)mysftp目錄,然后指定mysftp的home為/data/sftp/mysftp
[root@sftp-test01 ~]# mkdir -p /data/sftp/mysftp 
[root@sftp-test01 ~]# usermod -d /data/sftp/mysftp mysftp
 
5)配置sshd_config,這個(gè)配置里的sftp要嚴(yán)格按照下面的配置來(lái)操作,否則重啟sshd服務(wù)后,會(huì)造成sftp登錄成功,但ssh遠(yuǎn)程登錄失敗的現(xiàn)象!
修改或添加下面配置。可以直接下載sshd_config配置進(jìn)行使用。下載地址:https://pan.baidu.com/s/1o3ILTiC7nClF9NxCmS8YHw    提取密碼:de3x
[root@sftp-test01 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak2
[root@sftp-test01 ~]# vim /etc/ssh/sshd_config
......
#Subsystem  sftp  /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no
 
設(shè)定Chroot目錄權(quán)限
[root@sftp-test01 ~]# chown root:sftp /data/sftp/mysftp
[root@sftp-test01 ~]# chmod 755 /data/sftp/mysftp
 
6)建立SFTP用戶(hù)登入后可寫(xiě)入的目錄
按照上面設(shè)置后,在重啟sshd服務(wù)后,用戶(hù)mysftp已經(jīng)可以登錄。但使用chroot指定根目錄后,根應(yīng)該是無(wú)法寫(xiě)入的,所以要新建一個(gè)目錄供mysftp上傳文件。
這個(gè)目錄所有者為mysftp,所有組為sftp,所有者有寫(xiě)入權(quán)限,而所有組無(wú)寫(xiě)入權(quán)限。
[root@sftp-test01 ~]# mkdir /data/sftp/mysftp/upload 
[root@sftp-test01 ~]# chown mysftp:sftp /data/sftp/mysftp/upload 
[root@sftp-test01 ~]# chmod 755 /data/sftp/mysftp/upload 
 
7)關(guān)閉防火墻
[root@sftp-test01 ~]# /etc/init.d/iptables stop
[root@sftp-test01 ~]# setenforce 0
setenforce: SELinux is disabled
[root@sftp-test01 ~]# cat /etc/sysconfig/selinux
.......
SELINUX=disabled
 
8)重啟sshd服務(wù)
[root@sftp-test01 ~]# service sshd restart 
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
 
9)驗(yàn)證sftp環(huán)境(如對(duì)sftp做白名單限制,則就是對(duì)sshd做白名單限制。可以在iptables里限制sshd的端口,也可以在/etc/hosts.allow里對(duì)sshd服務(wù)做限制)
如下顯示,這說(shuō)明SFTP已經(jīng)搭建成功(如果ssh是非22端口,比如是6666端口,則連接命令:sftp -o port=6666 [email protected])
[root@sftp-test01 ~]# sftp [email protected]
Connecting to 172.16.51.191...
The authenticity of host '172.16.51.191 (172.16.51.191)' can't be established.
RSA key fingerprint is c01d3b4a54a76f47:c7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.51.191' (RSA) to the list of known hosts.
[email protected]'s password:
sftp> ls
upload 
sftp> cd upload
sftp> ls
 
10)使用FileZilla FTP Client連接SFTP服務(wù)器
輸入主機(jī)IP地址172.16.51.191、用戶(hù)名mysftp、密碼mysftp、端口(默認(rèn)為22端口)連接SFTP服務(wù)器。
連接后,默認(rèn)的路徑是/data/sftp/mysftp
 
二、sftp-test02服務(wù)器需要和上面sftp-test01一樣的操作!
 
三、sftp-test01和sftp-test02兩臺(tái)機(jī)器的/data/sftp目錄做實(shí)時(shí)同步(rsync+inotify)
考慮到數(shù)據(jù)完整性和安全性,實(shí)施單向?qū)崟r(shí)同步,即從sftp-test01機(jī)器的/data/sftp實(shí)時(shí)同步到sftp-test02的data/sftp
操作如下:
1)在目標(biāo)服務(wù)器sftp-test02上的部署過(guò)程
安裝配置rsync服務(wù)端
[root@sftp-test02 ~]# yum install rsync xinetd
[root@sftp-test02 ~]# vim /etc/xinetd.d/rsync
......
   disable  = no
......
 
啟動(dòng)xineted服務(wù)
[root@sftp-test02 ~]#  /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
 
創(chuàng)建/etc/rsyncd.conf文件
[root@sftp-test02 ~]# vim /etc/rsyncd.conf
[root@sftp-test02 ~]# cat /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsync.pass
motd file = /etc/rsyncd.Motd
 
[sftp_upload]
path = /data/sftp
comment = sftp_upload
uid = root
gid = sftp
port=873
use chroot = no
read only = no
list = no
max connections = 200
timeout = 600
auth users = RSYNC_USER
hosts allow = 172.16.51.191
 
注意:權(quán)限不要搞錯(cuò)了!
上面填寫(xiě)的uid是root,gid是sftp,是因?yàn)?data/sftp/
[root@sftp-test02 ~]# ll -d /data/sftp
drwxr-xr-x 3 root root 4096 Nov 21 05:21 /data/sftp
[root@sftp-test02 ~]# ll /data/sftp/
total 4
drwxr-xr-x 3 root sftp 4096 Nov 21 07:28 mysftp
 
創(chuàng)建用戶(hù)認(rèn)證文件
[root@sftp-test02 ~]# vim /etc/rsync.pass
RSYNC_USER:123456@rsync
 
設(shè)置文件權(quán)限,即rsyncd.conf和rsync.pass認(rèn)證文件都是600權(quán)限!
[root@sftp-test02 ~]# chmod 600 /etc/rsyncd.conf
[root@sftp-test02 ~]# chmod 600 /etc/rsync.pass
 
重啟rsync服務(wù)
[root@sftp-test02 ~]# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[root@sftp-test02 ~]# lsof -i:873
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xinetd  3797 root    5u  IPv6  16264      0t0  TCP *:rsync (LISTEN)
 
2)在源服務(wù)器172.16.51.191上的部署過(guò)程
[root@sftp-test01 ~]# yum install rsync xinetd
[root@sftp-test01 ~]# vim /etc/xinetd.d/rsync
......
   disable  = no
......
[root@sftp-test01 ~]# /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
[root@sftp-test01 ~]# lsof -i:873
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xinetd  3444 root    5u  IPv6  15917      0t0  TCP *:rsync (LISTEN)
 
創(chuàng)建同步的密碼文件,這個(gè)文件名可以跟服務(wù)端的認(rèn)證文件不一樣,但是里面的密碼必須一致!用于rsync同步命令中。
不過(guò),最好兩邊的文件設(shè)置成一樣,便于管理
[root@sftp-test01 ~]# cat /etc/rsync.pass
123456@rsync
 
設(shè)置rsync.pass密碼文件為600權(quán)限
[root@sftp-test01 ~]# chmod 600 /etc/rsync.pass
 
查看服務(wù)器內(nèi)核是否支持inotify,出現(xiàn)下面的內(nèi)容,說(shuō)明服務(wù)器內(nèi)核支持inotify
[root@sftp-test01 ~]# ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Nov 21 08:12 max_queued_events
-rw-r--r-- 1 root root 0 Nov 21 08:12 max_user_instances
-rw-r--r-- 1 root root 0 Nov 21 08:12 max_user_watches
 
注意:Linux下支持inotify的內(nèi)核最小為2.6.13,可以輸入命令:uname -a查看內(nèi)核
CentOS 5.X 內(nèi)核為2.6.18,默認(rèn)已經(jīng)支持inotify
[root@sftp-test01 ~]# uname -a
Linux sftp-test01 2.6.32-696.13.2.el6.x86_64 #1 SMP Thu Oct 5 2116 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
 
下面開(kāi)始安裝inotify-tools
[root@sftp-test01 ~]# yum install make gcc gcc-c++
[root@sftp-test01 ~]# cd /usr/local/src/
[root@sftp-test01 src]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@sftp-test01 src]# tar zxvf inotify-tools-3.14.tar.gz
[root@sftp-test01 src]# cd inotify-tools-3.14
[root@sftp-test01 inotify-tools-3.14]#  ./configure --prefix=/usr/local/inotify
[root@sftp-test01 inotify-tools-3.14]# make && make install
 
發(fā)現(xiàn)已經(jīng)成功安裝inotify-tools了
[root@sftp-test01 inotify-tools-3.14]# ll -d /usr/local/inotify/
drwxr-xr-x 6 root root 4096 Nov 21 08:14 /usr/local/inotify/
 
設(shè)置系統(tǒng)環(huán)境變量
[root@sftp-test01 inotify-tools-3.14]# vim /etc/profile
.......
export PATH=$PATH:/usr/local/inotify/bin
[root@sftp-test01 inotify-tools-3.14]# source /etc/profile
 
添加庫(kù)文件
[root@sftp-test01 inotify-tools-3.14]# vim /etc/ld.so.conf
......
/usr/local/inotify/lib
[root@sftp-test01 inotify-tools-3.14]# ldconfig
 
修改inotify默認(rèn)參數(shù)(inotify默認(rèn)內(nèi)核參數(shù)值太小)
查看系統(tǒng)默認(rèn)參數(shù)值
[root@sftp-test01 inotify-tools-3.14]# sysctl -a | grep max_queued_events
fs.inotify.max_queued_events = 16384
[root@sftp-test01 inotify-tools-3.14]# sysctl -a | grep max_user_watches
fs.inotify.max_user_watches = 8192
fs.epoll.max_user_watches = 796344
[root@sftp-test01 inotify-tools-3.14]# sysctl -a | grep max_user_instances
fs.inotify.max_user_instances = 128
 
[root@sftp-test01 inotify-tools-3.14]# sysctl -w fs.inotify.max_queued_events="99999999"
fs.inotify.max_queued_events = 99999999
[root@sftp-test01 inotify-tools-3.14]# sysctl -w fs.inotify.max_user_watches="99999999"
fs.inotify.max_user_watches = 99999999
[root@sftp-test01 inotify-tools-3.14]# sysctl -w fs.inotify.max_user_instances="65535"
fs.inotify.max_user_instances = 65535
 
參數(shù)說(shuō)明:
max_queued_events:
inotify隊(duì)列最大長(zhǎng)度,如果值太小,會(huì)出現(xiàn)"** Event Queue Overflow **"錯(cuò)誤,導(dǎo)致監(jiān)控文件不準(zhǔn)確
max_user_watches:
要同步的文件包含多少目錄,可以用:find /Data/xqsj_upload -type d | wc -l 統(tǒng)計(jì)這些源目錄下的目錄數(shù),必須保證max_user_watches值大于統(tǒng)計(jì)結(jié)果(這里/Data/xqsj_upload為同步的源文件目錄)
max_user_instances:
每個(gè)用戶(hù)創(chuàng)建inotify實(shí)例最大值
 
接著執(zhí)行同步操作:
在源服務(wù)器上執(zhí)行rsync首次全量同步的操作(加--delete參數(shù),保持目標(biāo)目錄和源目錄下文件絕對(duì)一致)
[root@sftp-test01 ~]# rsync -avH --port=873 --progress --delete /data/sftp/ [email protected]::sftp_upload --password-file=/etc/rsync.pass
 
待第一次rsync全量同步完成后,就進(jìn)行rsync+inotify實(shí)時(shí)同步腳本操作。
實(shí)時(shí)同步腳本里添加的是--delete-before參數(shù),而不是--delete參數(shù)(第一次全量同步時(shí)rsync用的參數(shù)),二者區(qū)別:
--delete參數(shù):表示rsync同步前,暴力刪除目標(biāo)目錄中的所有文件,然后再執(zhí)行同步操作。
--delete-before參數(shù):表示rsync同步前,會(huì)先對(duì)目標(biāo)目錄進(jìn)行一次掃描檢索,刪除目標(biāo)目錄中對(duì)比源目錄的多余文件,然后再執(zhí)行同步操作。顯然比--delete參數(shù)安全些。
 
[root@sftp-test01 data]# cd /data/script/
[root@sftp-test01 script]# vim sftp_data_rsync.sh
#!/bin/bash
SRCDIR=/data/sftp/
USER=RSYNC_USER
IP=172.16.51.192
DESTDIR=sftp_upload
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $SRCDIR | while read file
do
/usr/bin/rsync -avH --port=873 --progress --delete-before $SRCDIR $USER@$IP::$DESTDIR --password-file=/etc/rsync.pass
echo " ${file} was rsynced" >> /tmp/rsync.log 2>&1
done
 
[root@sftp-test01 script]# chmod 755 sftp_data_rsync.sh
[root@sftp-test01 script]# nohup sh sftp_data_rsync.sh &          //按ctrl+c結(jié)束
[1] 8807
[root@sftp-test01 script]# ps -ef|grep inotify
root      8808  8807  0 22:55 pts/0    00:00:00 /usr/local/inotify/bin/inotifywait -mrq --timefmt %d/%m/%y %H:%M --format %T %w%f%e -e close_write,modify,delete,create,attrib,move /data/sftp/
root      8811  8451  0 22:55 pts/0    00:00:00 grep inotify
 
這樣,sftp-test01機(jī)器的/data/sftp目錄下的文件就會(huì)自動(dòng)實(shí)時(shí)同步到sftp-test02機(jī)器的/data/sftp目錄下
注意:這是單向?qū)崟r(shí)同步!如果要想做雙向?qū)崟r(shí)同步!那就需要在sftp-test02機(jī)器上再做個(gè)inotify監(jiān)控腳本(同時(shí),sftp-test01也要做個(gè)rsyncd.conf文件)
 
 
四、SFTP結(jié)合Keepalived做雙機(jī)高可用
1)下載安裝Keepalived(兩臺(tái)機(jī)器同樣操作)
[root@sftp-test01 ~]# cd /usr/local/src/
[root@sftp-test01 src]# wget http://www.keepalived.org/software/keepalived-1.3.2.tar.gz
[root@sftp-test01 src]# tar -zvxf keepalived-1.3.2.tar.gz
[root@sftp-test01 src]# cd keepalived-1.3.2
[root@sftp-test01 keepalived-1.3.2]# ./configure && make && make install
[root@sftp-test01 keepalived-1.3.2]# cp /usr/local/src/keepalived-1.3.2/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/
[root@sftp-test01 keepalived-1.3.2]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@sftp-test01 keepalived-1.3.2]# mkdir /etc/keepalived
[root@sftp-test01 keepalived-1.3.2]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@sftp-test01 keepalived-1.3.2]# cp /usr/local/sbin/keepalived /usr/sbin/
[root@sftp-test01 keepalived-1.3.2]# echo "/etc/init.d/keepalived start" >> /etc/rc.local
 
2)配置Keepalived.conf文件
[root@sftp-test01 keepalived-1.3.2]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@sftp-test01 keepalived-1.3.2]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
   
global_defs {
notification_email {
[email protected]
}
   
notification_email_from [email protected]
smtp_server smtp.wangshibo.com
smtp_connect_timeout 30
router_id master-node
}
   
vrrp_script chk_sftp_port {
    script "/data/chk_sftp.sh" 
    interval 2                
    weight -5            
    fall 2              
    rise 1  
}
   
vrrp_instance VI_1 { 
    state MASTER
    interface eth0
    mcast_src_ip 172.16.51.191
    virtual_router_id 51 
    priority 101       
    advert_int 1            
    authentication {        
        auth_type PASS        
        auth_pass 1111       
    }
    virtual_ipaddress {         
        172.16.51.193
    }
  
track_script {                     
   chk_sftp_port     
}
}
 
 
sftp-test02服務(wù)器作為backup端的Keepalived.conf配置如下:
[root@sftp-test02 keepalived-1.3.2]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@sftp-test02 keepalived-1.3.2]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
   
global_defs {
notification_email {
[email protected]
}
   
notification_email_from [email protected]
smtp_server smtp.wangshibo.com
smtp_connect_timeout 30
router_id slave-node
}
   
vrrp_script chk_sftp_port {
    script "/data/chk_sftp.sh" 
    interval 2                
    weight -5            
    fall 2              
    rise 1  
}
   
vrrp_instance VI_1 { 
    state BACKUP
    interface eth0
    mcast_src_ip 172.16.51.192
    virtual_router_id 51 
    priority 99       
    advert_int 1            
    authentication {        
        auth_type PASS        
        auth_pass 1111       
    }
    virtual_ipaddress {         
        172.16.51.193
    }
  
track_script {                     
   chk_sftp_port     
}
}
 
編寫(xiě)sftp監(jiān)控腳本(兩臺(tái)機(jī)器都要寫(xiě))
[root@sftp-test01 keepalived-1.3.2]# vim /data/chk_sftp.sh
#!/bin/bash
counter=$(/etc/init.d/sshd status|grep running|wc -l)
if [ "${counter}" = "0" ]; then
    /etc/init.d/sshd start
    sleep 2
    counter=$(/etc/init.d/sshd status|grep running|wc -l)
    if [ "${counter}" = "0" ]; then
        /etc/init.d/keepalived stop
    fi
fi
[root@sftp-test01 keepalived-1.3.2]# chmod 755 /data/chk_sftp.sh
 
3)兩臺(tái)機(jī)器都要啟動(dòng)Keepalived
[root@sftp-test01 ~]# /etc/init.d/keepalived start
[root@sftp-test02 ~]# /etc/init.d/keepalived start
 
啟動(dòng)后發(fā)現(xiàn)sftp-test01已經(jīng)有了vip資源
[root@sftp-test01 ~]# ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 02cb:8303 brd ffffff:ff
    inet 172.16.51.191/24 brd 172.16.51.255 scope global eth0
    inet 172.16.51.193/32 scope global eth0
    inet6 fe80:cbffad03/64 scope link
       valid_lft forever preferred_lft forever
 
 
4)高可用測(cè)試:
-> 先關(guān)閉sftp-test01機(jī)器的Keepalived服務(wù),發(fā)現(xiàn)vip資源就會(huì)自動(dòng)漂到sftp-test02機(jī)器上繼續(xù)提供服務(wù)。
   當(dāng)sftp-test01機(jī)器的Keepalived服務(wù)恢復(fù)后,vip資源就會(huì)自動(dòng)搶占回來(lái)。
-> 關(guān)閉sftp-test01機(jī)器的ssh服務(wù),通過(guò)腳本會(huì)自動(dòng)啟動(dòng)ssh服務(wù),當(dāng)啟動(dòng)失敗后,會(huì)強(qiáng)制關(guān)閉Keepalived服務(wù),從而實(shí)現(xiàn)vip資源的漂移!
 
注意:
在FileZilla客戶(hù)端里使用172.16.51.193的vip進(jìn)行連接。可以在FileZilla客戶(hù)端的"文件"里建立"新站點(diǎn)",協(xié)議”SFTP
登陸類(lèi)型:正常

======================================================
發(fā)現(xiàn)上面雙向?qū)崟r(shí)同步的高可用方案實(shí)施后,文件上傳到ftp目錄下的狀態(tài)有點(diǎn)問(wèn)題,有的文件上傳后大小變化嚴(yán)重以至文件損壞,無(wú)法打開(kāi)!
后面將雙向?qū)崟r(shí)同步策略關(guān)閉,往單個(gè)機(jī)器上傳文件就沒(méi)問(wèn)題,判斷是rsync+inotify雙向?qū)崟r(shí)同步造成的。

調(diào)整后的新方案:
編寫(xiě)一個(gè)監(jiān)控vip資源的腳本,當(dāng)vip在哪臺(tái)機(jī)器上時(shí),就做這臺(tái)機(jī)器到另一臺(tái)的rsync單向同步操作,并且后臺(tái)一直運(yùn)行這個(gè)腳本(通過(guò)循環(huán)語(yǔ)句保證腳本一直運(yùn)行)
放棄原來(lái)的rsync+inotify雙向?qū)崟r(shí)同步腳本!
 
腳本內(nèi)容如下:
停止之前的rsync+inotify實(shí)時(shí)監(jiān)控腳本,然后做兩臺(tái)機(jī)器的相互信任關(guān)系。
 
1)第一臺(tái)機(jī)器sftp-test01的操作
[root@sign-test01 ~]# cat /data/script/sftp_vip_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do
  NUM=`ip addr|grep 172.16.51.193|wc -l`
  if [ $NUM -eq 0 ];then
     echo "vip is not at this server" >/dev/null 2>&1
  fi
 
  if [ $NUM -eq 1 ];then
     /usr/bin/rsync -e "ssh -p22" -avpgolr --progress --delete-before /data/sftp/mysftp/ [email protected]:/data/sftp/mysftp/
  fi
 
done
 
 
[root@sign-test01 ~]# chmod 755 /data/script/sftp_vip_monit.sh
[root@sign-test01 ~]# nohup sh /data/script/sftp_vip_monit.sh &      //按ctrl+c結(jié)束
[root@sign-test01 ~]# ps -ef|grep monit
root     10581 22167  0 19:42 pts/0    00:00:00 grep monit
root     15113     1  8 17:15 ?        00:13:00 sh sftp_vip_monit.sh
 
2)第二臺(tái)機(jī)器sftp-test02
[root@sign-test02 ~]# cat /data/script/sftp_vip_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do
  NUM=`ip addr|grep 172.16.51.193|wc -l`
  if [ $NUM -eq 0 ];then
     echo "vip is not at this server" >/dev/null 2>&1
  fi
 
  if [ $NUM -eq 1 ];then
     /usr/bin/rsync -e "ssh -p22" -avpgolr --progress --delete-before /data/sftp/mysftp/ [email protected]:/data/sftp/mysftp/
  fi
 
done
 
[root@sign-test02 ~]# chmod 755 /data/script/sftp_vip_monit.sh
[root@sign-test02 ~]# nohup sh /data/script/sftp_vip_monit.sh &      //按ctrl+c結(jié)束
[root@sign-test02 ~]# ps -ef|grep monit
root     10581 22167  0 19:42 pts/0    00:00:00 grep monit
root     15113     1  8 17:15 ?        00:13:00 sh sftp_vip_monit.sh

=================創(chuàng)建sftp只讀賬號(hào)================

原則上來(lái)說(shuō),sftp賬號(hào)登錄后只能限定到其用戶(hù)家目錄下,即不能遍歷除其家目錄下之外的任何其他目錄!
sftp添加只讀賬號(hào),這里我采用的方法如下(有些復(fù)雜,但經(jīng)測(cè)試可用):
  
sftp-test01和sftp-test02兩個(gè)節(jié)點(diǎn)機(jī)操作一樣
[root@sftp-test01 ~]# useradd -g sftp -s /bin/false readftp
[root@sftp-test01 ~]# passwd readftp
  
[root@sftp-test01 ~]# mkdir /data/sftp/readftp
[root@sftp-test01 ~]# usermod -d  /data/sftp/readftp readftp
  
[root@sftp-test01 ~]# chown root:sftp /data/sftp/readftp
[root@sftp-test01 ~]# chmod 755 /data/sftp/readftp
  
# 注意將readftp下的upload目錄權(quán)限設(shè)置成寫(xiě)賬號(hào)mysftp權(quán)限,這樣readftp賬號(hào)登錄后就只有讀權(quán)限。
[root@sftp-test01 ~]# mkdir /data/sftp/readftp/upload
[root@sftp-test01 ~]# chown mysftp:sftp /data/sftp/readftp/upload
  
由于上面已經(jīng)編寫(xiě)了兩個(gè)節(jié)點(diǎn)機(jī)關(guān)于/data/sftp/mysftp/目錄的實(shí)時(shí)同步腳本sftp_vip_monit.sh
下面再在兩臺(tái)機(jī)器上編寫(xiě):本機(jī)/data/sftp/mysftp/upload/到/data/sftp/readftp/upload/目錄的實(shí)時(shí)同步腳本readftp_monit.sh
  
1)sftp-test01節(jié)點(diǎn)上
[root@sftp-test01 ~]# cd /data/script/
[root@sftp-test01 script]# vim readftp_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do
  /usr/bin/rsync -e "ssh -p22" -avpgolr --delete-before /data/sftp/mysftp/upload/ /data/sftp/readftp/upload/
done
[root@sftp-test01 script]# nohup sh readftp_monit.sh &         #按ctrl+c結(jié)束
  
  
[root@sftp-test01 script]# ps -ef|grep monit
root      5285 17061  0 11:37 pts/0    0007 sh readftp_monit.sh
root     22713 17061  0 10:42 pts/0    0029 sh sftp_vip_monit.sh
root     28893 17061  0 12:00 pts/0    0000 grep monit
  
2)sftp-test02節(jié)點(diǎn)上
[root@sftp-test02 ~]# cd /data/script/
[root@sftp-test02 script]# vim readftp_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do
  /usr/bin/rsync -e "ssh -p22" -avpgolr --delete-before /data/sftp/mysftp/upload/ /data/sftp/readftp/upload/
done
[root@sftp-test02 script]# nohup sh readftp_monit.sh &         #按ctrl+c結(jié)束
  
  
[root@sftp-test02 script]# ps -ef|grep monit
root      5285 17061  0 11:37 pts/0    0007 sh readftp_monit.sh
root     22713 17061  0 10:42 pts/0    0029 sh sftp_vip_monit.sh
root     28893 17061  0 12:00 pts/0    0000 grep monit
  
以上操作做,就能保證mysftp為寫(xiě)賬號(hào),readftp為只讀賬號(hào),思路:
a)通過(guò)mysftp賬號(hào)登錄sftp服務(wù)后,可以進(jìn)行上傳、創(chuàng)建,刪除和下載的讀寫(xiě)操作,操作的文件存在在/data/sftp/mysftp/upload目錄下,然后實(shí)時(shí)同步到
   /data/sftp/readftp/upload目錄下。
b)通過(guò)readftp賬號(hào)登錄sfto服務(wù)器,只能進(jìn)行下載的只讀操作。由于/data/sftp/mysftp/upload為mysftp權(quán)限,沒(méi)有寫(xiě)權(quán)限。而且就算可以進(jìn)行寫(xiě)操作,寫(xiě)
  之后的文件放在/data/sftp/mysftp/upload目錄下也會(huì)被覆蓋掉(因?yàn)楦鷐ysftp/upload單向?qū)崟r(shí)同步的),也即寫(xiě)操作失敗!

=================只讀賬號(hào)目錄權(quán)限的坑===================
根據(jù)上面的操作完成后, 只讀賬號(hào)readftp登錄后, 對(duì)于上傳的目錄下的文件看不到了!! 這是問(wèn)什么呢??
這是因?yàn)閞eadftp只讀賬號(hào)登錄后的/data/sftp/readftp/upload/下上傳的目錄權(quán)限不夠?qū)е碌? 應(yīng)該賦予755權(quán)限.
[root@localhost ~]# ll /data/sftp/readftp/upload/
total 72
drwxr--r-- 2 rbn sftp 4096 Feb 28 13:23 20190225
drwxr--r-- 2 rbn sftp 4096 Feb 27 12:05 20190226
-rwxr--r-- 1 rbn sftp 54 Feb 26 16:52 dir.qdp.mvfc_appo_acct_dtl.20190224.000.00.i
-rwxr--r-- 1 rbn sftp 54 Feb 26 13:51 dir.qdp.mvfc_appo_acct_dtl.20190225.000.00.i

通過(guò)/data/script/readftp_monit.sh腳本可知, /data/sftp/readftp/upload下的文件目錄權(quán)限都是同步/data/sftp/mysftp/upload的.
所以正確做法: 保證/data/sftp/mysftp/upload下的目錄一直是755權(quán)限

[root@sftp-test01 script]# vim readftp_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do
/usr/bin/rsync -e "ssh -p22" -avpgolr --delete-before /data/sftp/mysftp/upload/ /data/sftp/readftp/upload/
/bin/chmod -R 755 /data/sftp/mysftp
done

調(diào)整后, 只讀賬號(hào)readftp登錄后,上傳的目錄權(quán)限應(yīng)該是755就可以了
[root@localhost ~]# ll /data/sftp/readftp/upload/
total 72
drwxr-xr-x2 rbn sftp 4096 Feb 28 13:23 20190225
drwxr-xr-x2 rbn sftp 4096 Feb 27 12:05 20190226
-rwxr-xr-x 1 rbn sftp 54 Feb 26 16:52 dir.qdp.mvfc_appo_acct_dtl.20190224.000.00.i
-rwxr-xr-x 1 rbn sftp 54 Feb 26 13:51 dir.qdp.mvfc_appo_acct_dtl.20190225.000.00.i

================sftp日常運(yùn)維維護(hù)命令===============

cd 路徑                        更改到遠(yuǎn)程目錄的路徑
lcd 路徑                       更改到本地目錄的路徑
chgrp group path               將文件path的組更改為group
chmod mode path                將文件path的權(quán)限更改為mode
chown owner path               將文件path的屬主更改為owner
exit                           退出 sftp
help                           顯示這個(gè)幫助文本
get 遠(yuǎn)程路徑                    下載文件
ln existingpath linkpath       符號(hào)鏈接遠(yuǎn)程文件
ls [選項(xiàng)] [路徑]                顯示遠(yuǎn)程目錄列表
lls [選項(xiàng)] [路徑]               顯示本地目錄列表
mkdir 路徑                     創(chuàng)建遠(yuǎn)程目錄
lmkdir 路徑                    創(chuàng)建本地目錄
mv oldpath newpath            移動(dòng)遠(yuǎn)程文件
open [用戶(hù)@]主機(jī)[:端口]         連接到遠(yuǎn)程主機(jī)
put 本地路徑                   上傳文件
pwd                           顯示遠(yuǎn)程工作目錄
lpwd                          打印本地工作目錄
quit                          退出 sftp
rmdir 路徑                    移除遠(yuǎn)程目錄
lrmdir 路徑                   移除本地目錄
rm 路徑                       刪除遠(yuǎn)程文件
lrm 路徑                      刪除本地文件
symlink existingpath linkpath    符號(hào)鏈接遠(yuǎn)程文件
version                          顯示協(xié)議版本
 
===============================================================================
sftp [email protected]                           #ssh是默認(rèn)22端口的連接方法
sftp -o port=6666 [email protected]              #ssh是6666非默認(rèn)端口的連接方法

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9683

    瀏覽量

    87272
  • 防火墻
    +關(guān)注

    關(guān)注

    0

    文章

    429

    瀏覽量

    36072
  • 伺服器
    +關(guān)注

    關(guān)注

    1

    文章

    153

    瀏覽量

    19847
  • CentOS
    +關(guān)注

    關(guān)注

    0

    文章

    83

    瀏覽量

    14138

原文標(biāo)題:Centos下SFTP雙機(jī)高可用環(huán)境部署記錄

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux開(kāi)發(fā)_CentOS7.4服務(wù)器搭建NFS、NGINX服務(wù)器,安裝ffmpeg、Qt環(huán)境

    CentOS7.4服務(wù)器版本的環(huán)境搭建NFS服務(wù)器、安裝ffmpeg、安裝nginx服務(wù)器、部署Qt編譯環(huán)境
    的頭像 發(fā)表于 07-14 13:45 ?2071次閱讀
    Linux開(kāi)發(fā)_<b class='flag-5'>CentOS</b>7.4服務(wù)器搭建NFS、NGINX服務(wù)器,安裝ffmpeg、Qt<b class='flag-5'>環(huán)境</b>

    在Linux上配置SFTP服務(wù)

    以配置使用幾個(gè)有用的 SSH 功能,如公鑰認(rèn)證和壓縮。 它連接并登錄到指定的遠(yuǎn)程機(jī)器,然后切換到交互式命令模式,在該模式用戶(hù)可以執(zhí)行各種命令。sftp是Secure File Transfer
    發(fā)表于 07-04 06:24

    Centos7如何使用Apache部署Django項(xiàng)目

    Centos7使用Apache部署Django項(xiàng)目
    發(fā)表于 05-29 12:26

    【資料】CentOS安裝及開(kāi)發(fā)環(huán)境搭建

    CentOS安裝及開(kāi)發(fā)環(huán)境搭建回復(fù)帖子查看資料下載鏈接:[hide][/hide]
    發(fā)表于 08-16 10:51

    可用雙機(jī)系統(tǒng)的有限自動(dòng)機(jī)

    【摘要】介紹了提供可用性的雙機(jī)系統(tǒng)的原理、部署和體系結(jié)構(gòu);定義了雙機(jī)系統(tǒng)各部件功能,描述了子系統(tǒng)間的接口,給出了該
    發(fā)表于 03-15 13:56 ?10次下載

    Oralce 11.2.0.4 RAC for CENTOS 7.x 最佳安裝部署手冊(cè)

    Oralce 11.2.0.4 RAC for CENTOS 7.x 最佳安裝部署手冊(cè)
    發(fā)表于 09-07 14:20 ?11次下載
    Oralce 11.2.0.4 RAC for <b class='flag-5'>CENTOS</b> 7.x 最佳安裝<b class='flag-5'>部署</b>手冊(cè)

    雙機(jī)熱備和冷備的區(qū)別

    雙機(jī)熱備特指基于可用系統(tǒng)中的兩臺(tái)服務(wù)器的熱備(或可用),因兩機(jī)
    發(fā)表于 11-21 15:15 ?4.3w次閱讀
    <b class='flag-5'>雙機(jī)</b>熱備和冷備的區(qū)別

    通過(guò)安裝該Linux-HA軟件可以實(shí)現(xiàn)Linux雙機(jī)系統(tǒng)的可用性解決方案

    簡(jiǎn)介通過(guò)安裝該Linux-HA軟件,可以實(shí)現(xiàn)Linux雙機(jī)系統(tǒng)的可用性解決方案,實(shí)現(xiàn)雙機(jī)系統(tǒng)的熱備份,這篇文章對(duì)于HA做了一個(gè)詳細(xì)的解讀。
    的頭像 發(fā)表于 12-20 14:24 ?7867次閱讀
    通過(guò)安裝該Linux-HA軟件可以實(shí)現(xiàn)Linux<b class='flag-5'>雙機(jī)</b>系統(tǒng)的<b class='flag-5'>高</b><b class='flag-5'>可用</b>性解決方案

    干貨:Centos 6.5部署nginx和php環(huán)境部署

    干貨:Centos 6.5部署nginx和php環(huán)境部署
    的頭像 發(fā)表于 06-28 10:00 ?2447次閱讀

    CentOS配置Apache+PHP+MySQL

    CentOS配置Apache+PHP+MySQL(開(kāi)關(guān)電源技術(shù)課程設(shè)計(jì)buckboost)-文檔為CentOS配置Apache+PHP+MySQL詳解文檔,是一份不錯(cuò)的參考資料,感
    發(fā)表于 09-18 15:10 ?11次下載
    <b class='flag-5'>CentOS</b><b class='flag-5'>下</b>配置Apache+PHP+MySQL

    部署Jenkins服務(wù)時(shí)如何保障服務(wù)的可用性呢?

    現(xiàn)在的企業(yè)很多都在用Jenkins做持續(xù)集成,各個(gè)業(yè)務(wù)端都依靠Jenkins,vivo Devops也是使用Jenkins來(lái)進(jìn)行持續(xù)構(gòu)建,部署Jenkins服務(wù)時(shí)如何保障服務(wù)的可用變得尤為重要。
    的頭像 發(fā)表于 02-14 17:02 ?3671次閱讀

    CentOS7中使用一鍵腳本部署Librenms網(wǎng)絡(luò)監(jiān)控系統(tǒng)

    今天在CentOS7使用一鍵腳本部署Librenms網(wǎng)絡(luò)監(jiān)控系統(tǒng)。
    的頭像 發(fā)表于 09-14 09:27 ?1624次閱讀
    <b class='flag-5'>CentOS</b>7中使用一鍵腳本<b class='flag-5'>部署</b>Librenms網(wǎng)絡(luò)監(jiān)控系統(tǒng)

    怎么下載centos鏡像文件

    CentOS 是一個(gè)基于 Linux 的操作系統(tǒng),它是一種穩(wěn)定、強(qiáng)大且易于使用的發(fā)行版。CentOS 鏡像文件是用于安裝和部署 CentOS 操作系統(tǒng)的文件。在本文中,我們將詳細(xì)介紹如
    的頭像 發(fā)表于 11-23 10:48 ?1545次閱讀

    SFTP協(xié)議的安全性分析

    基于SSH(Secure Shell)協(xié)議的文件傳輸協(xié)議,它提供了一種安全、可靠的文件傳輸方式。 SFTP協(xié)議概述 SFTP協(xié)議是一種網(wǎng)絡(luò)協(xié)議,用于在不安全的網(wǎng)絡(luò)環(huán)境中安全地傳輸文件。它是SSH協(xié)議的一個(gè)擴(kuò)展
    的頭像 發(fā)表于 11-13 14:10 ?1810次閱讀

    SFTP在云存儲(chǔ)中的應(yīng)用

    ,并且支持用戶(hù)身份驗(yàn)證。 2. SFTP在云存儲(chǔ)中的應(yīng)用 2.1 數(shù)據(jù)安全 在云存儲(chǔ)環(huán)境中,數(shù)據(jù)安全是首要考慮的因素。SFTP通過(guò)加密傳輸通道,確保數(shù)據(jù)在傳輸過(guò)程中不被截獲或篡改。這對(duì)于保護(hù)敏感數(shù)據(jù),如財(cái)務(wù)信息、客戶(hù)資料等至關(guān)重
    的頭像 發(fā)表于 11-13 14:16 ?596次閱讀