zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【HTML5 绘图与动画】使用canvas
    【H5新增元素和文档结构】新的全局属性 1. contentEditable 可编辑内容 2. contextmenu 快捷菜单 3. data 自定义属性 4. draggable 可拖动 5. dropzone 拖动数据 6. hidden 隐藏 7. spellcheck 语法检查 8. translate 可翻译
    【H5新增元素和文档结构】完善旧元素 1. a 超链接 2. ol 有序列表 3. dl 定义列表 4. cite 引用文本 5. small 小号字体 6. iframe 浮动框架 7. script 脚本
    【H5新增元素和文档结构】新的语义信息 1. address 2. time 3. figure 跟 figcaption 4. details 和 summary 5. mark 6. progress 7. meter 8. dialog 9.bdi 10. wbr 11. ruby、rt、rp 12. command
    【H5新增元素跟文档结构】新的文档结构 1. article 文章块 2. section 区块 3. nav 导航条 4. aside 辅助栏 5. main 主要区域 6. header 标题栏 7. hgroup 标题组 8. footer 页脚栏
    5_PHP数组_3_数组处理函数及其应用_9_数组集合运算函数
    【华为云技术分享】鲲鹏弹性云服务器GCC交叉编译环境搭建指南
    【华为云技术分享】7 分钟全面了解位运算
    【华为云技术分享】Linux内核编程环境 (1)
    【华为云技术分享】华为云MySQL 8.0正式商用,全新增强版开源利器强势来袭
  • 原文地址:https://www.cnblogs.com/mhten/p/4936548.html
Copyright © 2011-2022 走看看