阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 1613阅读
  • 1回复

[大牛分享]镭速(Raysync)文件传输高可用安装部署介绍!

级别: 程序猿
发帖
252
云币
432
te'*<HM  
使用HeartBeat实现高可用HA的配置。HA即(high available)高可用,又被叫做双机热备,用于关键性业务。简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务。常见的实现高可用的开源软件有 heartbeat 和 keepalived。 (F8AL6  
6[?}6gQ  
1q]c7"  
一、准备实验环境 s, XM9h>P4  
VPd,]]S5(  
A}G|Yfn  
服务器A: " s]y!BLk  
主机名:Master01 FFe) e>bH  
操作系统:CentOS6.8 64位 )i!^]|$   
eth0网卡地址:10.60.196.178 #D)x}#V\  
A/ 0qk  
 r(`nt-o@  
服务器B: K{b-TT 4  
主机名:Slave01 >V!LitdJ  
操作系统:CentOS6.8 64位 ',mW`ZN  
eth0网卡地址:10.60.196.179 2P5_zND  
虚拟VIP: qY# d+F,t  
VIP:10.60.196.180 2 F?kjg,  
AS;.sjgk  
;V.vfar  
二、设置主机名 U:lv^ QPG  
 @Fx@5e  
_Bk U+=|J  
master节点设置hostname zWIeHIt  
hostname Master01 vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Master01 m0( E kK  
vim /etc/hosts G6O/(8  
^7u#30,}3~  
fLB1)kTS  
编辑配置文件: n33kb/q*  
10.60.196.178 Master01 ?R6`qe_F  
10.60.196.179 Slave01 vA-PR&  
# vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Master01 |}S1o0v{(a  
slave节点设置hostname E $6ejGw-  
# hostname Slave01 WE.Tuo5L  
vim /etc/hosts B\_[R'Pf&  
R&So4},B  
=nhzMU9c\y  
编辑配置文件: {Y_Nj`#BT  
10.60.196.178 Master01 eXzXd*$S  
10.60.196.179 Slave01# vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Slave01 |.w;r   
F6dr  
o'Y#H r)/  
三、关闭2台服务器的防火墙 }kPVtSQ  
-p8e  
E`)Qs[?Gk  
关闭iptables xzikD,FV  
# iptables -F # service iptables save # service iptables stop xo~g78jm7,  
关闭selinux: <lo`q<q  
# setenforce 0 # sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config *K)0UKBr  
A3s57.Z]|  
~@fR[sg<  
四、安装heartbeat (2台都操作) J}@GKNm  
}O*WV1  
D'L{wm  
# yum install -y epel-release C1QWU5c v  
# yum install -y heartbeat* libnet ~3=2=Uf  
kaFnw(xa  
o#e7,O  
五、主Master01节点配置 oVkr3K Z  
'h}7YP, w  
xNgt[fLpS  
1、拷贝配置文件: kp`0erJqw  
# cd /usr/share/doc/heartbeat-3.0.4/ # cp authkeys ha.cf haresources /etc/ha.d/ # cd /etc/ha.d sXB+s  
%dmfBf Ev  
q^Inb)FeN  
2、修改authkeys: ou6j*eSN  
# vim authkeys 更改或增加如下内容: auth 33 md5 Hello!然后修改其权限 # chmod 600 authkeys 0QoLS|voA/  
UC|JAZL  
M=%!IT  
3、编辑haresources文件: E@pFTvo  
# vim haresources加入下面一行:Master01  10.60.196.180/24/eth0:0  raysync Z#7U "G-A  
说明:master为主节点hostname,10.60.196.180为vip,/24为掩码为24的网段,eth0:0为vip的设备名,httpd为heartbeat监控的服务,也是两台机器对外提供的核心服务。改行指定在启动时,节点得到vip,并启动httpd,在停止时heartbeat首先停止httpd,然后释放vip。 xOIg|2^8  
S=O$JP79  
B01^oYM}  
4、编辑ha.cf: F+*Q <a4  
# vim ha.cf 修改为如下内容: RpN <=  
logfile /var/log/ha-log e\.HWV]I  
logfacility local0 GP]TnQ<*;  
keepalive 2 N84qcc  
deadtime 30 C1 {ZW~"YI  
warntime 10 xjrlc9  
initdead 120 8IJ-]wHIb  
udpport 694 BD'NuI  
ucast eth0 10.60.196.179  UTX](:TC  
auto_failback on Tc_do"uU  
node Master01 ysVi3eq  
node Slave01 1;`Fe":;vC  
ping 10.60.196.254 ~ B]jV$=  
respawn hacluster /usr/lib64/heartbeat/ipfail 6Ahr_{  
[B,p,Q"  
o^PuhVu  
5、配置说明: NL-_#N$  
logfile /var/log/ha-log:heartbeat的日志文件。 Y)OBTX  
keepalive 2:心跳的时间间隔,默认时间单位为秒s。 8t\}c6/3"  
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。 ai^t= s  
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。 "Q?_ EEn  
initdead 120:在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍。 _H2tZ%RM  
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。 $WClpvVj  
ucast eth0 10.60.196.179:设置对方机器心跳检测的网卡和IP。 <Wf0QO,  
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则动获取资源并取代从节点,否则不取代从节点。 QQ~23TlA  
respawn heartbeat /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。 0BDoBR  
{? 2;0}3?;  
;q &0,B  
六、把主节点上的三个配置文件拷贝到从节点 P57GqT  
tj0Qr-/  
',#   
# cd /etc/ha.d # scp authkeys ha.cf haresources root@Slave01:/etc/ha.d %-r?=L  
\-d '9b?  
vG3M5G  
七、从节点slave编辑ha.cf dm  2EH  
ZR6&AiL(Bj  
8? F 2jv  
# vim /etc/ha.d/ha.cf GVZTDrC  
只需要更改一个地方如下:ucast eth0 10.60.196.179改为ucast eth0 10.60.196.180 Tplg2p% k  
GjLW`>  
B6uRJcD4  
八、启动heartbeat服务 FSe5k5  
My],6va^  
i=V-@|Z  
配置完毕后,先Master01启动,后Slave01启动。 v!KJ|c@m  
# service heartbeat start aC}p^Nkr"k  
FXxN>\76.  
tbS#^Y  
九、更改vip路由脚本 IE}Sdeqi)  
tStJ2-5*t  
IOS^|2:,  
1、创建routecheck.sh脚本 e]Puv)S>{8  
oo\IS\  
5DUi4 Cbgy  
vim /root/bin/routecheck.sh }\ EL;sT  
#!/bin/bash ys/vI/e\  
source /etc/profile *iYMX[$  
for((i=1;i<=30;i++)) 1NW>wo  
do 3+j^E6@  
ifconfig|grep eth0:0 OFp#<o,p  
a=$? vLr&ay!w  
ip route show |grep 10.60.196.180 >r~|1kQ.  
b=$? g(1"GKg3K  
ip route show|grep 10.60.196.254 16L"^EYq  
c=$? X&/(x  
#vip存在,且vip没有路由就更改路由 pA*i!.E/b  
if [[ $a == 0 ]] && [[ $b != 0 ]];then pRb<wt7v  
route del  default gw 10.60.196.254  && ip route add 0.0.0.0/0 via 10.60.196.254 dev eth0  src 10.60.196.180 o16d`}/<  
fi @f\ X4!e*y  
#vip不存在,默认网关不存在就重启网卡 M`(;>Kp7  
if [[ $a != 0 ]] && [[ $c != 0 ]];then \_?yzgf  
ip route add 0.0.0.0/0 via 10.60.196.254 dev eth0 ,Io0ZE>`V  
fi } mgVC  
sleep 2 vu44!c@  
done $vz_%Y  
$f9 ,##/  
y)IGTW o  
2、定时运行 LMt0'Ml9  
$x/J+9Ww  
C"k2<IE  
crontab -e \ =S3 L<  
*/1 * * * * bash /root/bin/routecheck.sh > /dev/null n<=y"*  
Xad G\_?t`  
ShsJ_/C2  
十、RaySync自启动脚本 gfV]^v  
uwmoM>I W^  
 y/z9Ce*>  
cat /etc/init.d/raysync u<x[5xH+  
#!/bin/bash =CWc`  
# jQO* oq}  
# description: setup RaySync service  b$PT_!d  
# Version: 0.1.0 X >3iYDe  
# Date: 2018-02-06 dBsRm{aS  
# Author: lirou<lirou@rayvision.com> +Kxe ymwr2  
#  <WO&$&  
]r"31.w(  
IvY,9D  
# chkconfig: - 87 17 tq2-.]Y@U  
source /etc/profile -bv>iIC  
. /etc/rc.d/init.d/functions wgC??Be;ut  
ZD$-V 3e`  
VaOpO8y`  
set -e MtMvpHk  
#set -x :!r9 =N9  
export LANG=en_US.UTF-8 A@9U;8k  
export LC_ALL=en_US.UTF-8 LsuAOB 8  
53g8T+`\(  
|#Yu.c*  
if [ $# -ne 1 ];then W;xW: -  
echo "Error Usage: service $(basename $0) [ start | stop | status | restart ]" p.6$w:eV  
exit 3 GN"M:L ^k`  
w`H.ey  
/vFxVBX  
fi 0"wbcAh)  
S3%.-)ib  
r[C3u[  
BASE_DIR= ;oN{I@}k  
PID_DIR= hP'~  
@m !9"QhC  
.y/NudD  
if [[ "x$BASE_DIR" == "x" ]];then 2?#y |/  
BASE_DIR=/opt/RaySync ae9k[=-  
fi Im0+`9Jw  
CSd9\V  
rw}5nv  
RAYSYNC_CONF=$BASE_DIR/config/config.ini wiK@o$S-  
DK#65H'  
}J'5EAp  
if ! [ -d $(dirname $RAYSYNC_CONF) ];then "w:\@Jwu(  
install -d -m 755 $(dirname $RAYSYNC_CONF) zm;*:]S  
fi ims=-1,  
$ ufSNx(F  
E :'  
0`g}(}'L  
Pq[0vZ_}dN  
if [[ "x$PID_DIR" == "x" ]];then Cn6n4, 0  
PID_DIR=/var/run/raysync qH {8n`  
mkdir -pv $PID_DIR &>/dev/null &kXGWp  
fi M2zos(8g  
<'o'H  
T}b( M*E  
#MONITOR_PID=$PID_DIR/monitor.pid O3<Y_I^  
MONITOR_LOCKFILE=$PID_DIR/monitor.lock _x,-d|9b d  
RAYSYNC_SERVER_LOCKFILE=$PID_DIR/raysync-server.lock ]P}K3tN%]  
RAYSYNC_PROXY_SERVER_LOCKFILE=$PID_DIR/raysync-proxy.lock Up!ZCZ$RC  
+hyWo]nW0  
*$4A|EA V  
MONITOR_BIN_NAME= E{+c*sz  
RAYSYNC_SERVER_BIN_NAME= pdcwq~4~%  
RAYSYNC_PROXY_SERVER_BIN_NAME= j-C42Pfr  
cc2oFn  
<De3mZb  
if [[ "x$MONITOR_BIN_NAME" == "x" ]];then 6b+ Wl Ib  
MONITOR_BIN_NAME=monitor p0y0T|H^  
fi Hq"<vp  
H[_uVv;}6  
J?n)FgxS  
if [[ "x$RAYSYNC_SERVER" == "x" ]];then tmY-m,U  
RAYSYNC_SERVER_BIN_NAME=RaySyncServer kb}]sj  
fi 3<UDVt@0  
Q 2SSJ  
VT.{[Kl  
if [[ "x$RAYSYNC_PROXY_SERVER" == "x" ]];then )o'U0rAx|a  
RAYSYNC_PROXY_SERVER_BIN_NAME=RaySync-Proxy-Server Z.Y;[Y  
fi jFPE>F7-M  
!+|N<`  
mb*h73{{  
start() { n%MYX'0  
if ! [ -s $RAYSYNC_CONF ];then Cf1wM:K|8  
echo "Error: don't have configure file in $RAYSYNC_CONF path." meM.?kk(  
fi ubN"(F:!-S  
M\.T 0M_  
Zh~Lm  
if ! [ -f $MONITOR_LOCKFILE ]; then :86luLFm  
# nohup ${BASE_DIR}/${MONITOR_BIN_NAME} &>/dev/null & ,C'w(af@}  
nohup ${BASE_DIR}/${MONITOR_BIN_NAME} >/dev/null 2>&1 & GZhfA ;O,  
sleep 1 Mp=kZs/  
if [[ "x$(ps aux | grep -i monitor | grep -v -i grep )" == "x" ]];then D-+)M8bt  
echo -e "monitor setup fail" && failure j@?[vi  
else LN3dp?;_{  
touch $MONITOR_LOCKFILE 7^t(RNq  
fi v[yTk[zd0  
fi Ag-?6v  
echo -e " monitor is running: " && success U37?P7i's  
gq:TUvX  
b=QGbFf  
if ! [ -f $RAYSYNC_SERVER_LOCKFILE ];then [TfV2j* e  
nohup $BASE_DIR/RaySyncServer >/dev/null 2&>1 & f$S QhK5`  
sleep 1 []N$;~R7  
if [[ "x$(ps aux | grep RaySyncServer | grep -v -i 'grep' )" == "x" ]];then +_XbHjhN/  
echo -e "RaySyncServer setup fail" && failure 7%"\DLA  
else !wb~A0m  
touch $RAYSYNC_SERVER_LOCKFILE >LaL! PnZ  
fi g /@yK  
fi -x%`Wv@L  
echo -e " RaySyncServer is running" && success DGfQo5#  
'hi\98y  
=UKR<@QrK  
if ! [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then Q3O .<9S  
#nohup $BASE_DIR/proxy/$RAYSYNC_PROXY_SERVER_BIN_NAME >/dev/null 2&>1 Rd1ku=  
#echo "nohup $BASE_DIR/proxy/$RAYSYNC_PROXY_SERVER_BIN_NAME >/dev/null 2&>1" -S3+ h$Y8  
sleep 1 jUR #  
if [[ "x$(ps aux | grep RaySync-Proxy-Server )" == "x" ]];then v7OV;e a$  
echo -e "RaySync-Proxy-Server setup fail" && failure #M9D" <pn}  
else GxDF7 z%&  
touch $RAYSYNC_PROXY_SERVER_LOCKFILE NUnc"@  
fi &MQt2aL  
fi rn5g+%jX*  
echo -e " RaySync-Proxy-Server is running" && success k42ur)pb  
} 68GGS`&  
KJJb^6P48W  
L(n~@ gq  
stop() { Z *<x  
if [ -f $MONITOR_LOCKFILE ];then F*].  
# killall $MONITOR_BIN_NAME CU`Oc>;*T  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -9 >/dev/null 2&>1 :E&T}RN  
rm -f $MONITOR_LOCKFILE Qp.!U~  
fi =bg&CZV T  
echo -e "monitor stopped" && success 'U{: zBh  
W#\};P  
7>@/*S{X  
if [ -f $RAYSYNC_SERVER_LOCKFILE ];then qe"6#@b *|  
#kill $(echo $RAYSYNC_SERVER_PID) W#_gvW  
# killall $RAYSYNC_SERVER_BIN_NAME 5a|m}2IX  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -9 >/dev/null 2&>1 P:-/3  
rm -f $RAYSYNC_SERVER_LOCKFILE {ro!OuA  
fi O8N0]Mz  
echo -e "RaySyncServer stopped" && success `&[:!U2]F  
}ZVv  
PyxN_agf  
# result_Proxy=`ps -ef|grep ${RAYSYNC_PROXY_SERVER_BIN_NAME}|grep -v grep` =LY^3TlDj  
# if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ] || [ $result_Proxy != "" ];then :O+b4R+  
if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then @%G"i:HZ&  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -2 >/dev/null 2&>1 A'-YwbY  
echo ${RAYSYNC_PROXY_SERVER_BIN_NAME} 2LH;d`H[0  
rm -f $RAYSYNC_PROXY_SERVER_LOCKFILE 5qfKV&D  
fi -t'oW*kdL  
echo -e "RaySync-Proxy-Server stopped" && success |Pl{Oo+  
} dB)hW'J?  
E^W*'D  
*"sDaN0@R  
status() { }e =GvWGa  
if [ -f $MONITOR_LOCKFILE ];then :BxYaAVt^  
echo " monitor is running" X&oy.Roo  
else  /r@  
echo " monitor stopped" 7#. PMyK9  
fi Prx s2 i 8  
3Il/3\  
,;pX.Ob U  
if [ -f $RAYSYNC_SERVER_LOCKFILE ];then 7:E#c"S q  
echo " RaySyncServer is running" 2MzFSmhc"  
else }(}vlL  
echo " RaySyncServer stopped" Riuv@i^6K  
fi ~0GX~{;r  
zGz'2, o3  
U zHhU*nW  
if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then NfN6KDd]2L  
echo " RaySync-Proxy-Server is running" &YP>" <  
else jAHn`Bxz  
echo " RaySync-Proxy-Server stopped" H1i4_T  
fi 1U9N8{xg9  
} N ] /d  
Jn&>Z? @  
_'dy$.g  
case $1 in 8Kkr1}!wd  
start) sswAI|6ou  
start %t.IxMY  
;; xmd$Jol^  
stop) LgKEg90w(  
stop )3 ">%1R  
;; qZ1PC>  
status) iqP0=(^m  
status r T$g^  
;; N Z9,9  
restart) [c )\?MWW  
stop -ouL4  
sleep 2 S]@iS[|?  
start <)rH8]V  
;; rn*VL(Yd(  
*) sRI8znus  
echo "Error Usage: service $(basename $0) [ start | stop | status | restart ]" -bQvJ`iF  
exit 3 RlI qH;n  
esac .gg0:  
Gl1$W=pR:  
lR^Qm|  
以上是关于镭速文件传输软件的高可用安装部署详细介绍!
级别: 新人
发帖
4
云币
6
只看该作者 沙发  发表于: 03-18
Re镭速Raysync文件传输高可用安装部署介绍!
这个用的人应该不多吧?
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)