LVS负载均衡简单配置

LVS的安装与使用

第1章 LVS原理及介绍

1.1 LVS简介

LVS是Linux Virtual Server的简写,意思就是Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立,是中国国内最早出现的自由软件项目之一。

LVS项目介绍:

LVS项目主页:http://www.linuxvirtualserver.org/

LVS项目介绍:http://www.linuxvirtualserver.org/zh/lvs1.html

LVS集群的体系结构:http://www.linuxvirtualserver.org/zh/lvs2.html

LVS集群中的IP负载均衡技术:http://www.linuxvirtualserver.org/zh/lvs3.html

LVS集群的负载调度:http://www.linuxvirtualserver.org/zh/lvs4.html

LVS负载均衡调度技术是在Linux内核中实现的,因此,被称之为Linux虚拟服务器(Linux Virtual Server)。我们使用该软件配置LVS时候,不能直接配置内核中的ipvs,而需要使用ipvs的管理工具ipvsadm进行管理。

q  LVS技术点小结:

1、真正实现调度的工具是IPVS,工作在Linux内核层面。

2、LVS自带的IPVS命令行管理工具是ipvsadm。

3、keepalived实现管理IPVS及负载均衡器的高可用。

4、Red hat工具Piranha WEB管理实现调度的工具IPVS。

1.2 简单术语介绍


术语简写


术语含义


CIP


客户端的IP地址,client ip


DIP


负载均衡器对应的实际IP地址


VIP


需在均衡器提供服务的地址


RIP


提供服务的节点地址


LB


负载均衡服务器


RS


节点服务器,Real   Server

1.3 DR模式介绍(Direct Routing)

1、通过在调度器LB上修改数据包的目的MAC地址实现转发,注意,源IP地址任然是CIP,目的地址任然是VIP。

2、请求报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式比)。

3、因DR模式是通过MAC地址的改写机制实现的转发,因此,所有的RS节点和调度器LB只能在一个局域网LAN中(小缺点)。

4、需要注意RS节点的VIP的绑定(lo:vip/32,lo1:vip/32)和ARP抑制问题。

5、强调下:RS节点的默认网关不需要是调度器LB的DIP,而是直接IDC机房分配的上级路由器的IP(这是RS带有外网IP地址的情况),理论讲:只要RS可以出网即可,不是必须要配置外网IP。

6、由于DR模式的调度器仅进行了目的的MAC地址的改写,因此,调度器LB无法改变请求报文的目的端口(和NAT要区别)。

7、当前,调度器LB支持几乎所有的UNIX,LINUX系统,但目前不支持WINDOWS系统。真实服务器RS节点可以是WINDOWS系统。

8、总的来说DR模式效率很高,但是配置也比较麻烦,因此,访问量不是特别大的情况下可以用haproxy或者nginx取代。这符合运维的原则:简单、易用、高效。日1000-2000W PV或并发1万以下都可以考虑使用haproxy/nginx(LVS NAT模式)。

9、直接对外的访问业务,例如:web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQL,存储系统RS节点,最好只用内部IP地址。

注:直接路由,最大的特点是不更改源IP和目标IP,改变的是MAC地址

1.4 LVS集群算法


算法


说明


rr


轮循调度(Round-Robin),它将请求依次分配不同的RS节点,也就是在RS节点中均摊请求。这种算法很简单,但是只适合于RS节点处理性能相差不大的情况。


wrr


加权轮循调度(Weighted   Round-Robin),它将依据不同的RS节点的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值较低的RS节点更多。相同权值的RS得到相同数目的连接数。


wlc


加权最小连接数调度(Weighted   Least-Connection)假设各台RS的权值依次为Wi(I=1..n),当前的TCP连接次数依次为Ti(I=1..n),依次选取Ti/Wi为最小的RS作为下一个分配的RS。


dh


目的地址哈希调度,以目的地址为关键字查找一个静态hash表来获得需要的RS。


sh


源地址哈希调度,以源地址为关键字查找一个静态hash表来获得需要的RS。

第2章 LVS的安装与配置

2.1 服务规划

2.1.1 服务器规划表


LVS服务器


2台


负载转发四层TCP请求


HTTP服务器


2台


负载提供HTTP服务


说明:总共需要4台服务器完成本次项目

2.1.2 主机IP规划表


服务器说明


IP地址


主机名称规则


LVS服务器


10.0.0.18/24


lb01


LVS服务器


10.0.0.19/24


lb02


Nginx服务器


10.0.0.16/24


nginx


Apache服务器


10.0.0.17/24


apache


10.0.0.21/24


虚拟IP地址

2.1.3 主机名解析

172.16.1.16    nginx

172.16.1.17    apache

172.16.1.18    lb01

172.16.1.19    lb02

2.2 安装环境

q  操作系统版本

[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[[email protected] ~]# uname -r
2.6.32-431.el6.x86_64
[[email protected] ~]# uname -m
x86_64

q  LVS软件版本

[[email protected] ~]# rpm -qa ipvsadm
ipvsadm-1.26-4.el6.x86_64

2.3 软件安装

2.3.1 安装LVS服务

LVS可以通过yum命令安装,或者通过源码编译的方式安装,在此选择yum安装。分别在两台LVS服务器安装LVS服务,安装过程如下:

q  查看是否已安装inotify

[[email protected] ~]# rpm -qa ipvsadm
[[email protected] ~]#

#<==这里如果没有任何返回值就表明没有安装

q  使用yum命令安装软件

[[email protected] ~]# yum -y install ipvsadm
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
*****自动安装过程略****  
Installed:
  ipvsadm.x86_64 0:1.26-4.el6                                                                                                                                                
 
Complete!    #<==安装完成
[[email protected] ~]# ln -s /usr/src/kernels/2.6.32-431.el6.x86_64/ /usr/src/linux    #<==创立软链接
[[email protected] ~]# ll /usr/src/linux

注:如果没有/usr/src/kernels/2.6.32-431.el6.x86_64路径,可能是因为缺少kernel-devel-2.6.18-164.el5软件包,可以通过命令yum -y install kernerl-devel 安装。

q  检测是否安装完毕

[[email protected] ~]# rpm -qa ipvsadm
ipvsadm-1.26-4.el6.x86_64

q  查看内核是否有ip_vs服务运行

[[email protected] ~]# lsmod | grep ip_vs
ip_vs                 125220  0
libcrc32c               1246  1 ip_vs
ipv6                  317340  285 ip_vs

注:如果没有以上三个输出,可以使用命令ipvsadm或者modprobe ip_vs重新加载。

2.3.2 安装其他服务

1)在nginx服务器安装nginx服务,能正常提供访问;

2)在apache服务器安装apache服务,能正常提供访问;

3)在lb01和lb02安装keepalived服务。

[[email protected] ~]# curl nginx
www
[[email protected] ~]# curl apache
apache.www

第3章 配置LVS集群

3.1 手动配置LVS服务

3.1.1 服务端配置

为LVS服务器添加一个虚拟IP地址:

ip addr add 10.0.0.21/24 dev eth0 label eth0:0

清空以前的旧配置:

ipvsadm --help          #<==查看ipvsadm的配置参数
ipvsadm -C              #<==清空所有配置

添加一个虚拟vserver:

ipvsadm -A -t 10.0.0.21:80 -s wrr

参数说明:

-A:--add-service,表示添加一个虚拟服务器

-t:--tcp-service,指定这是一个tcp的虚拟服务器

-u:--udp-service,指定这是一个udp的虚拟服务器

10.0.0.21:80:表示提供服务的ip地址以及端口号

-s:--scheduler,指定调度器,“rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq”选择一种,默认是wlc

为服务器添加real server:

ipvsadm -a -t 10.0.0.21:80 -r 10.0.0.16:80 -g -w 1
ipvsadm -a -t 10.0.0.21:80 -r 10.0.0.17:80 -g -w 1

3.1.2 节点端配置

需要添加到LVS负载均衡器的节点都需做如下配置:

q  绑定VIP

在网卡lo绑定虚拟IP,该虚拟IP同LVS服务器的虚拟IP,即10.0.0.21/24

ip addr add 10.0.0.21/32 dev lo label lo:0
route add -host 10.0.0.21 dev lo

q  设置ARP抑制

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

q  抑制参数说明


arp_ignore:定义目标地址为本地IP的ARP询问不同的应答模式


0


默认值,回应任何网络接口上对任何本地IP地址的arp查询请求


1


只回答目标IP地址是来访网络接口本地地址的ARP查询请求


2


只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内。


3


不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应。


4-7


保留未使用。


8


不回应所有(本地地址)的arp查询


arp_announce:对网络接口上,本地IP地址发出的,ARP回应,作出相应级别的限制。确定不同程序的限制,宣布对来自本地源IP地址发出的ARP请求接口。


0


默认值,在任意网络接口(eth0,eth1,lo)上任何本地地址。


1


尽量避免不在该网络子网段的地址作出arp回应。当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用,此时会检查来访IP是否为所有接口上的子网段内IP之一。如果该来访者IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理。


2


对查询目标使用最适当的本地地址,在此模式下忽略这个IP数据包的源地址并尝试选择能与该地址通信的本地地址,首要是选择所有网络接口的子网中外出访问子网中包目标IP地址的本地地址。如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送,限制了使用本地VIP地址作为优先的网络接口

3.1.3 结果服务验证

访问10.0.0.21:80,查看结果是否轮循。

[[email protected] ~]# curl 10.0.0.21:80
apache.www
[[email protected] ~]# curl 10.0.0.21:80
www
[[email protected] ~]# curl 10.0.0.21:80
apache.www
[[email protected] ~]# curl 10.0.0.21:80
www

3.2 keepalived配置LVS服务

除了手动配置LVS服务器之外,使用keepalived管理LVS是一种更好的选择。keepalived默认就集成了管理LVS的功能,其配置LVS虚拟服务器内容如下:

###############################
#      LVS的配置部分        #
###############################
virtual_server 10.0.0.21 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP
 
    real_server 10.0.0.16 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 5
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
          }
        }
 
    real_server 10.0.0.17 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 5
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
          }
        }
}

原文地址:http://blog.51cto.com/13178102/2063272

时间: 2024-11-05 17:18:36

LVS负载均衡简单配置的相关文章

nginx负载均衡简单配置

准备三台虚拟机来做这个实验: 192.168.232.132        web服务器 192.168.232.133        web服务器 192.168.232.134        负载均衡服务器 首先三台电脑预装nginx软件: 1.导入外部软件库 rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/i386/epel-release-6-5.noarch.rpm rpm -Uvh http://dl.iusco

nginx 负载均衡简单配置

配置要求: 三台服务器 127.0.0.1       主负载(把访问请求分给主机池) 127.0.0.2       主机2 127.0.0.3       主机3 第一步: 配置127.0.0.1(主负载)主机 nginx.conf文件 将主机池添加于 nginx.conf文件中的http 中 upstream mysvr{ server 127.0.0.2 weight=1; server 127.0.0.3 weight=3;} 如图: 主机池参数简介 weight 为该主机权重(图中配

负载均衡简单配置

首先,准备好配置环境:最少开三台服务器,并下编译好nginx命令,做好映射. 先在主配置服务器配置文件: vim /usr/local/nginx/conf/nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime,types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; ups

使用LVS负载均衡搭建web群集的原理及安装配置详解

一.负载均衡LVS基本介绍 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器.这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org. LVS是Linux内核标准的一部分.LVS是一个实现负载均衡集群的开源软件项目,通过 LVS 的负载均衡技术和 Linux操作系统可以实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性.可扩展性和可操作性.LVS架构从逻辑上可分为调度层.Se

Linux LVS(Linux virtual server)V1.26 负载均衡 详细配置教程

2 Linux LVS(Linux virtual server)V1.26 负载均衡 配置思路: 安装LVS服务器 在LVS服务器上安装kernel 链接内核文件 并手动绑定VIP 配置realserver后端服务,手动执行VIP绑定脚本 2.1 LVS 概念 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org.现在LVS已经是 Linux标准内核的一部分

LVS集群之十种调度算法及负载均衡(配置篇)

架构图: 1.安装keepalived keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断.稳定的运行.所以,keepalived一方面具有服务器健康检测功能,另一方面也具有HA cluster功能. [email protected]:~$ apt

Window 2008 IIS配置LVS负载均衡一

      LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.承载于 IIS 的 WCF 服务的项目采用LVS + KEEPALIVED + WINDOWS SERVER 2008 R2 的方式实现高可用负载均衡. 1.设置 Windows Loopback Adapter 以上就是配置好了我们的lvs 网卡. 2.修改客户端网卡接口.环回接口连接模式 以管理

负载均衡介绍、LVS介绍、算法介绍、LVS_NAT负载均衡模式配置

负载均衡 主流开源软件:LVS.keepalived.haproxy.nginx等:OSI层:LVS(4).nginx(7).haproxy(4.7):keepalived的负载均衡功能其实就是lvsLVS负载均衡可以分发除了80以外的其他端口通信,比如MySQL,而nginx仅仅支持http.https.mail: LVS介绍 最新版本:基于Linux内核2.6常见三种模式:NAT.DR.IP TunnelLVS架构中有一个核心角色叫分发器(Load Balance),用来分发用户的请求,还有

大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台. 亮点一:真实环境还原,课程采用了VM环境重现大网站集群服务器环境,真实环境还原再现. 亮点二:基础实用,细节决定成败,课程内容在演练过程中重点介绍各种细节,保证初级人员快速入门及高级进阶. 亮点三:讲师丰富的海量平台运作经验 讲师tom5多