鐳速(Raysync)文件傳輸高可用部署介紹!

使用HeartBeat實現高可用HA的配置。HA即(high available)高可用,又被叫做雙機熱備,用於關鍵性業務。簡單理解就是,有2臺機器 A 和 B,正常是 A 提供服務,B 待命閒置,當 A 宕機或服務宕掉,會切換至B機器繼續提供服務。常見的實現高可用的開源軟件有 heartbeat 和 keepalived。


timg (1).jpg


一、準備實驗環境


服務器A:

主機名:Master01

操作系統:CentOS6.8 64位

eth0網卡地址:10.60.196.178


服務器B:

主機名:Slave01

操作系統:CentOS6.8 64位

eth0網卡地址:10.60.196.179

虛擬VIP:

VIP:10.60.196.180


二、設置主機名


master節點設置hostname

hostname Master01 vim /etc/sysconfig/network 編輯配置文件:HOSTNAME=Master01

vim /etc/hosts


編輯配置文件:

10.60.196.178 Master01

10.60.196.179 Slave01

# vim /etc/sysconfig/network 編輯配置文件:HOSTNAME=Master01

slave節點設置hostname

# hostname Slave01

vim /etc/hosts


編輯配置文件:

10.60.196.178 Master01

10.60.196.179 Slave01# vim /etc/sysconfig/network 編輯配置文件:HOSTNAME=Slave01


三、關閉2臺服務器的防火牆


關閉iptables

# iptables -F # service iptables save # service iptables stop

關閉selinux:

# setenforce 0 # sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config


四、安裝heartbeat (2臺都操作)


# yum install -y epel-release

# yum install -y heartbeat* libnet


五、主Master01節點配置


1、拷貝配置文件:

# cd /usr/share/doc/heartbeat-3.0.4/ # cp authkeys ha.cf haresources /etc/ha.d/ # cd /etc/ha.d


2、修改authkeys:

# vim authkeys 更改或增加如下內容: auth 33 md5 Hello!然後修改其權限 # chmod 600 authkeys


3、編輯haresources文件:

# vim haresources加入下面一行:Master01  10.60.196.180/24/eth0:0  raysync

說明:master爲主節點hostname,10.60.196.180爲vip,/24爲掩碼爲24的網段,eth0:0爲vip的設備名,httpd爲heartbeat監控的服務,也是兩臺機器對外提供的核心服務。改行指定在啓動時,節點得到vip,並啓動httpd,在停止時heartbeat首先停止httpd,然後釋放vip。


4、編輯ha.cf:

# vim ha.cf 修改爲如下內容:

logfile /var/log/ha-log

logfacility local0

keepalive 2

deadtime 30

warntime 10

initdead 120

udpport 694

ucast eth0 10.60.196.179

auto_failback on

node Master01

node Slave01

ping 10.60.196.254

respawn hacluster /usr/lib64/heartbeat/ipfail


5、配置說明:

logfile /var/log/ha-log:heartbeat的日誌文件。

keepalive 2:心跳的時間間隔,默認時間單位爲秒s。

deadtime 30:超出該時間間隔未收到對方節點的心跳,則認爲對方已經死亡。

warntime 10:超出該時間間隔未收到對方節點的心跳,則發出警告並記錄到日誌中。

initdead 120:在某系統上,系統啓動或重啓之後需要經過一段時間網絡才能正常工作,該選項用於解決這種情況產生的時間間隔,取值至少爲deadtime的2倍。

udpport 694:設置廣播通信使用的端口,694爲默認使用的端口號。

ucast eth0 10.60.196.179:設置對方機器心跳檢測的網卡和IP。

auto_failback on:heartbeat的兩臺主機分別爲主節點和從節點。主節點在正常情況下佔用資源並運行所有的服務,遇到故障時把資源交給從節點由從節點運行服務。在該選項設爲on的情況下,一旦主節點恢復運行,則自動獲取資源並取代從節點,否則不取代從節點。

respawn heartbeat /usr/lib/heartbeat/ipfail:指定與heartbeat一同啓動和關閉的進程,該進程被自動監視,遇到故障則重新啓動。最常用的進程是ipfail,該進程用於檢測和處理網絡故障,需要配合ping語句指定的ping node來檢測網絡連接。如果你的系統是64bit,請注意該文件的路徑。


六、把主節點上的三個配置文件拷貝到從節點


# cd /etc/ha.d # scp authkeys ha.cf haresources root@Slave01:/etc/ha.d


七、從節點slave編輯ha.cf


# vim /etc/ha.d/ha.cf 

只需要更改一個地方如下:ucast eth0 10.60.196.179改爲ucast eth0 10.60.196.180


八、啓動heartbeat服務


配置完畢後,先Master01啓動,後Slave01啓動。

# service heartbeat start


九、更改vip路由腳本


1、創建routecheck.sh腳本


vim /root/bin/routecheck.sh

#!/bin/bash

source /etc/profile

for((i=1;i<=30;i++))

do

ifconfig|grep eth0:0

a=$?

ip route show |grep 10.60.196.180

b=$?

ip route show|grep 10.60.196.254

c=$?

#vip存在,且vip沒有路由就更改路由

if [[ $a == 0 ]] && [[ $b != 0 ]];then

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

fi

#vip不存在,默認網關不存在就重啓網卡

if [[ $a != 0 ]] && [[ $c != 0 ]];then

ip route add 0.0.0.0/0 via 10.60.196.254 dev eth0

fi

sleep 2

done


2、定時運行


crontab -e

*/1 * * * * bash /root/bin/routecheck.sh > /dev/null


十、RaySync自啓動腳本


cat /etc/init.d/raysync

#!/bin/bash

#

# description: setup RaySync service

# Version: 0.1.0

# Date: 2018-02-06

# Author: lirou<[email protected]>

#


# chkconfig: - 87 17

source /etc/profile

. /etc/rc.d/init.d/functions


set -e

#set -x

export.UTF-8

export LC_ALL=en_US.UTF-8


if [ $# -ne 1 ];then

echo "Error Usage: service $(basename $0) [ start | stop | status | restart ]"

exit 3


fi


BASE_DIR=

PID_DIR=


if [[ "x$BASE_DIR" == "x" ]];then

BASE_DIR=/opt/RaySync

fi


RAYSYNC_CONF=$BASE_DIR/config/config.ini


if ! [ -d $(dirname $RAYSYNC_CONF) ];then

install -d -m 755 $(dirname $RAYSYNC_CONF)

fi



if [[ "x$PID_DIR" == "x" ]];then

PID_DIR=/var/run/raysync

mkdir -pv $PID_DIR &>/dev/null

fi


#MONITOR_PID=$PID_DIR/monitor.pid

MONITOR_LOCKFILE=$PID_DIR/monitor.lock

RAYSYNC_SERVER_LOCKFILE=$PID_DIR/raysync-server.lock

RAYSYNC_PROXY_SERVER_LOCKFILE=$PID_DIR/raysync-proxy.lock


MONITOR_BIN_NAME=

RAYSYNC_SERVER_BIN_NAME=

RAYSYNC_PROXY_SERVER_BIN_NAME=


if [[ "x$MONITOR_BIN_NAME" == "x" ]];then

MONITOR_BIN_NAME=monitor

fi


if [[ "x$RAYSYNC_SERVER" == "x" ]];then

RAYSYNC_SERVER_BIN_NAME=RaySyncServer

fi


if [[ "x$RAYSYNC_PROXY_SERVER" == "x" ]];then

RAYSYNC_PROXY_SERVER_BIN_NAME=RaySync-Proxy-Server

fi


start() {

if ! [ -s $RAYSYNC_CONF ];then

echo "Error: don't have configure file in $RAYSYNC_CONF path."

fi


if ! [ -f $MONITOR_LOCKFILE ]; then

# nohup ${BASE_DIR}/${MONITOR_BIN_NAME} &>/dev/null &

nohup ${BASE_DIR}/${MONITOR_BIN_NAME} >/dev/null 2>&1 &

sleep 1

if [[ "x$(ps aux | grep -i monitor | grep -v -i grep )" == "x" ]];then

echo -e "monitor setup fail" && failure

else

touch $MONITOR_LOCKFILE

fi

fi

echo -e " monitor is running: " && success


if ! [ -f $RAYSYNC_SERVER_LOCKFILE ];then

nohup $BASE_DIR/RaySyncServer >/dev/null 2&>1 &

sleep 1

if [[ "x$(ps aux | grep RaySyncServer | grep -v -i 'grep' )" == "x" ]];then

echo -e "RaySyncServer setup fail" && failure

else

touch $RAYSYNC_SERVER_LOCKFILE

fi

fi

echo -e " RaySyncServer is running" && success


if ! [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then

#nohup $BASE_DIR/proxy/$RAYSYNC_PROXY_SERVER_BIN_NAME >/dev/null 2&>1

#echo "nohup $BASE_DIR/proxy/$RAYSYNC_PROXY_SERVER_BIN_NAME >/dev/null 2&>1"

sleep 1

if [[ "x$(ps aux | grep RaySync-Proxy-Server )" == "x" ]];then

echo -e "RaySync-Proxy-Server setup fail" && failure

else

touch $RAYSYNC_PROXY_SERVER_LOCKFILE

fi

fi

echo -e " RaySync-Proxy-Server is running" && success

}


stop() {

if [ -f $MONITOR_LOCKFILE ];then

# killall $MONITOR_BIN_NAME

ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -9 >/dev/null 2&>1

rm -f $MONITOR_LOCKFILE

fi

echo -e "monitor stopped" && success


if [ -f $RAYSYNC_SERVER_LOCKFILE ];then

#kill $(echo $RAYSYNC_SERVER_PID)

# killall $RAYSYNC_SERVER_BIN_NAME

ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -9 >/dev/null 2&>1

rm -f $RAYSYNC_SERVER_LOCKFILE

fi

echo -e "RaySyncServer stopped" && success


# result_Proxy=`ps -ef|grep ${RAYSYNC_PROXY_SERVER_BIN_NAME}|grep -v grep`

# if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ] || [ $result_Proxy != "" ];then

if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then

ps -ef|grep Ray|grep -v grep|awk '{print $2}'|xargs kill -2 >/dev/null 2&>1

echo ${RAYSYNC_PROXY_SERVER_BIN_NAME}

rm -f $RAYSYNC_PROXY_SERVER_LOCKFILE

fi

echo -e "RaySync-Proxy-Server stopped" && success

}


status() {

if [ -f $MONITOR_LOCKFILE ];then

echo " monitor is running"

else

echo " monitor stopped"

fi


if [ -f $RAYSYNC_SERVER_LOCKFILE ];then

echo " RaySyncServer is running"

else

echo " RaySyncServer stopped"

fi


if [ -f $RAYSYNC_PROXY_SERVER_LOCKFILE ];then

echo " RaySync-Proxy-Server is running"

else

echo " RaySync-Proxy-Server stopped"

fi

}


case $1 in

start)

start

;;

stop)

stop

;;

status)

status

;;

restart)

stop

sleep 2

start

;;

*)

echo "Error Usage: service $(basename $0) [ start | stop | status | restart ]"

exit 3

esac


以上是關於鐳速(Raysync)文件傳輸軟件的高可用安裝部署詳細介紹!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章