• Linux负载均衡概念与实践(二)


    构建实践LVS+Keepalived实现负载均衡

    keepalived概述

    1.keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能——判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。

    2.keepalived的热备原理概述 keepalived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——有多台路由组成一个热备组,通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务 ,其他路由器处于冗余状态,若当前在线路由器失败,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。热备组内的每台路由器都有可能成为主路由器,虚拟路由器的IP地址可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用keepalived时,漂移地址的实现不需要手动建立虚接口配置文件,而是由keepalived根据配置文件自动管理。

    结构总览(图像来自网络)

     

    1、环境说明

    系统版本:ubuntu14.04 LTS

    LVS服务器:192.168.1.107,192.168.1.105

    真实服务器(Real Server):192.168.1.106,192.168.1.107,192.168.1.108

    VIP:192.168.1.70

    部署目的:

    用户请求192.168.1.70的报文转发至其它3个IP台机器,没一台机器配置的都是静态IP 106,107,108已经部署了apache2,监听8888端口,提供相同服务.

    LVS搭建在105,107上面,107为主,105为备

    2.Real Server上配置VIP的监听

    分别在Real Server上执行一下脚本root权限执行

    vim rs.sh

    #!/bin/bash

    SNS_VIP=192.168.1.70

    case "$1" in

      start)

        ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

    /sbin/route add -host $SNS_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"

    ;;

       stop)

    ifconfig lo:0 down /sbin/route del $SNS_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"

    ;;

      *)

        echo "Usage: $0 {start|stop}"

    exit 1

    esac

    exit 0

    保存该脚本,然后执行.(要有执行权限)

    ./rs.sh start

    3.LVS配置主从

    安装keeplived软件包

    apt-get install keepalived

    sudo vim /etc/keepalived/keepalived.conf

    globel_defs{

      notification_email{

        yangqingbin@gfan.com #指定keepalived在切换时需要发送到的email对象,一行一个

      }

      notification_email_from sns_lvs@gmail.com #指定发件人 smtp_server

      127.0.0.1 #指定SMTP服务器地址

      smtp_connection_timeout 30 #指定SMTP连接超时时间

      router_id easyfun-107 #设置lvs的id,在一个网络内应该是唯一的

    }

    vrrp_instance VI_1{

      state MASTER #指定keepalived的角色,MASTER为主,SLAVE为从,BACKUP为备

      interface eth0 #设置实例绑定到那个网卡

      virtual_router_id 51 #VRID标记(0~255),主备要保持相同

      priority 150 #优先级,MASTER要高于BACKUP的优先级(至少50)

      advert_int 1 #检查间隔时间,默认1秒

      authentication {

      auth_type PASS #指定要使用那一种认证(PASS|AH)

      auth_pass 123456 #指定要使用的密码字符串

      }

    virtual_ipaddress {

      192.168.1.70 #定义虚拟IP(VIP),可多设,每行-个

      }

    }

    #定义对外提供服务的LVS的VIP以及port

    virtual_server 192.168.1.70 8888 {

      delay_loop 1 #设置健康检测时间,单位为秒

      lb_algo wrr #设置LVS调度的算法rr|wrr|lc|wlc|lblc|lblcr|sh|dh

      lb_kind DR #设置LVS实现负载的机制,(NAT|TUN|DR)三个模式

      nat_mask 255.255.255.0

      persistence_timeout 60 #会话保持时间

      protocol TCP #使用的协议

      real_server 192.168.1.106 8888 { #指定real_server1的ip地址

        weight 3 #配置节点权值,数字越大权重越高

        TCP_CHECK {

          connect_timeout 10 #连接远程真实服务器超时时间(秒)

          nb_get_retry 3 #最大重试次数

          delay_before_retry 3 #连续两次重试的延迟时间(秒)

          connect_port 8888 #健康检查的端口

        }

      }

      real_server 192.168.1.108 8888 { #指定real_server2的ip地址

        weight 3 #配置节点权重

        TCP_CHECK {

          connect_timeout 10

          nb_get_retry 3

          delay_before_retry 3

          connect_port 8888

        }

      }

      real_server 192.168.1.107 8888 { #指定real_server2的ip地址

        weight 3 #配置节点权重

        TCP_CHECK {

          connect_timeout 10

          nb_get_retry 3

          delay_before_retry 3

          connect_port 8888

        }

      }

    }

    保存退出,

    开启keepalived服务

    service keepalived start

    查看状态 ipvsadm -L -n

    配置LVS从服务器(另一台LVS)

    apt-get install keepalived

    从服务器的配置和主服务器大致相同,要在keepalived.conf中修改两处 将state 由 MASTER改为BACKUP

    将priority由150改成100

    sudo vim /etc/keepalived/keepalived.conf

    vrrp_instance VI_1 {

      state BACKUP # 这里改为BACKUP

      interface eth1

      virtual_router_id 51

      priority 100 # 这里改为100,master优先级是150

      advert_int 1

      authentication {

      auth_type PASS

      auth_pass 1111

      }

    virtual_ipaddress {

      192.168.1.70

      }

    }

    保存退出,

    开启keepalived服务

    service keepalived start

    查看状态 ipvsadm -L -n

    4.验证负载均衡主从切换,以及模拟真实服务器down掉相应服务,查看ipvsadm的状态 ipvsadm -L c

  • 相关阅读:
    [Unity3D]查看与设置游戏帧数FPS
    [Unity3D]关于NaN(Not a Number)的问题
    Unity3D在WebPlayer模式下的异常上报探索
    .net错误处理机制
    .Net 下未捕获异常的处理
    Appstore 提交时错误
    播放器设置 Player Settings
    (转)WebApi发送HTML表单数据:文件上传与多部分MIME
    (转)那些年我们一起清除过的浮动
    AppCan上下拉列表刷新
  • 原文地址:https://www.cnblogs.com/mhten/p/4936548.html
Copyright © 2020-2023  润新知