当前位置: 移动技术网 > 科技>操作系统>Linux > IP负载均衡

IP负载均衡

2018年09月30日  | 移动技术网科技  | 我要评论

推荐一篇关于lvs的好文:

https://www.cnblogs.com/gaoxu387/p/7941381.html

一、原博主要内容:

1、概述

ip负载均衡:四层负载,是基于ip+端口的负载均衡,主要代表是lvs(linux virtual server

lvs工作原理:lvs的ip负载均衡技术是通过ipvs模块实现的,ipvs模块工作在内核空间。

2、lvs的工作模式

a、dr模式
通过 mac 地址改写机制实现转发,集群局限于局域网内,需要设置lo接口的vip不能响应本地网络内的arp请求。
b、tun模式
通过再封装一层ip报文转发,集群可在公网上。
c、nat模式
通过修改ip报文转发,集群局限在局域网内。

3、lvs的调度算法

  • 轮叫调度(round-robin scheduling)
  • 加权轮叫调度(weighted round-robin scheduling)
  • 最小连接调度(least-connection scheduling)
  • 加权最小连接调度(weighted least-connection scheduling)
  • 基于局部性的最少链接(locality-based least connections scheduling)
  • 带复制的基于局部性最少链接(locality-based least connections with replication scheduling)
  • 目标地址散列调度(destination hashing scheduling)
  • 源地址散列调度(source hashing scheduling)

 固定调度算法:rr,wrr,dh,sh

 动态调度算法:wlc,lc,lblc,lblcr

 

二、dr模式的配置

 这里介绍一下dr模式的配置。
1、负载均衡服务器:一般对外的负载均衡器须具有灾备能力,在负载均衡服务器上安装keepalived,并完成keepalived的配置,配置如下:
! 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 192.168.200.1
   smtp_connect_timeout 30
   router_id lvs_devel
}

vrrp_instance vi_epg {
    state master   //主用设置为master,备用设置为backup
    interface bond0
    virtual_router_id 64
    priority 100  //主用优先级要比备用优先级高
    advert_int 1
    authentication {
        auth_type pass
        auth_pass 1111
    }
    virtual_ipaddress {
        111.11.11.10  //对外vip
    }
}
virtual_server 111.11.11.10 6600 {
    delay_loop 6
    lb_algo rr   //调度算法rr,也可以设置其他算法
    lb_kind dr   //负载均衡模式为dr
    persistence_timeout 20
    protocol tcp

real_server 111.11.11.21 6600 {
        weight 1
        tcp_check {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
        }
    }
real_server 111.11.11.22 6600 {
        weight 1
        tcp_check {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
        }
    }

real_server 111.11.11.23 6600 {
        weight 1
        tcp_check {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
        }
    }   
}
2、rs节点服务器:需要设置lo接口的vip,且设置其不能响应本地网络内的arp请求,可执行脚本:
 1 #!/bin/bash
 2 # description: config realserver lo and apply noarp
 3 vip=111.11.11.10
 4 
 5 . /etc/rc.d/init.d/functions
 6 
 7 case "$1" in
 8 start)
 9        echo "1" >/proc/sys/net/ipv4/conf/bond0/arp_ignore
10        echo "2" >/proc/sys/net/ipv4/conf/bond0/arp_announce
11        echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
12        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
13        sysctl -p >/dev/null 2>&1
14       ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip
15        /sbin/route add -host $vip dev lo:0
16        echo "realserver start ok"
17        ;;
18 stop)
19        ifconfig lo:0 down
20        route del $vip >/dev/null 2>&1
21        echo "0" >/proc/sys/net/ipv4/conf/bond0/arp_ignore
22        echo "0" >/proc/sys/net/ipv4/conf/bond0/arp_announce
23        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
24        echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
25        echo "realserver stoped"
26        ;;
27 status)
28         # status of lvs-dr real server.
29         islothere=`/sbin/ifconfig lo:0 | grep $vip`
30         isrothere=`netstat -rn | grep "lo:0" | grep $vip`
31         if [ ! "$islothere" -o ! "isrothere" ];then
32             # either the route or the lo:0 device
33             # not found.
34             echo "lvs-dr real server stopped."
35         else
36             echo "lvs-dr running."
37           fi
38 ;;
39 *)
40         # invalid entry.
41         echo "$0: usage: $0 {start|status|stop}"
42         exit 1
43 ;;
44 esac
45 exit 0

注意:此脚本最好设置成开机执行,如脚本名称为realserver.sh,放置在/usr/bin/路径下,赋可执行权限,在/etc/rc.local的末尾添加一行:/usr/bin/realserver.sh start

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网