首页 > 代码库 > 使用Keepalived+ipvs构建(高可用+负载均衡)环境!

使用Keepalived+ipvs构建(高可用+负载均衡)环境!

    之前写过一个heartbeat-ldirectord实现LVS的高可用,这里引入一个轻量级的程序Keepalived基于VRRP协议工作,也能为服务提供高可用功能,这个程序的开发初衷是为了给lvs提供高可用。


下面我们来看看如何使用keepalived+ipvs实现高可用+负载均衡。

在RHEL6.4以后就提供了rpm格式的安装包,这里我们用源码编译安装。

先去官网下载源码包http://keepalived.org/

解压源程序包,预编译配置,编译程序,安装程序。

tar zxvf keepalived-1.2.13.tar.gz

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

make && make install

编辑服务脚本,修改程序路径。

vim /etc/init.d/keepalived

wKioL1PgO0zD0cJAAADv96mxCJg145.jpg

编辑主配置文件/etc/keepalived/keepalived.conf

! Configuration File for keepalived


global_defs {    //全局配置段

   notification_email {   //收件人邮箱

        root@localhost

   }

   notification_email_from keepadmin@localhost    //发件人

   smtp_server 127.0.0.1     //邮件服务器

   smtp_connect_timeout 30   //等待超时时间

   router_id LVS_DEVEL

}


vrrp_instance VI_1 {   //定义一个VRRP路由实例

    state MASTER    //初始状态(备节点改为BACKUP)

    interface eth0

    virtual_router_id 51  //路由实例ID(唯一)

    priority 100     //优先级 (备节点的值要设置比主的低)

    advert_int 1     //通告频率

    authentication {    //认证配置

        auth_type PASS   //认证类型

        auth_pass 1111   //密码

    }

    virtual_ipaddress {    //虚拟IP

        192.168.18.18

    }

 notify_master "/etc/keepalived/notify.sh master"  //状态转换通知,要自己写好脚本。

 notify_backup "/etc/keepalived/notify.sh backup"

 notify_fault "/etc/keepalived/notify.sh fault"

}


virtual_server 192.168.18.18 80 {   //定义虚拟服务

    delay_loop 6   

    lb_algo wlc    //指定调度算法

    lb_kind DR     //指定工作模型

    nat_mask 255.255.255.0  

    persistence_timeout 0    //持久连接

    protocol TCP


    real_server 192.168.18.203 80 {     //定义RealServer

        weight 1      //设置权重 

        HTTP_GET {    //配置HTTP健康状态检测

            url {

              path /   //检测的路径

              status_code 200   //响应的状态信息

            }

            connect_timeout 3   //超时时间

            nb_get_retry 3      //重试次数

            delay_before_retry 3  //每一次重试之前等待的时间

        }

    }

    real_server 192.168.18.204 80 {

        weight 2

        HTTP_GET {

            url {

              path /

              status_code 200

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

把配置文件同步到备节点,修改我上面提到的两个地方即可,两个节点启动Keepalived服务。

RealServer配置(略)

scp /etc/keepalived/keepalived.conf admin2:/etc/keepalived/

/etc/init.d/keepalived start

查看主节点生成的配置

wKioL1PgQsXQSilFAARhbTuMsPI761.jpg

访问vip 192.168.18.18

wKioL1PgQ0vSUdFEAADPguPp12k580.jpg


刷新一下,请求自动转发到第二台realserver。

wKioL1PgQ9HjnDxjAADU-ggc238496.jpg



这时我们模拟坏了一台RealServer,将Realserver2-192.168.18.203网络服务给stop,再看看状态。

wKioL1PgRd-hoPxxAAInQXlGlLI194.jpg

再把Realserver2给恢复。

wKioL1PgR36D_f42AAH3A0Pw9QM939.jpg

这时我们模拟主Director故障了,把主节点网络服务stop。

我们来到备节点

wKioL1PgSKPRDU53AATldlDQ0sY874.jpg

主节点下线了,备节点优先级为最高,继承资源,如果这是当主节点恢复后,资源还是会回到主节点的,因为主节点的优先级更高。

好了,这就实现了用keepalived给lvs提供高可用。


有问题欢迎与我交流QQ1183710107


本文出自 “坏人的博客” 博客,转载请与作者联系!