Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4021007
  • 博文数量: 251
  • 博客积分: 11197
  • 博客等级: 上将
  • 技术积分: 6862
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-05 14:41
个人简介

@HUST张友东 work@taobao zyd_com@126.com

文章分类

全部博文(251)

文章存档

2014年(10)

2013年(20)

2012年(22)

2011年(74)

2010年(98)

2009年(27)

分类: 服务器与存储

2010-04-29 10:29:43

UCARP允许多个主机共享一个虚拟的ip地址,以提供自动的故障恢复功能,当其中某个主机宕机时,其它的主机会自动接管服务。UCARPCARP协议(通用地址冗余协议,最早在OpenBSD上实现)的linux实现版本,同时也能移植到其它多个unix平台,UCARP的官方网站:

   

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

 

下载ucarp源代码包,在README中有ucarp的简单部署实例。

 

使用UCARP的需要设置的基本信息:

1. 多个主机以构成冗余主机组;

2. 一个共享的虚拟ip地址,用以对外提供可靠的服务。

冗余主机组中的某个主机会对会对这个ip上的服务进行应答;

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

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

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

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

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

 

使用实例:

 

1. 需求分析

对于单元数据服务器(MDS)的分布式文件系统,会存在MDS的单点失效问题,可通过UCARP解决该问题。

两台用作MDS的主机地址分别为192.168.0.83192.168.0.84,通过地址192.168.0.200对外提供服务。

   

2. 启用和禁用虚拟ip的脚本

/etc/vip-up.sh

#!/bin/sh

/sbin/ip addr add 192.168.0.200/24 dev eth0

 

/etc/vip-up.sh

#!/bin/sh

/sbin/ip addr del 192.168.0.200/24 dev eth0

 

由于UCARP在执行脚本时,传递的参数格式为:ip地址,接口名,其它附加参数:

在脚本中可用$1代替192.168.0.200,用$2代替eth0

 

在执行脚本的时遇到bad interpreter: No suchorfiledirectory错误,参照本文结尾部分Shell脚本执行问题。

 

 

3. 在冗余主机上启动UCARP服务

 

#192.168.0.83上启动UCARP服务

ucarp -v 42 -p love -a 192.168.0.200 -s 192.168.0.84 -u /etc/vip-up.sh -d /etc/vip-down.sh  &

 

#192.168.0.83上启动UCARP服务

ucarp -v 42 -p love -a 192.168.0.200 -s 192.168.0.84 -u /etc/vip-up.sh -d /etc/vip-down.sh  &

 

说明:-v指定共享标识符

  -p 指定共享密码

      -a 指定虚拟ip地址

      -s 指定主机的真实ip地址

  -u 指定启用虚拟ip的脚本

      -d 指定禁用虚拟ip的脚本

更加详细的说明可参考:ucarp -h

 

4. 测试

 

192.168.0.83, 192.168.0.84机器上启动分布式文件系统的服务器程序,在客户端上挂载使用,指定元数据服务器ip192.168.0.200

UCARP先后在83,84主机上启动,83MASTER, 84BACKUP

客户端挂载文件系统时,首先是由83主机提供服务,当关掉83主机的元数据服务器程序时,84主机马上接替了83主机的工作,为客户端提供服务。

 

Shell脚本执行问题

 

windows中用UltraEdit写了CARP需要的Shell脚本,在Linux中执行.sh脚本,提示错误bad interpreter: No suchorfiledirectory
分析:这是不同系统编码格式引起的,在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决方案:
1
)在windows下转换:
利用一些编辑器如UltraEditEditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。

2
)也可在Linux中转换:
vi filename.sh
利用如下命令查看文件格式
:set ff
:set fileformat
可以看到如下信息
fileformat=dos
fileformat=unix
利用如下命令修改文件格式
:set ff=unix
:set fileformat=unix
:wq (
存盘退出)

3
)用dos2unix命令转换:
Ubuntu中安装tofrodos软件包(dos2unix/unix2dos命令就在其中)
sudo atp-get install tofrodos
安装好后,用如下命令即可将dos格式到文本文件转化为unix通用格式。
dos2unix filename.sh

最后再运行文件
sh filename.sh

阅读(7086) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~