Chinaunix首页 | 论坛 | 博客
  • 博客访问: 520855
  • 博文数量: 85
  • 博客积分: 1797
  • 博客等级: 上尉
  • 技术积分: 1236
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-02 08:53
个人简介

职位:技术总监 1、精通c++(linux平台、vc++Mfc、qt)、java、php、unity3d,略懂python 2、用c++开发过嵌入式产品,用c++开发过大型银行运维产品 3、用java开发大型银行运维产品,学校教务系统 4、用php开发进销存系统(在销售中),用php开发淘宝小程序 5、用unity3d开发衣柜设计软件,在运营中

文章分类

全部博文(85)

分类: LINUX

2011-10-18 20:33:13

Keepalive是为lvs而做的,目的是为了lvs的高可用性,解决lvs的单点问题,以及真实服务器的检测功能(此功能相当于ldirectord

1. 编译安装

没有可用的rpm包,采用编译源码安装。

下载keepalived-1.2.2.tar.gz,并解包。

./configure 

上面显示结果没有使用IPVS框架。这个选项必须为yes才行。原因是系统没有安装系统开发包。安装系统开发包即可,可以用yum  -install  kernel-dev

由于虚拟机没设置上网,所以我直接从别的centos上把/usr/src/kernels/2.6.18-194.el5-i686这个文件夹拷了过来。然后做个链接,让keepalived能找到。

ln  -s  /usr/src/kernels/2.6.18-194.el5-i686/  /usr/src/linux

./configure   --prefix=/usr/local/keepalived

可看到结果

Make的时候出现如下错误:

/usr/include/time.h:105: 错误:与 ‘timer_t’ 类型冲突

/usr/src/linux/include/linux/types.h:31: 错误:‘timer_t’ 的上一个声明在此

查看这两个头文件下的timer_t的确实现方式不一样。查看系统版本跟内核开发包版本完全一致,让人崩溃的centos,头文件居然与内核开发包头文件不一样。

那就只能删掉一个头文件试试,将/usr/src/kernels/linux/include改名为include1

然后ln  -s  /usr/inclue   /usr/src/kernels/linux/include

然后重新./configure   --prefix=/usr/local/keepalived

make, 很幸运居然通过了。

2. 配置

Vi  /etc/keepalived/ keepalived.conf

global_defs {

   notification_email {

         gengpeng@gelssoft.com

   }

   notification_email_from gengpeng@gelssoft.com

   smtp_server 127.0.0.1

  # smtp_connect_timeout 30

   router_id LVS_DEVEL

}

# 20081013 written by :netseek

# VIP1

vrrp_instance VI_1 {

    state MASTER         #备机上改为BACKUP

    interface eth0

    virtual_router_id 51

    priority 100  #备机上改为99,小于100的数即可。

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.0.65

    }

}

virtual_server 192.168.0.65 80 {

    delay_loop 6

    lb_algo wrr

    lb_kind DR

#    persistence_timeout 2

    protocol TCP

    real_server 192.168.0.21 80 {

        weight 3   

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

    real_server 192.168.0.22 80 {

        weight 3

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

3. 启动

/usr/local/keepalived/sbin/keepalived –D

也可以:

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived    /etc/init.d/

service  keepalived start

4. 测试

关闭主机的keepalived, http://192.168.0.65/index.html不断刷新这个网页,在备机上ipvsadm,会看到连接数的变化。

然后再启动主机的keepalived不断刷新网页,在主机上ipvsadm,会看到连接数的变化,可以看出,只要主机启动,会立马接管过来。因为上面配置文件中的优先级priority 主机是100,从机是99,主机优先级大于从机。

5. 问题

对真实服务器的检测却始终没有测试成功,停掉21上的httpd服务后,在11ipvsadm,始终还是存在21的信息。应该得到的结果跟ldirectord一样。

阅读(2738) | 评论(1) | 转发(0) |
0

上一篇:Ldirectord双机高可用

下一篇:jsp工作原理

给主人留下些什么吧!~~