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

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

级别: 程序猿
发帖
252
云币
432
lUEyo.xVt  
使用HeartBeat实现高可用HA的配置。HA即(high available)高可用,又被叫做双机热备,用于关键性业务。简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务。常见的实现高可用的开源软件有 heartbeat 和 keepalived。 / ["T#`  
A@OV!DJe]  
V]}b3Y!(  
一、准备实验环境 xTMTkVa+B  
}t'^Au`X  
\t@`]QzG:  
服务器A: %"zJsYQ!  
主机名:Master01 JPG!cX%  
操作系统:CentOS6.8 64位 -wfV  
eth0网卡地址:10.60.196.178 C.-a:oQ[  
@\?f77Of6  
h'p0V@!N  
服务器B: (T01hR&  
主机名:Slave01 p/~kw:I  
操作系统:CentOS6.8 64位 (&,R1dLo  
eth0网卡地址:10.60.196.179 HV.7IyBA^  
虚拟VIP: pt#[.n#f  
VIP:10.60.196.180 MavO`m&Cg  
}i:'f 2/  
beE%%C]X  
二、设置主机名 D$E9%'ir  
:F=nb+HZ  
}HorR2(`N  
master节点设置hostname 2\de |'  
hostname Master01 vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Master01 .<%M8rcj  
vim /etc/hosts (K6S tNtN  
^E17_9?  
!++62Lf  
编辑配置文件: RzQS@^u*F0  
10.60.196.178 Master01 ;r"B?]JO  
10.60.196.179 Slave01 `F8;{`a  
# vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Master01 oFR'GUQC  
slave节点设置hostname 0pa^O$?p  
# hostname Slave01 ]H~,K]@.  
vim /etc/hosts FaE orQ  
a HL '(<  
@98SC}}u  
编辑配置文件: 5Suc#0y  
10.60.196.178 Master01 l$_rA~Mo  
10.60.196.179 Slave01# vim /etc/sysconfig/network 编辑配置文件:HOSTNAME=Slave01 GQq'~Lr5  
FSs$ ] d;  
m?$G(E5  
三、关闭2台服务器的防火墙 $]JIA|  
%W;Gf9.w  
Cpv%s 1M  
关闭iptables agT[y/gb  
# iptables -F # service iptables save # service iptables stop DW&')gfQ  
关闭selinux: }#5roNH~Z  
# setenforce 0 # sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config %5?-g[  
= [os<+  
d ovwB`5  
四、安装heartbeat (2台都操作) os^SD&hL  
hp V /F  
*[:CbFE0y  
# yum install -y epel-release 5XO'OSdYq  
# yum install -y heartbeat* libnet ![ID0}MjJ  
U] -@yx  
\'tz|  
五、主Master01节点配置 FKnQwX.0  
4~YQ\4h=  
L$c%u  
1、拷贝配置文件: 0lr4d Y  
# cd /usr/share/doc/heartbeat-3.0.4/ # cp authkeys ha.cf haresources /etc/ha.d/ # cd /etc/ha.d ef:$1VIBda  
L00 ;rTs>  
}SN44 di(  
2、修改authkeys: }.V0SM6  
# vim authkeys 更改或增加如下内容: auth 33 md5 Hello!然后修改其权限 # chmod 600 authkeys @ZR4%A"X4  
T xxB0  
dQ`ZrWd_U  
3、编辑haresources文件: 4$DliP  
# vim haresources加入下面一行:Master01  10.60.196.180/24/eth0:0  raysync 8kM0  
说明:master为主节点hostname,10.60.196.180为vip,/24为掩码为24的网段,eth0:0为vip的设备名,httpd为heartbeat监控的服务,也是两台机器对外提供的核心服务。改行指定在启动时,节点得到vip,并启动httpd,在停止时heartbeat首先停止httpd,然后释放vip。 UJ)M:~O  
pjs9b%.  
(i0"hi  
4、编辑ha.cf: 8421-c6y>  
# vim ha.cf 修改为如下内容: HT=Am  
logfile /var/log/ha-log Q[Sd  
logfacility local0 :F w"u4WI  
keepalive 2 vJAAAS  
deadtime 30 2n;;Tso"  
warntime 10 $]U5  
initdead 120 uQtk|)T E  
udpport 694 r,@X>_}  
ucast eth0 10.60.196.179 h*%0@  
auto_failback on -WBz]GW4r  
node Master01 '[yqi1 &  
node Slave01 `NWgETf^#  
ping 10.60.196.254 +;wqX]SD&  
respawn hacluster /usr/lib64/heartbeat/ipfail ~muIi#4  
(6#yw`\  
:;*#Qh3"  
5、配置说明: $x_52 j\j  
logfile /var/log/ha-log:heartbeat的日志文件。 Q'Kik5I  
keepalive 2:心跳的时间间隔,默认时间单位为秒s。 $X=D9h  
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。 LXu"rfp  
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。 {F6dSF`  
initdead 120:在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍。 -=t3O#  
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。 )\D40,p  
ucast eth0 10.60.196.179:设置对方机器心跳检测的网卡和IP。 /mB Beg^a  
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则动获取资源并取代从节点,否则不取代从节点。 <,4R2'  
respawn heartbeat /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。 &Wz`>qYL*  
*v nxP9<  
$sL|'ZMbS  
六、把主节点上的三个配置文件拷贝到从节点 o=RqegL  
^'u;e(AaE  
51ajE2+X&  
# cd /etc/ha.d # scp authkeys ha.cf haresources root@Slave01:/etc/ha.d HLoQ}oK|K  
01{r^ZT`RH  
X!#i@V  
七、从节点slave编辑ha.cf KIAe36.~  
97]a-)SA  
PZ!dn%4jy  
# vim /etc/ha.d/ha.cf d7_g u  
只需要更改一个地方如下:ucast eth0 10.60.196.179改为ucast eth0 10.60.196.180 'Elj"Iiu  
7tfivIj)e  
3gI[]4lRH  
八、启动heartbeat服务 rT sbP40  
+{C9uY)$vf  
C>:/(O  
配置完毕后,先Master01启动,后Slave01启动。 ]Ic?:lKN  
# service heartbeat start +F7<5YW&(  
g<rKV+$6  
NHFEr  
九、更改vip路由脚本 4QjWZ Wl  
Rgfc29(8  
te\h?H  
1、创建routecheck.sh脚本 L'\/)!cEd  
n(Q\' ,C  
s?@)a,C%k  
vim /root/bin/routecheck.sh iO9nvM<  
#!/bin/bash jr[<i\!  
source /etc/profile Q9yGQu  
for((i=1;i<=30;i++)) /Oggt^S  
do @Ge>i5q  
ifconfig|grep eth0:0 `dgM|.w5=  
a=$? &'huS?g A9  
ip route show |grep 10.60.196.180 >9.5-5"   
b=$? f E.L  
ip route show|grep 10.60.196.254 %su}Ru  
c=$? U BhciZ  
#vip存在,且vip没有路由就更改路由 TDAWI_83-  
if [[ $a == 0 ]] && [[ $b != 0 ]];then 9RCO|J  
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 uEScAeQXsI  
fi {ywXz|TP  
#vip不存在,默认网关不存在就重启网卡 >&<<8Ln  
if [[ $a != 0 ]] && [[ $c != 0 ]];then bSrRsgKvT  
ip route add 0.0.0.0/0 via 10.60.196.254 dev eth0 @q> ktE_  
fi N>A{)_k3  
sleep 2 z29qARiX  
done })o~E  
Wa[x`:cT?u  
4-7kS85  
2、定时运行 E7X!cm/2<  
Cdp]Nv6  
^s^ JzFw  
crontab -e #cj\~T.,,  
*/1 * * * * bash /root/bin/routecheck.sh > /dev/null HDF!`  
;m@1Ec@* p  
G}!7tU  
十、RaySync自启动脚本 =y< ">-  
0T9@,scY  
>H0) ph  
cat /etc/init.d/raysync f {y]  
#!/bin/bash 2E`~ qn  
# $ ^W-Wmsz  
# description: setup RaySync service IPl@ DH  
# Version: 0.1.0 $nB-ADRu@  
# Date: 2018-02-06 w`c0a&7  
# Author: lirou<lirou@rayvision.com> u(pdP"  
# La"o)L +m_  
 20I4r  
cS<TmS!  
# chkconfig: - 87 17 EKZ$Q4YE  
source /etc/profile xn(+G$m  
. /etc/rc.d/init.d/functions LXHwX*`Y  
yWj9EHQU[  
Dh2:2Rz=#7  
set -e i(Ip(n  
#set -x n K+lE0  
export LANG=en_US.UTF-8 aB6Ye/Io  
export LC_ALL=en_US.UTF-8 rr|"r  
<Ctyht0c.  
\\=.6cg<K  
if [ $# -ne 1 ];then `1nRcY  
echo "Error Usage: service $(basename $0) [ start | stop | status | restart ]" I"Q#IvNw  
exit 3 +"]oc{W!  
JNh=fvO2i  
+ $>N]1  
fi B|cA[  
DdBxqkh  
PC*m% ?+  
BASE_DIR= y L*LJ  
PID_DIR= +"'F Be  
;aq`N}d  
yZq?B  
if [[ "x$BASE_DIR" == "x" ]];then O$a#2p&  
BASE_DIR=/opt/RaySync N<9w{zIK(  
fi D9ANm"#  
9160L qY  
E@:Q 'g%  
RAYSYNC_CONF=$BASE_DIR/config/config.ini Z[Wlyb0  
m&Lt6_vi  
UM<@t%|>  
if ! [ -d $(dirname $RAYSYNC_CONF) ];then #nKRTb+{  
install -d -m 755 $(dirname $RAYSYNC_CONF) cL#-*_(  
fi Z;hyi'rPJ  
:]'q#$!  
P3G:th@j=  
|Eb&}m:E$  
yL.^ =  
if [[ "x$PID_DIR" == "x" ]];then gWkjUz )  
PID_DIR=/var/run/raysync 0f1H8zV  
mkdir -pv $PID_DIR &>/dev/null PNf&@  
fi djUihcqA`  
tyB)HF  
qk&gA}qF  
#MONITOR_PID=$PID_DIR/monitor.pid dgXg kB'  
MONITOR_LOCKFILE=$PID_DIR/monitor.lock bZ/ hgqS  
RAYSYNC_SERVER_LOCKFILE=$PID_DIR/raysync-server.lock dsV ~|D6:  
RAYSYNC_PROXY_SERVER_LOCKFILE=$PID_DIR/raysync-proxy.lock ^\MhT)x  
8/Mx5~ R  
@: Z#E[N H  
MONITOR_BIN_NAME= *|oPxQCtK  
RAYSYNC_SERVER_BIN_NAME= `qE4U4  
RAYSYNC_PROXY_SERVER_BIN_NAME= |"Z-7@/k$i  
Mq@}snp"S  
_ \l HI  
if [[ "x$MONITOR_BIN_NAME" == "x" ]];then x@Y|v@}BE  
MONITOR_BIN_NAME=monitor Tw x{' S  
fi \7yJ\I  
)S2iIi;Bq  
g92dw<$>  
if [[ "x$RAYSYNC_SERVER" == "x" ]];then 8)pB_en3sO  
RAYSYNC_SERVER_BIN_NAME=RaySyncServer /l ^y}o %?  
fi ilv_D~|  
'j}g  
hfg O  
if [[ "x$RAYSYNC_PROXY_SERVER" == "x" ]];then N`HSE=u>  
RAYSYNC_PROXY_SERVER_BIN_NAME=RaySync-Proxy-Server Qwv '<  
fi 3w6&&R9  
ugI#ZFjJWE  
+#~O'r]%GG  
start() { !Av1Leb9$  
if ! [ -s $RAYSYNC_CONF ];then 8b7;\C~$p  
echo "Error: don't have configure file in $RAYSYNC_CONF path." 2 5Q+1  
fi 9<l-NU9 _  
=UNT.]  
^!}F%  
if ! [ -f $MONITOR_LOCKFILE ]; then yX'IZk#_L  
# nohup ${BASE_DIR}/${MONITOR_BIN_NAME} &>/dev/null & ]YsR E>  
nohup ${BASE_DIR}/${MONITOR_BIN_NAME} >/dev/null 2>&1 & V\AK6U@r^  
sleep 1 xQo~%wW,?  
if [[ "x$(ps aux | grep -i monitor | grep -v -i grep )" == "x" ]];then aM$=|%9/  
echo -e "monitor setup fail" && failure lUHtjr  
else "U{,U`@?  
touch $MONITOR_LOCKFILE 4{Udz!  
fi MqdB\OW&  
fi MtUY?O.P2  
echo -e " monitor is running: " && success A*F9\mj I5  
3u_oRs  
hM>*a!)U  
if ! [ -f $RAYSYNC_SERVER_LOCKFILE ];then @8zT'/$  
nohup $BASE_DIR/RaySyncServer >/dev/null 2&>1 & ({e7U17[#  
sleep 1 (;UP%H>  
if [[ "x$(ps aux | grep RaySyncServer | grep -v -i 'grep' )" == "x" ]];then 1~@|e Wr|  
echo -e "RaySyncServer setup fail" && failure z h%qS~8Yv  
else OR;&TbWF(R  
touch $RAYSYNC_SERVER_LOCKFILE bnr|Y!T}Bi  
fi :tLbFW[  
fi E eB3 }  
echo -e " RaySyncServer is running" && success -NzTqLBn  
y9!:^kDI  
SA+d&H}Fc  
if ! [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then [))JX"a  
#nohup $BASE_DIR/proxy/$RAYSYNC_PROXY_SERVER_BIN_NAME >/dev/null 2&>1 kOipH |.x  
#echo "nohup $BASE_DIR/proxy/$RAYSYNC_PROXY_SERVER_BIN_NAME >/dev/null 2&>1" K/|  
sleep 1 wAh#   
if [[ "x$(ps aux | grep RaySync-Proxy-Server )" == "x" ]];then F7T E|LZ  
echo -e "RaySync-Proxy-Server setup fail" && failure io2@}xZF  
else H&bh<KPMh  
touch $RAYSYNC_PROXY_SERVER_LOCKFILE L\L"mc|O  
fi X *O9JGh  
fi !M(:U,?B  
echo -e " RaySync-Proxy-Server is running" && success XWtiwf'K  
} ;SY.WfVA7  
C[8KlD  
b_vTGl1_6  
stop() { O]{*(J/t  
if [ -f $MONITOR_LOCKFILE ];then a,n93-m(m  
# killall $MONITOR_BIN_NAME ?Y3@"rdR  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -9 >/dev/null 2&>1 o&$hYy"<.L  
rm -f $MONITOR_LOCKFILE cPuHLwwYf  
fi VR4%v9[1  
echo -e "monitor stopped" && success a$m_D!b~_  
<%KUdkzEP  
t`u!]DHv  
if [ -f $RAYSYNC_SERVER_LOCKFILE ];then zvr\36  
#kill $(echo $RAYSYNC_SERVER_PID) Q2c*.Y  
# killall $RAYSYNC_SERVER_BIN_NAME UX_I6_&  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -9 >/dev/null 2&>1 WZ?!!   
rm -f $RAYSYNC_SERVER_LOCKFILE *jF#^=  
fi O2v.  
echo -e "RaySyncServer stopped" && success h|p[OecG  
hYb9`0G"2  
:;4SQN{2 O  
# result_Proxy=`ps -ef|grep ${RAYSYNC_PROXY_SERVER_BIN_NAME}|grep -v grep` "'A"U  
# if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ] || [ $result_Proxy != "" ];then :woa&(wN;1  
if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then [ H,u)8)  
ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -2 >/dev/null 2&>1 ~NNv>5 t5  
echo ${RAYSYNC_PROXY_SERVER_BIN_NAME} maDz W_3  
rm -f $RAYSYNC_PROXY_SERVER_LOCKFILE Km*<Kfcz  
fi cNj*E =~;  
echo -e "RaySync-Proxy-Server stopped" && success kon=il<@  
} ;+`uER  
0x5xLg;Q  
q# vlBL  
status() { 254~:eB0  
if [ -f $MONITOR_LOCKFILE ];then J#7y< s  
echo " monitor is running" El6bD% \G  
else /2@["*^$  
echo " monitor stopped" Y&~M7TYb  
fi M<[ ?g5=#  
U)[ty@zyF  
c_1/W{  
if [ -f $RAYSYNC_SERVER_LOCKFILE ];then R0<< f]  
echo " RaySyncServer is running" 1V%'.l9  
else \L[i9m|e  
echo " RaySyncServer stopped" U8O(;+  
fi & iSD/W  
AyTx'u  
ow.6!tl0=h  
if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then < y>:B}9'  
echo " RaySync-Proxy-Server is running" g:gB`8w?  
else V8"Wpl9Cz  
echo " RaySync-Proxy-Server stopped" >n!ni(  
fi .Z%G@X*  
} 1r 571B*O  
HXks_ix )  
Pp_V5,i\  
case $1 in G;]:$J  
start) Fu)Th|5GZ  
start vv/J 5#^,\  
;; E _iO@  
stop) <k]qH-v4  
stop TnE+[.Qu  
;; _!AJiP3!)4  
status) e|'N(D}h*  
status v8@eW.I1  
;; 7X'y>\^w^>  
restart) ]k+m=OR{/  
stop 2u:4$x8  
sleep 2 C6@t  
start +Me2U9  
;; 6/2v  
*) xl] ;*&  
echo "Error Usage: service $(basename $0) [ start | stop | status | restart ]" 2Q ayM?k8  
exit 3 gyus8#sT  
esac @@} `hii  
\&q=@rJp(z  
d6.}.*7Whc  
以上是关于镭速文件传输软件的高可用安装部署详细介绍!
级别: 新人
发帖
4
云币
6
只看该作者 沙发  发表于: 03-18
Re镭速Raysync文件传输高可用安装部署介绍!
这个用的人应该不多吧?
发表主题 回复主题
« 返回列表上一主题下一主题

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