码迷,mamicode.com
首页 > 其他好文 > 详细

LVS负载均衡

时间:2018-03-20 18:17:43      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:LVS

LVS

第1章 关于负载均衡

1.1 负载均衡的妙用

负载均衡集群提供了一种廉价,有效,透明的方法,来扩展网络设备和带宽,增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性

1.      单台计算机无法承受大规模的并发访问或数据流量了,此时就需要搭建负载均衡集群把流量分摊到多台节点设备上,即减少了等待响应时间又提升了用户的体验

2.      7*24小时的服务保证,任意或多个有限后端节点设备宕机,不会影响整体业务的运行

1.2 为什么要用LVS?

简单一句话,当并发访问太多,nginx无法承受时,就要用到LVS

当日pv1000-2000w或者并发请求一万以下时,都可以使用nginx

1.3 什么是LVS?

LVSlinux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/linux平台下是实现负载均衡集群功能,该项目在19985月由章文嵩博士组织成立,是中国国内最早出现的自由软件项目之一

第2章 利用ipvsadm管理LVS:

2.1 下面是lb01操作步骤

yum -y install ipvsadm                    

[root@lb01 ~]# lsmod|grep ip_vs

[root@lb01 ~]# ipvsadm                     激活ip_vs模块

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[root@lb01 ~]# lsmod|grep ip_vs            再次查看,就有结果显示了

ip_vs                 140944  0

nf_conntrack          105745  1 ip_vs

libcrc32c              12644  2 xfs,ip_vs

2.1.1 步骤说明:

1.      eth0网卡绑定vip地址

2.      清除当前所有LVS规则

3.      设置tcp/tcpfin/udp连接超时时间

4.      添虚拟服务(-A),和调度算法指定(-s)

5.      将虚拟服务关联到真实服务

6.      查看配置结果

2.2 ipvsadm命令参数说明:

-A  添加虚拟服务

-s  指定调度算法

-g  指定工作模式为DR模式

-w  指定权重

-a  增加真实服务器

-m  指定工作模式为nat模式

-t  表示为tcp服务

-r  真实服务器的地址

ip addr add 10.0.0.13/24 dev eth0

ip address show eth0

ipvsadm -C            

ipvsadm --set 30 5 60

ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20

ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1

ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1

ipvsadm –ln

2.3 客户端操作:所有web节点都要执行此步骤

2.3.1 lo网卡上绑定vip地址

[root@web04 conf]# ip addr add 10.0.0.13/32 dev lo

2.3.2 修改内核参数,一直arp响应

[root@web04 conf]# cat >>/etc/sysctl.conf<<EOF

> net.ipv4.conf.all.arp_ignore = 1

> net.ipv4.conf.all.arp_announce = 2

> net.ipv4.conf.lo.arp_ignore = 1

> net.ipv4.conf.lo.arp_announce = 2

> EOF

[root@web04 conf]# sysctl -p

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

浏览器上进行测试:输入虚ip地址

技术分享图片

第1章 相关问题:

1.1 问题1:

浏览器访问没有发现轮询效果

:

LVS的轮询不想nginx明显,LVS是宏观上的,大并发的情况下进行轮询,如果每一次都进行轮询,实际上也会消耗一定的资源,因此可以使用多个客户端进行访问

1.2 问题2:

使用抓包工具,发现进行通信的是windowsiplb0180端口,但是lb01上本没有80端口

:

用抓包工具查看,可以发现数据包的源mac地址是web01web02

1.3 问题3:

客户端的操作有什么含义?

1.3.1 RS为什么要在lo接口上配置vip?

既然要让RS能够处理目标地址为vipip,首先必须要让RS能接受到这个包,lo上配置vip能够完成接受包并将结果返回客户端

1.3.2 eth0网卡上配置vip可以吗?

不可以!vip配置在eth0,会影响RSarp请求,造成整体LVS集群arp缓存表紊乱,以至于整个负载均衡集群都不能正常工作

1.3.3 为什么要抑制arp响应?

因为当客户端发送请求报文时需要进行广播,询问谁有vip,如果web节点抢先进行响应的话,会导致请求地址发给了web节点,就不会到达负载均衡上,也就失去了负载均衡的功能

arp_announce---对网络接口上,本地ip地址发出的,arp回应,作出相应级别的限制

arp_ignore---对目标地址为本地iparp询问不同的应答模式

第2章 负载均衡相关名词概念

技术分享图片

CIP---客户端主机ip地址

VIP---虚拟ip地址

DIP---负载均衡服务器ip地址

RIP---web服务器真实ip地址

第1章 LVS集群的工作模式:

1.1 DR直接路由模式:

DR直接路由模式:是通过改写请求报文的目标mac地址,将请求发给真实服务器的,而真实服务器响应之后的处理结果直接返回给客户端

DR技术可以极大的提高集群系统的伸缩性,但要求调度器LB与真实服务器RS都有一块物理网卡连在同一物理网段上,即必须在同一局域网中

1.2 NAT模式

通过网络地址转换,负载均衡重写请求报文的标ip地址,根据响应算法,将请求分配给后端的真实服务器,真实服务器处理后,将响应结果返回给负载均衡,有负载均衡服务器重写源ip地址,再返回给客户端,这个过程就相当于收费站

1.3 TUN模式:

1.4 FULLNAT模式

技术分享图片

1.1 查看同一局域网中某台主机的mac地址:

[root@lb01 ~]# arping -c 1 -I eth0 10.0.0.17

ARPING 10.0.0.17 from 10.0.0.5 eth0

Unicast reply from 10.0.0.17 [00:0C:29:4D:90:0D]  3.682ms

Sent 1 probes (1 broadcast(s))

Received 1 response(s)

第2章 服务器切换arp缓存:

2.1 lb01操作:

现在viplb01服务器上,如果lb01宕机后,vip会随之飘移,关闭lb01上所有网卡

[root@lb01 ~]# ip a

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:14:39:b8 brd ff:ff:ff:ff:ff:ff

inet 10.0.0.13/24 scope global secondary eth0

2.2 lb02上操作:

[root@lb02 ~]# ip a

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:1b:84:3c brd ff:ff:ff:ff:ff:ff

inet 10.0.0.13/24 scope global secondary eth0

vip漂移后mac地址发生改变,此时要进行arp广播,通知其他主机,vipmac地址已经改变

[root@lb02 ~]# arping -I eth0 -c 1 -U 10.0.0.13

ARPING 10.0.0.13 from 10.0.0.13 eth0

Sent 1 probes (1 broadcast(s))

Received 0 response(s)

2.3 windows上查看arp缓存

技术分享图片

第1章 利用keepalived管理LVS

1.1 配置keepalived单实例主备模式:

1.1.1 lb01lb02安装keepalived软件

yum -y install keepalived

1.1.2 修改keepalived配置文件

技术分享图片

技术分享图片

1.1.1 lb01配置文件

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf

global_defs {

   router_id LVS_03

}

 

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 150

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     10.0.0.13/24

    }

}

 

virtual_server 10.0.0.13 80 {

    delay_loop 6           

    lb_algo wrr               

    lb_kind DR               

    nat_mask 255.255.255.0

    persistence_timeout 50    

    protocol TCP               

 

    real_server 10.0.0.17 80 {

        weight 1             

        TCP_CHECK {

        connect_timeout 8      

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

 

    real_server 10.0.0.18 80 {

        weight 1             

        TCP_CHECK {

        connect_timeout 8      

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

}

1.1.2 lb02配置文件:

[root@lb02 ~]# cat /etc/keepalived/keepalived.conf

global_defs {

   router_id LVS_04

}

 

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     10.0.0.13/24

    }

}

virtual_server 10.0.0.13 80 {

    delay_loop 6         

    lb_algo wrr               

    lb_kind DR               

    nat_mask 255.255.255.0

    persistence_timeout 50    

    protocol TCP               

 

    real_server 10.0.0.17 80 {

        weight 1             

        TCP_CHECK {

        connect_timeout 8      

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

 

    real_server 10.0.0.18 80 {

        weight 1             

        TCP_CHECK {

        connect_timeout 8      

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

}

1.1.3 启动所有keepalived服务即可

systemctl start keepalived.service


LVS负载均衡

标签:LVS

原文地址:http://blog.51cto.com/13520772/2089026

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!