zoukankan      html  css  js  c++  java
  • lvs+keepalived高可用集群

    LVS的三种包转发方式

    NET方式(VS/NET模式)

    请求和相应的包都要经过调度器因此网站访问量较大的时候负载均衡调度器可能down掉

     NAT技术将请求的报文和响应的报文都需要通过LB进行地址改写,因此网站访问量比较大的时候LB负载均衡调度器有比较大的瓶颈,一般要求最多只能10-20台节点

     缺点:延迟

    隧道方式(VS/TUN模式)

    调度器接受客户端请求报文转发给真实服务器(IP隧道方式),真实服务器直接将响应返回给客户端,这样调度器只用处理请求报文,减少了调度器的工作量。

    直接路由方式(VS/DR模式)

    跟隧道方式类似,不同点在于调度器将数据发送给RS是通过MAC地址转发的

    (实际上是往整个局域网发送,但只有该MAC地址的RS才不会丢弃)

     

    调度方式:

    轮叫调度(轮询调度):RR

    按依次循环的方式将请求调度到不同的服务器上

    平均分配给每个服务器

    加权轮叫调度:WRR

    为每台服务器添加权值,权值越高处理的数据越多

    最小连接调度:LC

    将最新的请求分配到连接数最小的服务器,是一种动态调度算法

    加权最小链接调度:WLC

    根据每台服务器的性能设置权值,经可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

    基于局部的最少连接:LBLC

    先找出这个请求的ip地址最近使用的服务器,如果这个服务器可用且没有有超载,则将请求发送给该服务器,如果服务器不存在或者超载则按照“最少连接(LC)”的原则将请求发送到一个可用服务器

    带复制的基于局部性的最少连接:LBLC

    它与LBLC算法不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。按'最小连接'原则从该服务器组中选出一一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按'最小连接'原则从整个集群中选出一台服务器,将该服务器加入到这个服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

    目标地址散列调度(HD)

    算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。

    源地址散列调度(SH)

    与目标地址散列调度(HD)基本相似

    最短的期望的延迟(SED)

    每台服务器有权重值,通过运算后将请求发送给运算结果最小的服务器

    最少队列调度(NQ)

    算法,无需队列。如果有realserver的连接数等于0就直接分配过去,不需要在进行SED运算。

    原文地址:https://www.cnblogs.com/f-ck-need-u/p/8451982.html

    keepalived

    keepalived是一个类似于layer3, 4 & 7交换机制的软件。这里用来检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

    两个功能:

    检测:

    工作在IP 、TCP、应用层(网络层,传输层,应用层)

    VRRP(热备份):

    有两台及以上调度器时,keeplived可以设置优先级,通过同一个虚拟ip访问,如果调度器down掉了,keepalived就会使用备用的调度器。

     如图所示,如果master服务器down掉了,就会使用备用服务器slava

    实验:

    1、首先先使几台机器互通网络

    这里有三台机器

    172.16.13.110

    172.16.13.111

    172.16.13.112

     

     

    以下步骤2-7部是在director上(172.16.13.110)上

    2、然后安装软件

    ipvsadm

     

    keepalived

    3、关闭防火墙和selinux机制

    通过

    systemctl stop firewalld

    setenforce 0

    查看,此时已经是关闭状态

    测试最好将所有主机的防火墙和selinux机制关掉

    测试好之后再开启防火墙,开放相应服务和端口

     

    4、修改配置文件

    /etc/keepalived/keepalived.conf

    如下:

    ! Configuration File for keepalived

    global_defs {
    notification_email {
    acassen@firewall.loc
    failover@firewall.loc
    sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
    }

    vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    172.16.13.119
    }
    }

    virtual_server 172.16.13.119 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 172.16.13.111 80 {
    weight 1
    TCP_CHECK {
    connect_timeout 10
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }

    }
    }

    注意:新安装的keepalived中可能有这几句话,需要删掉

    否则外面访问不了

    正常情况是先重启网卡再重启服务,ifconfig看到的ip就是本机ip

    ip冲突也会出问题

     

    问题:

    重启keepalivd会关闭网卡,也就是IP地址没有了

    先重启keepalived重启网卡ip会变成虚拟IP,但是无法通过虚拟ip172.16.13.119访问

    先重启网卡再重启keepalivd里面可以通过虚拟ip访问外面不行

     

    参考:

    这里需要注意:

     是127.0.0.1

     网卡是自己电脑网卡的名字这里的虚拟机是ens33

    这里指定虚拟ip

     

    这里设置虚拟ip下的服务器的ip

     

    5、开启转发

     修改文件/etc/sysctl.conf

    检测:

    6、启动服务并设置开机自启

    重启network服务

    启动ens33网卡

    启动keepalived服务

    原是开启或关闭某种服务,关闭是chkconfig keepalived off

    在centos7下会执行开机自启命令,或者使用systemctl enable keepalived

    开启服务:

    systemctl start keepalived

    启动ipvsadm

    第一次启动如果报错执行一下命令:

    ipvsadm --save > /etc/sysconfig/ipvsadm

     

    7、检查

    ps afx|grep keepalived

    查看进程keepalived是否运行

    ip a

    查看vip(虚拟地址)172.16.13.119有没有再master上

    注:如果执行ip a 后ens33的inet没有自己之前再keepalivad里面的虚拟IP地址就重启一下network服务,再重启网卡,之后再执行ip a 就会出现了

    ipvsadm –ln

    此命令用于查看有哪些real server上的web服务处于开启状态

    这里还没有real server是因为还没有配置real server

     

    8- 步骤在real server上(172.16.13.111)

    8、首先在real server上安装nginx

    yum –y install nginx

    安装后开启服务并访问主页检查是否成功

    注意安装好nginx访问主页,可能访问到的不是nginx的主页而是centos的主页

    如下图:

    9、创建一个名叫ppserver的脚本文件

    内容如下:

    #!/bin/bash

    VIP=172.16.13.119

    case $1 in

    start)

    echo "Start LVS of DS"

    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP

    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

    ;;

    stop)

    echo "Stop LVS of DR"

    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 "Usage:$0 {start|stop}"

    ;;

    esac

    修改权限

    此文件功能是将VIP(虚拟地址)注册到本机lo.0网卡上

    10、执行命令

    service appserver start

    相当于启动脚本,可以理解为启动服务

    也可以设置开机启动

    11、查看

     已经生成了虚拟网卡

    12、测试:

    可以访问

     

     

    注:如果后面做完测试,一定要注意服务启动顺序,否则可能导致测试失败,如果执行ip a后ens33没有,重启网卡——重启ipvsadm——重启keepalived

    启动服务需要先启动network服务,再启动keepalived服务

     

    以此方法,再建一个director和real server

    配置两个director即使master挂掉了也可以通过salve访问

    (master和salve看下图)

  • 相关阅读:
    2018-10-25 模拟测试题解
    bzoj1218 [HNOI2003]激光炸弹题解
    poj1958 Strange Towers of Hanoi 题解
    NOIP2018游记
    6-序列公共用法:索引和切片
    5-编码格式
    4-格式化
    3-课后习题记录-就放这里了
    2-条件语句和循环语句
    1-基本数据类型的操作
  • 原文地址:https://www.cnblogs.com/zhuyunlong/p/11924149.html
Copyright © 2011-2022 走看看