LVS DR +keepalived配置

LVS DR +keepalived配置

我们先来看看为什么要引入 keepalived,前面的 lvs 虽然已经配置成功也实现了负载均

衡,但是我们测试的时候发现,当某台 real server 把 nginx 停掉,那么 director 照样会把请

求转发过去,这样就造成了某些请求不正常。所以需要有一种机制用来检测 real server 的状

态,这就是 keepalived。它的作用除了可以检测 RS 状态外, 还可以检测备用 director 的状态,

也就是说 keepalived 可以实现 ha 集群的功能,当然了也需要一台备用 director 服务器。备用

director 也需要安装一下 keepalived 软件。两台 director 上都执行如下命令:

# yum install -y keepalived

主 director 上安装好后,编辑配置文件

# vim /etc/keepalived/keepalived.conf  //加入如下:

#全局部分配置主从#

vrrp_instance VI_1 {

    state MASTER   

#备用服务器上为 BACKUP

    interface eth0

    virtual_router_id 51

    priority 100  

#权重优先级备用服务器上为90,或比主上小也可以

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

#认证机制

    }

    virtual_ipaddress {

        192.168.0.110

#规定虚拟VIP,也是对外的vip

    }

}

#dir部分包含rs部分#

virtual_server 192.168.0.110 80 {

#规定虚拟VIP,也是对外的vip

    delay_loop 6                  

#(每隔6秒查询realserver状态)

    lb_algo wlc                  

#(lvs 算法可以是wlc lc rr wrr)

    lb_kind DR                  

#(Direct Route可自动识别)

    persistence_timeout 60        

#(同一IP的连接60秒内被分配到同一台realserver,长连接60秒,可改成0,不需要长连接)

    protocol TCP               

#(用TCP协议检查realserver状态)

    real_server 192.168.0.43 80 {

#真实real_server

        weight 100               

#(权重)

        TCP_CHECK {

        connect_timeout 10      

#(10秒无响应超时,就自动把这台server取消掉)

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

real_server 192.168.0.45 80 {

#真实real_server

        weight 100

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

以上为主 director 的配置文件,从 director 的配置文件只需要修改如下内容:

state MASTER -> state BACKUP

priority 100 -> priority 90

配置完 keepalived 后,需要开启端口转发(主从都要做):

# echo 1 > /proc/sys/net/ipv4/ip_forward

然后,两个 rs 上执行/usr/local/sbin/lvs_dr_rs.sh 脚本

另外,需要注意的是,启动keepalived服务会自动生成vip和ipvsadm规则,不需要再去执行上面提到的/usr/local/sbin/lvs_dr.sh 脚本。

测试

把主上的keepalived服务停掉

# service keeplived stop

查看从上的keepalived服务

# ip addr 查看ip地址

把其中的一个real_server1的nginx服务停掉,在打开一个虚拟机,测试

[root@wjh2 ~]# curl 192.168.0.111

rs2rs2

[root@wjh2 ~]# curl 192.168.0.111

rs2rs2

[root@wjh2 ~]# curl 192.168.0.111

rs2rs2

[root@wjh2 ~]# curl 192.168.0.111

rs2rs2

会自动把rs1摘除掉,转到rs2上

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Keepalived+Nginx实现高可用和双主节点负载均衡

简介Nginx可以实现高并发反向代理,lvs集群可以实现负载均衡,但是他们都有一个共同的弊端,就是Nginx,lvs架构中Director是单点故障,有没有一个好的方案解决这个问题呢?答案是有。通过Keepalived就可以实现,前端Nginx,lvs中Director服务器的高可用和负载均衡,通过shell命令或者脚本可以实现对服务器状态和服务的监控!