LVS集群之十种调度算法及负载均衡(配置篇)

架构图:

1、安装keepalived

keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断、稳定的运行。所以,keepalived一方面具有服务器健康检测功能,另一方面也具有HA cluster功能。

[email protected]:~$  apt-get install keepalived
[email protected]:~$  vi /etc/keepalived/keepalived.conf
[email protected]:~$  cat /etc/keepalived/keepalived.conf

#Configuration File for keepalived

global_defs {
   router_id LVS_1   ##keepalived服务器标识
}

vrrp_instance VI_1 {
    state MASTER   ###指定Keepalived的角色,MASTER表示此主机是主用服务器,BACKUP表示是备用服务器。
    interface eth0    ### #指定HA监测网络的接口。
    virtual_router_id 51  ####虚拟路由标识,这个标识是一个数字,并且同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下,MASTER和BACKUP必须是一致的。
    priority 100   ##定义优先级,数字越大,优先级越高,在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。
    advert_int 1  ##设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒。
    nopreempt

    authentication {   ###设定验证类型和密码。
        auth_type PASS   ###设置验证类型,主要有PASS和AH两种。
        auth_pass 1234     ###设置验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信。
    }

    virtual_ipaddress {
        192.168.2.218
    }

}

virtual_server 192.168.2.218 80 {
    delay_loop 3    ###设置健康检查时间,单位是秒。
    lb_algo wlc     ###设置负载调度算法,详见:http://strongit.blog.51cto.com/10020534/1728596
    lb_kind DR    ###设置LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选。
    protocol TCP

    real_server 192.168.2.201 80 {
        TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }

    real_server 192.168.2.202 80 {
        TCP_CHECK {
        connect_timeout 3   ###3秒无响应超时
        nb_get_retry 3         #重试次数
        delay_before_retry 3  ##重试间隔
        connect_port 80
        }
    }

    real_server 192.168.2.203 80 {
        TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

virtual_server 192.168.2.218 5672 {
    delay_loop 3
    lb_algo wlc
    lb_kind DR
    protocol TCP

    real_server 192.168.2.201 5672 {
        TCP_CHECK {
#        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 5672
        }
    }

    real_server 192.168.2.202 5672 {
        TCP_CHECK {
#        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 5672
        }
    }

    real_server 192.168.2.203 5672 {
        TCP_CHECK {
#        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 5672
        }
     }
}

global_defs {
   router_id LVS_2
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 99
    nopreempt

    authentication {
        auth_type PASS
        auth_pass 1234
    }

    virtual_ipaddress {
        192.168.2.219
    }

}

virtual_server 192.168.2.219 80 {
    delay_loop 3
    lb_algo wlc
    lb_kind DR
#    persistence_timeout 3
    protocol TCP
    real_server 192.168.2.221 80 {
        TCP_CHECK {
    #    connect_timeout 3
        nb_get_retry 1
        delay_before_retry 1
        connect_port 80
        }
    }   

    real_server 192.168.2.222 80 {
        TCP_CHECK {
     #   connect_timeout 3
        nb_get_retry 1
        delay_before_retry 1
        connect_port 80
        }
    }   

    real_server 192.168.2.223 80 {
        TCP_CHECK {
      #  connect_timeout 3
        nb_get_retry 1
        delay_before_retry 1
        connect_port 80
        }
     }  

}

virtual_server 192.168.2.219 5672 {
    delay_loop 3
    lb_algo lblcr
    lb_kind DR
    protocol TCP

    real_server 192.168.2.221 5672 {
        TCP_CHECK {
       # connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 5672
        }
    }

    real_server 192.168.2.222 5672 {
        TCP_CHECK {
        #connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 5672
        }
    }

    real_server 192.168.2.223 5672 {
        TCP_CHECK {
        #connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 5672
        }
     }
}

在默认情况下,Keepalived在启动时会查找/etc/Keepalived/Keepalived.conf配置文件,如果你的配置文件放在了其它路径下,可以通过“Keepalived  -f”参数指定你所在的配置文件路径即可。

keepalived从的配置跟主就只有优先级那个地方不一样,要低于主的优先级,其它地方都一样。

2、web服务器端配置

添加虚拟ip(VIP)

ifconfig lo:0 192.168.2.218 netmask 255.255.255.255

3、测试LVS+Keepalived

/etc/init.d/keepalived restart 查看lvs-master日志:

在浏览器里面访问 http://192.168.2.218/ 即可!当你宕掉lvs-master后,lvs-backup会接管变成lvs-master提供服务,当lvs-master故障恢复后,lvs-backup又会变成原来的状态!

4、实战建议-脑裂

为了解决脑裂问题,需要把主MASTER和备BACKUP各自的keepalived.conf配置文件里面的state 状态都改成BACKUP,优先级分别设置10090

我们常听说脑裂问题,到底什么是脑裂问题呢?

在集群配置中的split-brain现象是指,主从之间互相检测不到心跳,同时抢占资源,导致服务无法正常访问的情况。所以我们还需要在主备keepalived.conf添加nopreempt 指令!

附realserver.sh脚本文件:摘自(吴光科老师关于LVS+Keepalived 高可用性负载均衡自动化配置

#!/bin/sh
#LVS Client Server
VIP=192.168.111.138
case  $1  in

start)

    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
    /sbin/route add -host $VIP dev lo:0
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    sysctl -p >/dev/null 2>&1
    echo "RealServer Start OK"
    exit 0
;;

stop)
    ifconfig lo:0 down
    route del $VIP >/dev/null 2>&1
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    echo "RealServer Stoped OK"
    exit 1
;;
*)
    echo "Usage: $0 {start|stop}"
;;
esac
时间: 2024-08-05 02:28:39

LVS集群之十种调度算法及负载均衡(配置篇)的相关文章

LVS集群之十种调度算法及负载均衡-理论

一.LVS概念 LVS(Linux Virtual Server):linux 虚拟服务器 LVS是个负载均衡设备,它不提供任何服务,用户请求到这里的时候,它是将客户需求转发至后端真正提供服务的服务,所以说后端的服务称作real server.LVS分为两段,前一段称为ipvsadm(管理集群服务的命令行工具),后面一段叫做ipvs(内核模块)[提示:LVS和iptables不能同时使用]. 二.LVS类型 LB(Load Balancing):负载均衡集群 特性:为了增加能力能力 HA(Hig

HAproxy负载均衡-配置篇

安装HAProxy及环境配置 红帽的yum源已经为我们提供了最新版本的haproxy,所以我们只需要yum安装即可 [[email protected] ~]# yum install haproxy -y 配置haproxy的日志 编辑rsyslog [[email protected] haproxy]# vim /etc/rsyslog.conf 将以下参数开启 $ModLoad imudp $UDPServerRun 514 加入参数: *.info;mail.none;authpriv

LVS集群十种调度算法及负载均衡理论

一.LVS概念 LVS(Linux Virtual Server):Linux 虚拟server: LVS是个负载均衡设备.它不提供不论什么服务.用户请求到这里的时候.它是将客户需求转发至后端真正提供服务的服务.所以说后端的服务称作real server: LVS分为两段,前一段称为ipvsadm(管理集群服务的命令行工具),后面一段叫做ipvs(内核模块): [提示]LVS和iptables不能同一时候使用: 二.LVS类型 LB(Load Balancing):负载均衡集群 特性:为了添加能

Xtradb+Haproxy高可用数据库集群(二)haproxy负载均衡篇

Xtradb集群部署完成后,3台机器都能同时读写,此时需要在前端搭建haproxy来进行负载均衡. 官网haproxy配置参考地址: https://www.percona.com/doc/percona-xtradb-cluster/5.6/howtos/virt_sandbox.html Haproxy服务器配置 拿一台机器用作haproxy,此处是192.168.6.219. 安装haproxy yum install haproxy -y 配置文件: [[email protected]

rocketmq的消费者集群消费消息,实现负载均衡

package com.bfxy.rocketmq.model; import java.util.List; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;import org.apache.rocketmq.client.consumer.listene

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性

Linux 虚拟服务器(LVS)由章文嵩在国防科技大学就读博士期间创建利用LVS可以实现高可用的.可伸缩的Web.Mail.Cache和Media等网络服务,已经被集成到linux内核里了. 1.什么是集群? 使用一组服务器提供相同的服务2.使用集群的目的? 增强可靠性   降低成本   提高可扩展性   提高性能3.集群分类? HPC 高性能计算集群    (气象   航天   航空)    LB    负载均衡集群 (平均地分摊处理)    * LVS    hproxy HA    高可用

lvs集群简介

LVS集群:开源免费,具有高可用性,高稳定性,高可靠性 高可用性:lvs的负载均衡集群具有很高的处理能力,real server组中的某台node节点出问题了,不会影响整个集群的正常工作:而且具有超高负荷的服务能力,可支持上百万个并发连接数 缺点:在LB上容易出现单点故障,若只有一台LB机,虽然LB机的负载不是很高,但是一旦出现问题整个集群将无法再正常工作:解决这个问题的方法是:对LB机做一个热备机(双机热备),正常情况下LB机工作,当LB机出现问题的时候由热备机接管,继续工作(备用LB机通过h

使用piranha搭建Linux Virtual Server (LVS)集群环境

最近做一下LVS集群方式的性能对比测试,在配置IP隧道方式时遇到一些诡异的问题: 1)     停止LVS服务后虚拟IP未被释放(似乎只有重启服务器才能释放,重启网卡.清空路由表.重启交换机等方式均无效): 2)     负载不均衡(有时会依次将压力全部压在其中一个成员身上,有时又是正常的): 之前测试"直接路由"方式时是手动配置方式,配置成功并没有发现问题.而这次使用IP隧道方式这么多问题,肯定是配置问题. 官方有介绍一个配置工具:piranha.在CentOS安装光盘也自带有,于是

LVS集群的负载调度

章文嵩 ([email protected]) 转自LVS官方资料 2002 年 5 月 本文主要讲述了LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法.针对请求的服务时间变化很大,给出一个动态反馈负载均衡算法,它结合内核中的加权连接调度算法,根据动态反馈回来的负载信息来调整服务器的权值,来进一步避免服务器间的负载不平衡. 1. 前言 在上一篇文章中,我们主要讲述了LVS集群中实现的三种IP负载均衡技术,它们主要解决系统的可伸缩性和透明性问题,如何通过负载调度器将请求高 效地分