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

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

级别: 程序猿
发帖
252
云币
432
>Hr0ScmN@"  
使用HeartBeat实现高可用HA的配置。HA即(high available)高可用,又被叫做双机热备,用于关键性业务。简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务。常见的实现高可用的开源软件有 heartbeat 和 keepalived。 ;mXr])J  
-4JdK O  
7CGKm8T  
一、准备实验环境 wR;_x x  
-IR9^)  
vXnTPjbE  
服务器A: lA39$oJ  
主机名:Master01 ?Rl?Pp=>  
操作系统:CentOS6.8 64位 877>=Tp |  
eth0网卡地址:10.60.196.178 ,=tVa])  
w+cI0lj  
9-+6Ed^2  
服务器B: 1anV!&a<K(  
主机名:Slave01 .cA[b  
操作系统:CentOS6.8 64位 xA nAW  
eth0网卡地址:10.60.196.179 2-| oN/FD  
虚拟VIP: G}<q  
VIP:10.60.196.180 GYiUne $  
AZ5c^c)  
@:i>q$aF  
二、设置主机名 >RxZ-.,a  
Rww"Z=F  
$Q|66/S^  
master节点设置hostname 0Bn$C, -  
hostname Master01 vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Master01 ]?U:8%  
vim /etc/hosts nX>k}&^L  
^HHJ.QR  
hHoc7  
编辑配置文件: ?x]T &S{  
10.60.196.178 Master01 J3Q.6e=7  
10.60.196.179 Slave01 +D1;_DU  
# vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Master01 yPm)r2Ck  
slave节点设置hostname 4;|&}Ij  
# hostname Slave01 u=#!je  
vim /etc/hosts XH)MBr@Fz  
c*!bT$]~\  
W"|89\p}  
编辑配置文件: $,icKa   
10.60.196.178 Master01 lXm]1 *<  
10.60.196.179 Slave01# vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Slave01 +98~OInySZ  
8Md*9E#J("  
 ~J"*ahl  
三、关闭2台服务器的防火墙 dW!T.S  
eUqsvF}l!  
av wU)6L  
关闭iptables *8"5mC ;"  
# iptables -F # service iptables save # service iptables stop sBF>a|  
关闭selinux: P 2;j>=W  
# setenforce 0 # sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config b#k$/A@  
"xS",6Sy  
2hf]XV\  
四、安装heartbeat (2台都操作) XXmtpM8  
^l_W9s  
G?=X!up(  
# yum install -y epel-release IcPIOCmOc  
# yum install -y heartbeat* libnet rtf>\j+  
i/oaKpPN  
Qo)>i0  
五、主Master01节点配置 ~|Gtm[9Ru  
Dw;L=4F |  
HnioB=fc  
1、拷贝配置文件: D4n ~ 2]  
# cd /usr/share/doc/heartbeat-3.0.4/ # cp authkeys ha.cf haresources /etc/ha.d/ # cd /etc/ha.d YG?W8)T  
|; {wy  
`6 lc]r  
2、修改authkeys: v.\1-Q?  
# vim authkeys 更改或增加如下内容: auth 33 md5 Hello!然后修改其权限 # chmod 600 authkeys 7u\^$25+h  
C/_W>H_   
E+>Qpy  
3、编辑haresources文件: O>|Q Zd  
# vim haresources加入下面一行:Master01  10.60.196.180/24/eth0:0  raysync Aq QArSu,  
说明:master为主节点hostname,10.60.196.180为vip,/24为掩码为24的网段,eth0:0为vip的设备名,httpd为heartbeat监控的服务,也是两台机器对外提供的核心服务。改行指定在启动时,节点得到vip,并启动httpd,在停止时heartbeat首先停止httpd,然后释放vip。  $C(}  
z9&$Xao  
tQz-tQg  
4、编辑ha.cf: "-A@>*g  
# vim ha.cf 修改为如下内容: O)`R)MQ)  
logfile /var/log/ha-log GJ ZT~  
logfacility local0 ?8b?{`@V  
keepalive 2 hUB _[#8#  
deadtime 30 J'b *^K  
warntime 10 m}Kn!21  
initdead 120 MPT*[&\-  
udpport 694 5R/k -h^`  
ucast eth0 10.60.196.179 t~Cul+  
auto_failback on m+"?;;s  
node Master01 .1[K\t)2  
node Slave01 qx5.LiF  
ping 10.60.196.254 B;2os^*  
respawn hacluster /usr/lib64/heartbeat/ipfail ; R&wr _%  
yFH)PQ_  
EUu"H` E+  
5、配置说明: ;l7wme8Qk  
logfile /var/log/ha-log:heartbeat的日志文件。 %mt|Dl  
keepalive 2:心跳的时间间隔,默认时间单位为秒s。 m/Q@-  
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。 Q(T)s  
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。 t(/e~w  
initdead 120:在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍。 'n#;~  
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。 i~MCY.F  
ucast eth0 10.60.196.179:设置对方机器心跳检测的网卡和IP。 Ym8G=KA  
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则动获取资源并取代从节点,否则不取代从节点。 SZzS$6 t  
respawn heartbeat /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。 T7'njaLec  
m@u!frE,  
fJH09:@^%  
六、把主节点上的三个配置文件拷贝到从节点 V; Yl:*  
u-qg9qXJb  
wbyY?tH  
# cd /etc/ha.d # scp authkeys ha.cf haresources root@Slave01:/etc/ha.d Wr a W  
o6 'I%Gs  
B-@6m  
七、从节点slave编辑ha.cf \rF6"24t6  
Nh^T,nv*l  
p&>*bF,  
# vim /etc/ha.d/ha.cf hJ (Q^Z  
只需要更改一个地方如下:ucast eth0 10.60.196.179改为ucast eth0 10.60.196.180 S1E =E5  
[V|,O'X ~  
cuO(*%Is1  
八、启动heartbeat服务 >8"oO[U5>  
ra0:Lg'  
GLp2 ?fon  
配置完毕后,先Master01启动,后Slave01启动。 rr>QG<i;G  
# service heartbeat start jr|(K*;  
%g5TU 6WP  
v~H1Il_+  
九、更改vip路由脚本 %[u6<  
zH0%; o}  
XI} C|]#  
1、创建routecheck.sh脚本 Z3g6 ?2w6  
2?u>A3^R  
o]t6u .L  
vim /root/bin/routecheck.sh w},' 1  
#!/bin/bash ig4wwd@|  
source /etc/profile +dX1`%RR[  
for((i=1;i<=30;i++)) Dd-;;Y1C  
do HJhPd#xCW  
ifconfig|grep eth0:0 5+vCuVZ  
a=$? %<lfe<;^t  
ip route show |grep 10.60.196.180 ([R}s/)$  
b=$? q#:,6HDd  
ip route show|grep 10.60.196.254 x|d Xa0=N_  
c=$? 7!+kyA\}r^  
#vip存在,且vip没有路由就更改路由 X,: pT\G  
if [[ $a == 0 ]] && [[ $b != 0 ]];then rlT[tOVAY  
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 h!5^d!2,  
fi %C\Q{_AS  
#vip不存在,默认网关不存在就重启网卡 l+Dl~o}  
if [[ $a != 0 ]] && [[ $c != 0 ]];then ` wuA}v3!  
ip route add 0.0.0.0/0 via 10.60.196.254 dev eth0 Fvf308[  
fi Y]/(R"-2G  
sleep 2 WMnR+?q  
done $e& ( ncM  
c9-$t d&  
)SQ*"X4"  
2、定时运行 a\S"d  
Vc.A <(  
C7[ge&  
crontab -e X&o!xV -+  
*/1 * * * * bash /root/bin/routecheck.sh > /dev/null @[#U_T- I  
0,)B~|+  
.F:qJ6E  
十、RaySync自启动脚本 vpcHJ^19  
nr*~R-,\  
TU&6\]yF_  
cat /etc/init.d/raysync !4GG q  
#!/bin/bash F(>']D9$.  
# #/$}zl  
# description: setup RaySync service R#i|n< x  
# Version: 0.1.0 aehGT|  
# Date: 2018-02-06 qg#TE-Y`  
# Author: lirou<lirou@rayvision.com> OSk:njyC[  
# ;F9<Yv  
RBIf6oxdE  
eZWN9#p2  
# chkconfig: - 87 17 LI_>fuv"8  
source /etc/profile #c@Dn.W  
. /etc/rc.d/init.d/functions _+g5;S5  
]y3V ^W#  
:-ZE~b HJ  
set -e Y$b4Ga9j  
#set -x :_JZn`Cab  
export LANG=en_US.UTF-8 vn|u&}h  
export LC_ALL=en_US.UTF-8 @GqPU,RO  
tRRPNY  
hO(8v&ns3  
if [ $# -ne 1 ];then jK/2n}q&]  
echo "Error Usage: service $(basename $0) [ start | stop | status | restart ]" [H;HrwM s)  
exit 3 JW9^C  
3dfG_a61y  
)QE7$|s  
fi .w/#S-at  
>Z?fX  
TU$PAwn=  
BASE_DIR= jT"P$0sJAd  
PID_DIR= !Rk1q&U5  
m6^Ua  
35z]pn%L  
if [[ "x$BASE_DIR" == "x" ]];then kK&tB  
BASE_DIR=/opt/RaySync :,"dno7OQ  
fi JL $6Fw;  
_F>1b16:/P  
txQyHQ)@  
RAYSYNC_CONF=$BASE_DIR/config/config.ini kv&%$cA  
kf\n  
\eF5* {9  
if ! [ -d $(dirname $RAYSYNC_CONF) ];then w]]`/`  
install -d -m 755 $(dirname $RAYSYNC_CONF) -q' np0H  
fi uMa: GDh7  
9 \i;zpN\  
Q1EY!AV8  
fv$Y&_,5  
0/hX3h  
if [[ "x$PID_DIR" == "x" ]];then '&#`?\CXX  
PID_DIR=/var/run/raysync uXq?Z@af|f  
mkdir -pv $PID_DIR &>/dev/null /*p4(D_A  
fi o_&.R  
c\FyX\ i  
N[X%tf\L]F  
#MONITOR_PID=$PID_DIR/monitor.pid f Z$<'(t  
MONITOR_LOCKFILE=$PID_DIR/monitor.lock QT{$2 7;  
RAYSYNC_SERVER_LOCKFILE=$PID_DIR/raysync-server.lock 58zs% +F  
RAYSYNC_PROXY_SERVER_LOCKFILE=$PID_DIR/raysync-proxy.lock vb/*ILS  
b7R#tT  
 84L!r  
MONITOR_BIN_NAME= 9\3%5B7  
RAYSYNC_SERVER_BIN_NAME= g0I<Fan  
RAYSYNC_PROXY_SERVER_BIN_NAME= !+& NG&1  
&b,.W; +  
piJ/e  
if [[ "x$MONITOR_BIN_NAME" == "x" ]];then {YZ)IaqZ  
MONITOR_BIN_NAME=monitor *LcLYxWo  
fi EceZ1b  
-cyJj LL*  
8(ny^]v|  
if [[ "x$RAYSYNC_SERVER" == "x" ]];then n>>hfxv(O!  
RAYSYNC_SERVER_BIN_NAME=RaySyncServer U y^Hh4|  
fi toPA@V  
+ EG.p  
nkHr(tF 7  
if [[ "x$RAYSYNC_PROXY_SERVER" == "x" ]];then R<LW*8  
RAYSYNC_PROXY_SERVER_BIN_NAME=RaySync-Proxy-Server J9ovy>G  
fi Uo(\1&?  
*{W5QEa  
9 pE)S^P  
start() { \sHM[n F0  
if ! [ -s $RAYSYNC_CONF ];then I /3=~;u  
echo "Error: don't have configure file in $RAYSYNC_CONF path." m hJ>5z  
fi ]]o7ej  
%s$_KG!&  
V'c9DoSRI\  
if ! [ -f $MONITOR_LOCKFILE ]; then ]@l~z0^|[_  
# nohup ${BASE_DIR}/${MONITOR_BIN_NAME} &>/dev/null & H(Mlf  
nohup ${BASE_DIR}/${MONITOR_BIN_NAME} >/dev/null 2>&1 & V5KAiG<d  
sleep 1 xp/u, q  
if [[ "x$(ps aux | grep -i monitor | grep -v -i grep )" == "x" ]];then eC9~ wc  
echo -e "monitor setup fail" && failure RTA9CR)JP4  
else v|_?qBs"  
touch $MONITOR_LOCKFILE lO%Z4V_Mj  
fi l*_b)&CH  
fi T1PWFw\GH  
echo -e " monitor is running: " && success IK{0Y#c  
ec1snMY  
S) V uT0  
if ! [ -f $RAYSYNC_SERVER_LOCKFILE ];then ( NjX?^  
nohup $BASE_DIR/RaySyncServer >/dev/null 2&>1 & v7O{8K+  
sleep 1 %P_\7YBC>  
if [[ "x$(ps aux | grep RaySyncServer | grep -v -i 'grep' )" == "x" ]];then &IT'%*Y:V  
echo -e "RaySyncServer setup fail" && failure <WaiJy?  
else ~/3cQN^  
touch $RAYSYNC_SERVER_LOCKFILE #` z!f0 P  
fi 4TG|  
fi ++,mM7a  
echo -e " RaySyncServer is running" && success ,~K_rNNZ  
( 4ow0}1  
Q C~~  
if ! [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then 'P@a_*I  
#nohup $BASE_DIR/proxy/$RAYSYNC_PROXY_SERVER_BIN_NAME >/dev/null 2&>1 -# <,i '  
#echo "nohup $BASE_DIR/proxy/$RAYSYNC_PROXY_SERVER_BIN_NAME >/dev/null 2&>1" sf\;|`}  
sleep 1 A6iyJFm D  
if [[ "x$(ps aux | grep RaySync-Proxy-Server )" == "x" ]];then V$q%=Sip  
echo -e "RaySync-Proxy-Server setup fail" && failure Y141Twjvd  
else b% $S6.  
touch $RAYSYNC_PROXY_SERVER_LOCKFILE iCAd7=o  
fi nkJ*$cT1o  
fi t T-]Vj.  
echo -e " RaySync-Proxy-Server is running" && success ]Wd{4(b  
} <@*mFq0,  
]qVJ>  
MM'<uy  
stop() { 9%zR ? u  
if [ -f $MONITOR_LOCKFILE ];then \SLYqJ~m  
# killall $MONITOR_BIN_NAME W:rzfO.`Z  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -9 >/dev/null 2&>1 {GWcw<g.B  
rm -f $MONITOR_LOCKFILE  .)cOu>  
fi Y%=A>~s*c:  
echo -e "monitor stopped" && success ` |]6<<'iW  
lq.0?(  
}ZYK3F  
if [ -f $RAYSYNC_SERVER_LOCKFILE ];then G)<k5U4  
#kill $(echo $RAYSYNC_SERVER_PID) $S,Uoh  
# killall $RAYSYNC_SERVER_BIN_NAME |0qk  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -9 >/dev/null 2&>1 ? erDP8  
rm -f $RAYSYNC_SERVER_LOCKFILE Ab_aB+g ]  
fi VwC, +B  
echo -e "RaySyncServer stopped" && success 8L=QfKr  
}U^9(  
H}U&=w'  
# result_Proxy=`ps -ef|grep ${RAYSYNC_PROXY_SERVER_BIN_NAME}|grep -v grep` 'HqAm$V+  
# if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ] || [ $result_Proxy != "" ];then ~{5%~8h.0r  
if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then t?0=;.D  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -2 >/dev/null 2&>1 p:4vjh=1h  
echo ${RAYSYNC_PROXY_SERVER_BIN_NAME} zkd#vAY(A  
rm -f $RAYSYNC_PROXY_SERVER_LOCKFILE b-O4IDIT  
fi h M8G"b  
echo -e "RaySync-Proxy-Server stopped" && success TTOd0a  
} yTDoS|B+)  
|f>y"T+1  
n[iil$VKh  
status() { {M%"z,GL7J  
if [ -f $MONITOR_LOCKFILE ];then J,~)9Kh$  
echo " monitor is running" T8KhmO  
else *|=&MU*+  
echo " monitor stopped" huq6rA/i  
fi N{q'wep  
P' J_:\  
V)a6H^l  
if [ -f $RAYSYNC_SERVER_LOCKFILE ];then +s S*EvF  
echo " RaySyncServer is running" \`XJz{Lm]  
else {UUVN/$  
echo " RaySyncServer stopped" [p7le8=  
fi g Sa,A  
3>jz3>v@  
4u(}eE f7  
if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then 8:A<PV!+  
echo " RaySync-Proxy-Server is running" -p;o e}|  
else #m M&CscE  
echo " RaySync-Proxy-Server stopped" 7"[lWC!As5  
fi J%A`M\  
} (Dn-vY'  
O%)9t FT  
Y7jD:P  
case $1 in O.4"h4{'  
start) Dr2h-  
start JDhA{VN6  
;; i ;tA<-$-  
stop) pIrAGA;  
stop P! 3$RO  
;; 8bysg9H0  
status) ~::R+Lh(  
status '~f@p~P  
;; 000 $ZsW?  
restart) hKT:@l*  
stop dyp] y$  
sleep 2 g764wl  
start ]_=HC5"  
;; jQr~@15J#  
*) ^GAdl}  
echo "Error Usage: service $(basename $0) [ start | stop | status | restart ]" =ddx/zN  
exit 3 C[KU~@  
esac czb%%:EJs|  
XH2 SEeh  
Ly<;x^D  
以上是关于镭速文件传输软件的高可用安装部署详细介绍!
级别: 新人
发帖
4
云币
6
只看该作者 沙发  发表于: 03-18
Re镭速Raysync文件传输高可用安装部署介绍!
这个用的人应该不多吧?
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)