ucarp使用手册.docx

上传人:b****7 文档编号:23749253 上传时间:2023-05-20 格式:DOCX 页数:30 大小:103.12KB
下载 相关 举报
ucarp使用手册.docx_第1页
第1页 / 共30页
ucarp使用手册.docx_第2页
第2页 / 共30页
ucarp使用手册.docx_第3页
第3页 / 共30页
ucarp使用手册.docx_第4页
第4页 / 共30页
ucarp使用手册.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

ucarp使用手册.docx

《ucarp使用手册.docx》由会员分享,可在线阅读,更多相关《ucarp使用手册.docx(30页珍藏版)》请在冰豆网上搜索。

ucarp使用手册.docx

ucarp使用手册

 

ucarp使用手册

 

目 录

目 录2

1引言4

1.1目的4

1.2对象4

2修订历史4

3参考资料4

4术语与缩写4

4.1术语4

4.2缩写5

5ucarp简介5

6ucarp的安装5

6.1手动安装5

6.1.1下载软件包5

6.1.2编译条件6

6.1.3编译安装6

6.2Yum安装6

7ucarp的使用7

7.1配置要求7

7.2Ucap具体参数详解7

7.3Ucarp参数简述8

8一个简单例子8

9主备对等实例10

9.1实验环境10

9.2安装11

9.3配置主服务器11

9.3.1创建目录11

9.3.2编写机器升为master时运行的脚本11

9.3.3编写机器降为slave时运行的脚本12

9.3.4编写ucarp运行脚本12

9.3.5编写监控ucarp脚本15

9.3.6赋予可执行权限17

9.3.7将ucarp服务添加到开机启动17

9.3.8启动服务17

9.3.9验证17

9.4配置从服务器18

9.4.1创建目录18

9.4.2编写机器升为master时运行的脚本18

9.4.3编写机器降为slave时运行的脚本18

9.4.4编写ucarp运行脚本18

9.4.5编写监控ucarp脚本18

9.4.6赋予可执行权限18

9.4.7启动服务18

9.4.8将ucarp服务添加到开机启动18

9.4.9验证19

9.5故障切换19

9.5.1主正常19

9.5.2主故障20

9.5.3主恢复21

10主备不对等实例22

10.1实验环境22

10.2安装22

10.3配置主服务器22

10.3.1创建目录22

10.3.2编写机器升为master时运行的脚本22

10.3.3编写机器降为slave时运行的脚本23

10.3.4编写ucarp运行脚本23

10.3.5编写监控ucarp脚本23

10.3.6赋予可执行权限23

10.3.7将ucarp服务添加到开机启动23

10.3.8启动服务23

10.3.9验证24

10.4配置从服务器24

10.4.1创建目录24

10.4.2编写机器升为master时运行的脚本24

10.4.3编写机器降为slave时运行的脚本24

10.4.4编写ucarp运行脚本24

10.4.5编写监控ucarp脚本25

10.4.6赋予可执行权限25

10.4.7启动服务25

10.4.8将ucarp服务添加到开机启动25

10.4.9验证25

10.5故障切换25

10.5.1主正常25

10.5.2主故障26

10.5.3主恢复26

引言

目的

本手册的编写目的是对在Linux系统使用ucarp的相关步骤进行总结。

对象

本文档主要供下列人员使用:

⏹实施人员――部署ucarp热备份

修订历史

日期

版本

说明

作者

2012-10-16

1.0.0

初步整理

Marsleo

2012-12-01

1.1.0

根据实际部署更新描述

Marsleo

参考资料

[1].

术语与缩写

术语

序号

术语名称

术语定义

1

主控

是指提供服务的主控

2

备控

也叫从控,是指不提供服务的主控,当主故障时,由备接管其它服务

缩写

序号

缩写

缩写意义

1

CARP

CommonAddressRedundancyProtocol通用地址冗余协议

2

UCARP

UserlandCARP CARP的linux版本

ucarp简介

UCARP允许多个主机共享一个虚拟的ip地址,以提供自动的故障恢复功能,当其中某个主机宕机时,其它的主机会自动接管服务。

UCARP是CARP协议(通用地址冗余协议,最早在OpenBSD上实现)的linux实现版本,同时也能移植到其它多个unix平台,UCARP的官方网站:

http:

//www.ucarp.org/project/ucarp。

CARP协议的特点在于其非常低的开销,主机间使用加密数据传递信息,并且在冗余主机之间不需要任何额外的网络链接。

ucarp的安装

手动安装

下载软件包

下载ucarp源代码包:

http:

//download.pureftpd.org/pub/ucarp/,在README中有ucarp的简单部署实例。

编译条件

你必须在你的系统上安装libpcap,UCARP编译需要libpcap的头文件,如果没有安装可以在http:

//www.tcpdump.org上面找到。

编译安装

如果你已经具备了上面的条件请按照传统的方式编译安装。

./configure

make

makeinstall

具体的细节可以参考安装文档INSTALL。

这个软件已经成功的在Linux2.4,Linux2.6,MacOSX,OpenBSD,MirBSDandNetBSD上运行过。

Yum安装

首先必须保证服务器能够连接互联网并且已经安装了支持yum的软件包。

接着在/etc/yum.repos.d/目录下建ucarp.repo文件内容如下:

[ucarp]

name=ucarpRPMRepositoryforRedHatEnterpriseLinux

baseurl=http:

//mirrors.ircam.fr/pub/dag/redhat/el$releasever/en/$basearch/dag

http:

//rh-mirror.linux.iastate.edu/pub/dag/redhat/el$releasever/en/$basearch/dag

http:

//wftp.tu-chemnitz.de/pub/linux/dag/redhat/el$releasever/en/$basearch/dag

http:

//archive.cs.uu.nl/mirror/dag.wieers/redhat/el$releasever/en/$basearch/dag

http:

//apt.sw.be/redhat/el$releasever/en/$basearch/dag

http:

//mirror.cpsc.ucalgary.ca/mirror/dag/redhat/el$releasever/en/$basearch/dag

http:

//ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag

http:

//apt.sw.be/redhat/el$releasever/en/$basearch/dag

enabled=1

gpgcheck=1

gpgkey=

然后yum方式安装即可:

yuminstallucarp

ucarp的使用

配置要求

使用ucarp必须满足如下要求:

●两个或多个主机以构成冗余主机组;

●一个共享的虚拟ip地址,用以对外提供可靠的服务,冗余主机组中的某个主机会对这个ip上的服务进行应答;

●对于每个主机,需要配置一个真实的ip地址;

●一个1-255之间的共享标识符;

●一个共享的密码(使得网络间传输的消息都为密文);

●当冗余组中某个主机成为MASTER时执行的脚本程序;

●当冗余组中某个主机不再是MASTER是执行的脚本程序。

Ucap具体参数详解

--inter(-i:

bindinterface(网络接口绑定网络接口)

--srcip=(-s:

source(real)IPaddressofthathost(源地址真实ip)

--vhid=(-v:

virtualIPidentifier(1-255)(虚拟ip标识(1-255))

--pass=(-p:

password(密码)

--preempt(-P):

becomesamasterassoonaspossible(以最快的速度成为主服务器的角色)

--neutral(-n):

don'trundownscriptatstartifbackup(如果是备份主机,启动的时候不运行downscript.)

--addr=(-a:

virtualsharedIPaddress(共享虚拟ip地址)

--help(-h):

summaryofcommand-lineoptions(帮助)

--advbase=(-b:

advertisementfrequency(广播的频率(秒))

--advskew=(-k:

advertisementskew(0-255)(不广播)用来设置公告间隔时间,公式(以秒计)为advskew/256+advbase。

advbase可以减少网络流量或设置更长的主力机"轮循"时间(直至备份机来顶替它);advskew设置哪台热备份计算机在故障转移时优先成为主力机(这是必需的)

--upscript=(-u:

runtobecomeamaster(运行一个脚本文件,使本服务器成为主服务器)

--downscript=(-d:

runtobecomeabackup(运行一个脚本文件,使本服务器成为从服务器)

--deadratio=(-r:

ratiotoconsiderahostasdead(认定主机已经死掉的比率(阀值))

--shutdown(-z):

callshutdownscriptatexit(在退出的时候,执行关闭的脚本)

--daemonize(-B):

runinbackground(运行在后台)

--facility=(-f):

setsyslogfacility(default=daemon)(设置syslog工具,默认在后台)

Ucarp参数简述

-vvip标识

-p密码

-avip地址

-u当机器为升为master时运行的脚本

-d当机器降为slave时运行的脚本

-s心跳ip地址

-P与-k结合最小的为master机器

-B以daemon方式运行

一个简单例子

例如你有一个邮件服务器IP地址是10.1.1.252,每个使用者都在自己的邮件客户端配置了主机IP地址。

如果你的邮件服务器不能正常运行,客户端将不能使用这个服务。

现在需要两台服务器,并且配置相同,两台服务器上分别设置地址10.1.1.1和10.1.1.2让两个服务器都能响应同一IP地址(10.1.1.252)的请求,当一个服务器出现问题停止,另一个服务器接管这个服务。

首先我们来创建一个脚本,用来添加实IP地址,我们先把脚本存放到/etc/vip-up.sh

#!

/bin/sh

/sbin/ipaddradd10.1.1.252/24deveth0

我们再创建一个用来关闭实IP的脚本,我们先把脚本存放到/etc/vip-down.sh

#!

/bin/sh

/sbin/ipaddrdel10.1.1.252/24deveth0

当然,你可以使用任何方法实现和修改这些脚本,例如你想要添加一个路由,想给你的操作做一个日志,或者直接给你发邮件。

最后别忘了连接你的交换机刷新ARP的缓存,用户都会很快的更新他们的MAC地址列表。

如果你的网卡使用的不是ETH0请根据你的实际情况修改上面脚本中的内容。

别忘了加一个可执行的权限

chmod+x/etc/vip-up.sh/etc/vip-down.sh

现在我们现在需要的是一个虚拟的IP标识,我们就使用"42"。

我们也需要一个口令,让我们使用"love".

现在我们在第一个主机上添加实IP地址并作相应的标示10.1.1.1。

(MASTER)

/usr/local/sbin/ucarp-v42-plove-a10.1.1.252-s10.1.1.1&

现在我们在第二个主机上添加实IP地址并作相应的标示10.1.1.2。

(SLAVE)

/usr/local/sbin/ucarp-v42-plove-a10.1.1.252-s10.1.1.2&

现在你应该能看见一个已经成为了主服务器,另一个成为了从服务器,根据你的实际情况修改你的脚本。

现在我们断开主服务器,你会发现从服务器在几秒种以后接管了主服务器。

你也可以通过"-b"这个参数修改广播时间,多个从服务器当中,广播时间较小的那个将成为主服务器。

请注意:

●当一个服务器从另一个服务器接管服务以后将自动变成主服务器,而且不会因为另一个服务器重新使用而降为从服务器。

●如果你想让一个服务器立即变成主服务器请在这个主机上使用一个"-p"的选项,使另一台变成从服务器。

●当UCARP在服务器上第一次会以从服务器方式运行,并且看是否需要变成主服务器。

●当进入从服务器状态的时候,正常情况下将运行关闭脚本,这有利于删除旧的临时文件或清除网卡的未知的状态。

然而在一些特殊的环境里,如果ucarp服务还没有启动起来的时候,不需要运行downscript.如果是那样的话,使用-n参数。

●当它第一次进入从服务器状态时,不运行关闭脚本再运行以后,发生所有改变从主服务器状态到备份服务器状态

●使用"-z"的选项服务器将会先切换到从服务器的状态然后再退出,如果服务器本身工作在从的状态将直接退出。

●使用"-r"的选项是让从服务器在主服务器丢失响应多长时间后,把自己升级成为新的主服务器。

如果没有指定的话这个值默认是3。

●如果UCARP运行在daemon状态(-B后台运行),他的标准输出和标准错误日志默认将发送给系统的syslog进程,如果你不想记录他可以使用

--syslog=none

或者也可以使用你自己的日志工具。

主备对等实例

现在我们用一个例子来详细地说明如何配置使用ucarp。

这个案例中实现的是当主服务器有故障时,从服务器将转换为主服务器;原来的主服务器恢复后会转换为从服务器。

即主备是对等的。

实验环境

类型

(Role)

主机名

(hostname)

网卡

(nic)

实际IP

(rip)

虚拟IP

(vip)

网关

(gateway)

操作系统

(OS)

主(master)

node1

eth2

10.0.96.30/24

10.0.96.200/24

10.0.96.254

CentOS6.2

备(slave)

node2

eth2

10.0.96.31/24

10.0.96.200/24

10.0.96.254

CentOS6.2

安装

参考ucarp的安装的说明在上述两台服务器上安装ucarp。

配置主服务器

创建目录

在合适的地方(如/root)创建一个ucarp子目录:

mkdir/root/ucarp

然后进入这个子目录

cd/root/ucarp

后面的编辑操作都是在这个子目录进行。

编写机器升为master时运行的脚本

vimvip-up.sh(红色的则可以根据实际情况进行修改)

#!

/bin/bash

DEVNAME=eth2

VIP=10.0.96.200/24

/sbin/ipaddradd$VIPdev$DEVNAME

DATETIME=`date+"%Y-%m-%d%H:

%M:

%S"`

echo$DATETIME-execute$0

#TODO:

addsomethingyouwanttodo

也可以是:

#!

/bin/bash

DEVNAME=eth2

INDEX=254

VIP=10.0.96.200

NETMASK=255.255.255.0

/sbin/ifconfig"$DEVNAME":

"$INDEX""$VIP"netmask"$NETMASK"

DATETIME=`date+"%Y-%m-%d%H:

%M:

%S"`

echo$DATETIME-execute$0

#TODO:

addsomethingyouwanttodo

编写机器降为slave时运行的脚本

vimvip-down.sh(红色的则可以根据实际情况进行修改)

#!

/bin/bash

DEVNAME=eth2

VIP=10.0.96.200/24

/sbin/ipaddrdel$VIPdev$DEVNAME

DATETIME=`date+"%Y-%m-%d%H:

%M:

%S"`

echo$DATETIME-execute$0

#TODO:

addsomethingyouwanttodo

也可以是:

#!

/bin/bash

DEVNAME=eth2

INDEX=254

/sbin/ifconfig"$DEVNAME":

"$INDEX"down

DATETIME=`date+"%Y-%m-%d%H:

%M:

%S"`

echo$DATETIME-execute$0

#TODO:

addsomethingyouwanttodo

编写ucarp运行脚本

vimucarp.sh(红色的则可以根据实际情况进行修改)

#processname:

ucarp

DEVNAME=eth2

VIP=10.0.80.200

SIP=`/sbin/ifconfig$DEVNAME|grep"inetaddr"|awk-F":

"'{print$2}'|awk'{print$1}'`

LOGFILE=/root/ucarp/ucarp.log

UPFILE=/root/ucarp/vip-up.sh

DOWNFILE=/root/ucarp/vip-down.sh

PASSWD=etone

ID=40

SKEW=

ADVSKEW=

if[-n"$SKEW"];then

ADVSKEW="-k$SKEW"

Fi

#Sourcefunctionlibrary.

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

#Sourcenetworkingconfiguration.

./etc/sysconfig/network

prog=ucarp

start()

{

#Startdaemons.

#Checkthatnetworkingisup.

[${NETWORKING}="no"]&&exit1

[-x/usr/local/sbin/$prog]||exit1

ps-FC$prog|grep"$VIP">/dev/null

RETVAL=$?

DATETIME=`date+"%Y-%m-%d%H:

%M:

%S"`

if[$RETVAL-ne0];then

echo"$DATETIME-$progfor$VIPisnotalive,startit"

nohup/usr/local/sbin/$prog-i$DEVNAME-v$ID-p$PASSWD-a$VIP-u$UPFILE-d$DOWNFILE-s$SIP-P$ADVSKEW>>$LOGFILE2>&1&

RETVAL=$?

echo-n$"Starting$progfor$VIP:

"

if[$RETVAL-ne0];then

echo"[OK]"

else

echo"[FAILED]"

fi

else

echo"$DATETIME-$progfor$VIPisalreadyrunning"

fi

return$RETVAL

}

stop()

{

#Stopdaemons.

echo-n$"Shuttingdown$prog:

"

echo

pids=`ps-FC$prog|grep"$VIP"|awk'{printf"%d",$2}'`

if[-n"${pids}"];then

kill${pids}

RETVAL=$?

if["$RETVAL"=0];then

echo"killpidsof$prog:

$pids"

else

echo"kill$progfail"

fi

else

echo"$progisnotalive,noprocesstostop"

fi

return$RETVAL

}

status()

{

ps-ef|grep$prog|grep"$VIP"|grep-vgrep

if[$?

-ne0];then

echo"$progisstoped"

fi

return0

}

RETVAL=0

#Seehowwewerecalled.

case"$1"in

start)

start

;;

stop)

stop

;;

status)

status

;;

*)

echo$"Usage:

$0{start|stop|status}"

exit1

esac

exit$RETVAL

编写监控ucarp脚本

vimmonitorucarp.sh

#processname:

monitorucarp

#Sourcefunctionlibrary.

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

LOGFILE=/root/ucarp/monitorucarp.log

interval=10

SHELL=/root/ucarp/ucarp.sh

VIP=`grep"VIP="$SHELL|awk-F"="'{print$2}'`

prog=ucarp

background()

{

nohup$0start>/dev/null2>&1&

}

start()

{

ps-ef|g

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1