LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)

一,简介

LVS(Linux Virtual Server) 是Unix-like系统中的一个虚拟服务器,是国内贡献给开源组织的一个最优秀的项目之一。LVS在Unix-like系统中

是作为一个前端(Director)存在的,又称为调度器,它本身不提供任何的服务,只是将通过互联网进来的请求接受后再转发给后台运行的真正的

服务器(RealServer)进行处理,然后响应给客户端。

LVS有两个重要的组件:一个是IPVS,一个是IPVSADM。ipvs是LVS的核心组件,它本身只是一个框架,类似于iptables,工作于内核空间中。

ipvsadm 是用来定义LVS的转发规则的,工作于用户空间中。

LVS有三种转发类型:

1.LVS-NAT模型,称为网络地址转换,实现起来比较简单。

2.LVS-DR模型,称为直接路由模型,应用比较广泛。

3.LVS-TUN模型,称为隧道模型。

二、LVS的三种模型的工作属性:

1.LVS-NAT模型的工作属性或特:

(1).所有的RealServer集群节点和前端调度器Director都要在同一个子网中

(2).通常情况下RealServer的IP地址(以下简成RIP)为私有地址,便于RealServer集群节点之间进行通信

(3).通常情况下前端的Director有两个IP地址,一个为VIP,是虚拟的IP地址,客户端向此IP地址发起请求。

一个是DIP,是真正的Director的IP地址,RIP的网关要指向Director的DIP。

(4).这种模型可以实现端口映射

(5).RealServer的操作系统可以是任意操作系统

(6).前端的Director既要处理客户端发起的请求,又要处理后台RealServer的响应信息,将RealServer响应的信息再转发给客户端

(7).前端Director很容易成为整个集群系统性能的瓶颈。

2.LVS-DR模型的工作属性或特征:此种模型通过MAC地址转发工作,如何转发后面将会介绍。

(1).所有的RealServer集群节点和前端调度器Director都要在同一个物理网络中

(2).RIP可以使用公网的IP

(3).RIP的网关不能指向DIP

(4).前端的Director只处理客户端的请求,然后将请求转发给RealServer,由后台的RealServer直接响应客户端,不再经过Director

(5).此种模型不支持端口映射

(6).RealServer可以使用大多数的操作系统

(7).此种模型的性能要优于LVS-NAT

3.LVS-TUN模型的基本工作属性或特征

(1).RealServer服务器与前端的Director可以在不同的网络中

(2).RIP一定不能是私有IP

(3).前端的Director只处理客户端的请求,然后将请求转发给RealServer,由后台的RealServer直接响应客户端,不再经过Director

(4).此种模型也不支持端口映射

(5).RealServer只能使用哪些支持IP隧道的操作系统

三。LVS Scheduling Method LVS的调度方法:

1.Fixed Scheduling Method  静态调服方法

(1).RR     轮询

(2).WRR    加权轮询

(3).DH     目标地址hash

(4).SH     源地址hash

2.Dynamic Scheduling Method 动态调服方法

(1).LC     最少连接

(2).WLC    加权最少连接

(3).SED    最少期望延迟

(4).NQ     从不排队调度方法

(5).LBLC   基于本地的最少连接

(6).LBLCR  带复制的基于本地的最少连接

四、ipvsadm组件定义规则的格式:

1.定义集群服务格式:

(1).添加集群服务:

ipvsadm -A|E -t|u|f service-address [-s scheduler]

[-p [timeout]] [-M netmask]

-A:                  表示添加一个新的集群服务

-E:                  编辑一个集群服务

-t:                  表示tcp协议

-u:                  表示udp协议

-f:                  表示firewall-Mark,防火墙标记

service-address:     集群服务的IP地址,即VIP

-s                    指定调度算法

-p                    持久连接时长,如#ipvsadm -Lcn ,查看持久连接状态

-M                    定义掩码

ipvsadm -D -t|u|f service-address      删除一个集群服务

ipvsadm -C                             清空所有的规则

ipvsadm -R                             重新载入规则

ipvsadm -S [-n]                        保存规则

2.向集群服务添加RealServer规则:

(1).添加RealServer规则

ipvsadm -a|e -t|u|f service-address -r server-address

[-g|i|m] [-w weight]

-a                 添加一个新的realserver规则

-e                 编辑realserver规则

-t                 tcp协议

-u                 udp协议

-f                 firewall-Mark,防火墙标记

service-address    realserver的IP地址

-g                 表示定义为LVS-DR模型

-i                 表示定义为LVS-TUN模型

-m                 表示定义为LVS-NAT模型

-w                 定义权重,后面跟具体的权值

ipvsadm -d -t|u|f service-address -r server-address          --删除一个realserver

ipvsadm -L|l [options]                                       --查看定义的规则

如:#ipvsadm -L -n

ipvsadm -Z [-t|u|f service-address]                          --清空计数器

五、LVS-NAT模型实例

1。先配置好网络环境,要三个虚拟机(本次实验在虚拟机上完成),一台用作Director,其他两台分别为RealServer1 和RealServer2

其中Director要两个网卡,Eth0网卡为桥接(Birdged),Eth1网卡为仅主机(Host-only),RealServer1 和RealServer2的网卡也都是仅主机

类型的。

2.为了演示效果,将Director的两块网卡配置成不在同一个网段的IP地址,RealServer1 和RealServer2的IP地址为同一网段,规划如下图:

要注意的是:要将本地物理机的Vmnet1的IP地址配置成和Director的Eth1网卡的IP地址在同一个网段中,同时将RealServer1和RealServer2的网关指向Director主机的Eth1网卡的地址,如下图所示:

3.配置好网络环境之后就开始配置ipvsadm,确保在物理机上能ping通Eth0的IP地址,如下图所示:

能Ping通,说明物理主机已经可以和Director虚拟主机通信了。

4.在Director虚拟主机上配置:

#echo 1 > /proc/sys/net/ipv4/ip_forward     --开启IP转发功能

#rpm -qa ipvsadm        --查看ipvsadm是否安装,如果没有安装则安装之,直接使用yum安装即可

#yum install ipvsadm -y

定义LVS-NAT模型规则

此处使用的是web服务器进行的演示,在192.168.24.44和192.168.24.45上都提供了nginx服务,其中

192.168.24.44提供的网页信息为“welcome realserver 1”,192.168.24.45提供的网页信息为“welcome realserver 2”

#ipvsadm -A -t 172.16.100.24:80 -s rr

#ipvsadm -a -t 172.16.100.24:80 -r 192.168.24.44 -m

#ipvsadm -a -t 172.16.100.24:80 -r 192.168.24.45 -m

#ipvsadm -L -n --查看定义的规则

这些规则都是临时规则,不会永久生效的,要想永久生效可以保存规则,命令如下:

#service ipvsadm save

5.在Internet Explorer浏览器中访问172.16.100.24,会显示如下图所示信息:

而在google浏览器中访问172.16.100.24,会显示如下图所示信息:

如果刷新页面或者使用不同的浏览器,会轮流显示页面,这就是最简单的服务器负载均衡啦!

六、LVS-DR模型的实现过程:

1.首先规划集群和网路环境,需要三台虚拟机,如下图所示:

此时Director可以只有一个网卡Eth0,连接类型为桥接(Birdged),RealServer1和RealServer2 的网卡连接类型也都为桥接(Birdged):

2.配置集群服务

(1).在Director服务器上配置:

#ifconfig eth0:1 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up

#route add -host 172.16.100.100 dev eth0:1

#echo 1 > /proc/sys/net/ipv4/ip_forward   --开启IP转发功能

(2).在realserve1服务器上进行配置:

# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#ifconfig lo:0 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up

#route add -host 172.16.100.100 dev lo:0

(3).在realserver2 服务器上进行配置

# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#ifconfig lo:0 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up

#route add -host 172.16.100.100 dev lo:0

(4).再在Director上配置ipvsadm规则:

#ipvsadm -A -t 172.16.100.100:80 -s rr -g

#ipvsadm -a -t 172.16.100.100:80 -r 172.16.24.34

#ipvsadm -a -t 172.16.100.100:80 -r 172.16.24.44

(5).在浏览器中进行验证:

进行第一次访问,如下图所示:

进行第二次访问,如下图所示:

3.基于ssl的访问

[root@mail ~]# ipvsadm -A -t 172.16.100.100:443 -s rr

[root@mail ~]# ipvsadm -a -t 172.16.100.100:443 -r 172.16.24.2 -g

[root@mail ~]# ipvsadm -a -t 172.16.100.100:443 -r 172.16.24.3 -g

二、LVS Persistence ,lvs的持久连接性

持久连接类型:

(1).Persistent Client Connections(PCC),持久客户端连接:就是不管客户端发起什么样的服

务(如80端口的web服务,3306端口的mysql服务)请求,都将经过Director被定位到同一个特定的real server上,

只要此real server 提供了这种服务,并且会持续连接,如果客户端连接超时,real server允许一定范围内的

持久连接时长,默认持久连接时长为300m

#ipvsadm -A -t 172.16.100.100:0 -p 1200

#ipvsadm -a -t 172.16.100.100:0 -r 172.16.100.34 -g -w 10

#ipvsadm -a -t 172.16.100.100:0 -r 172.16.100.44 -g -w 5

验证效果如下图:

(2).Persistent Port Connections(PPC),持续端口连接:就是不管客户端发起什么样的端口请求(如80端口,是提供web服务的,23端口,是提供telnet服务的....),

都会经过Director将请求转发到同一个real server上,并持续连接。假如一个客户端请求的是web服务,相应的是realserver1 ,当此用户退出后再次发起请求web服务的时候

依然是realserver1 提供的web服务。

iptables:

[root@mail ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.100.100 --dport 80 -j MARK --set-mark 20

[root@mail ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.100.100 --dport 443 -j MARK --set-mark 20

[root@mail ~]# iptables -t mangle -L -n

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination

MARK       tcp  --  0.0.0.0/0            172.16.100.100      tcp dpt:80 MARK set 0x14

MARK       tcp  --  0.0.0.0/0            172.16.100.100      tcp dpt:443 MARK set 0x14

把80端口和443 端口做成一个持久防火墙标记,同时定向到同一个realserver上,即在访问80服务的时候是realserver1,

然后改为访问443服务的时候依然定向到realserver1上

基于防火墙标记来定义集群服务,也称为端口的姻亲关系。

ipvsadm:

[root@mail ~]# ipvsadm -A -f 20 -s wlc -p 1200

[root@mail ~]# ipvsadm -a -f 20 -r 172.16.24.2 -g -w 3

[root@mail ~]# ipvsadm -a -f 20 -r 172.16.24.3 -g -w 2

[root@mail ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

FWM  20 wlc persistent 1200

-> 172.16.24.3:0                Route   2      0          0

-> 172.16.24.2:0                Route   3      0

本文出自 “知识体系” 博客

(0)

相关推荐

  • linux负载均衡总结性说明 四层负载和七层负载有什么区别

    在常规运维工作中,经常会运用到负载均衡服务.负载均衡分为四层负载和七层负载,那么这两者之间有什么不同? 废话不多说,详解如下: 一.什么是负载均衡 1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性.负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间:其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点

  • linux下Nginx+Tomcat负载均衡配置方法

    Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1.JAVA JDK安装: #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar.gz ;mkdir -p /usr/java/ ;mv jdk1.7.0_25/ /usr/java/ 下. #然后配置

  • Red Hat Linux,Apache2.0+Weblogic9.2负载均衡集群安装配置

    ************************************************************************************************************************ JDK安装步骤 1. 以root身份登录系统 2. 到java.sun.com去下载JDK1.5 for LINUX的rpm,是个jdk-1_5_0_11-linux-i586-rpm.bin的文件. 3. 通过chmod +x jdk-1_5_x-rc-l

  • Linux双网卡绑定实现负载均衡详解

    Linux双网卡绑定实现负载均衡,供大家参考,具体内容如下 系统环境:CentOS release 6.9 (Final) Linux centos6 2.6.32-696.10.1.el6.x86_64 Ubuntu系统下使用ifenslave进行网卡配置,方法大同小异. 关闭NetworkManager # service NetworkManager stop # chkconfig NetworkManager off 创建bond0接口配置文件 # cd /etc/sysconfig/

  • 使用nginx来负载均衡 本文在window与linux下配置nginx实现负载

    实现网站负载有两种办法,一种是购买硬件来实现,比如是硬件F5再到Citrix Netscalar,这些设备都几十万,不是一般人玩的,另一种是使用软件来实现,比如nginx,squid这类有反向代理功能的软件,本文就nginx安装实现负载. 首先是windows系统,这里建议使用window 2003企业版,而不要作用win7(太新了,我遇到无法启动nginx的问题).要说的是,在windows下配置安装nginx还是很容易的,少了 linux下下载tar再配置编译参数等等步骤,我们只要从下面的地

  • 详解Linux系统配置nginx的负载均衡

    详解Linux系统配置nginx的负载均衡 负载均衡的几种方式: 1.轮询:默认按照时间顺序对所有服务器一个一个的访问,如果有服务器宕机,会自动剔除: 2.weight:服务器的方位几率和weight成正比,这个可以在服务器配置不均的时候进行配置: 3.ip_hash:对每个请求的ip进行hash计算,并按照一定的规则分配对应的服务器(可解决session共享): 4.fair:按照每台服务器的响应时间(rt)来分配请求,rt知道优先分配: 5.url_hash:按照访问url的hash值来分配

  • linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结

    LVS特点: 1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生: 2.稳定性.可靠性好,自身有完美的热备方案:(如:LVS+Keepalived) 3.应用范围比较广,可以对所有应用做负载均衡: 4.不支持正则处理,不能做动静分离. 常用四种算法: 1.rr:轮叫,轮流分配到后端服务器: 2.wrr:权重轮叫,根据后端服务器负载情况来分配: 3.lc:最小连接,分配已建立连接最少的服务器上: 4.wlc:权重最小连接,根据后端服务器处理能力来分配. 可以采用ip

  • LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)

    一,简介 LVS(Linux Virtual Server) 是Unix-like系统中的一个虚拟服务器,是国内贡献给开源组织的一个最优秀的项目之一.LVS在Unix-like系统中 是作为一个前端(Director)存在的,又称为调度器,它本身不提供任何的服务,只是将通过互联网进来的请求接受后再转发给后台运行的真正的 服务器(RealServer)进行处理,然后响应给客户端. LVS有两个重要的组件:一个是IPVS,一个是IPVSADM.ipvs是LVS的核心组件,它本身只是一个框架,类似于i

  • 虚拟服务器实现方法(动态均衡)

    1.应用层的虚拟服务器是利用应用层的转发实现的,相当于一台代理服务器,这正是经常提到的虚拟服务器. 实现方式:利用apache的 ProxyPass 可以实现对虚拟服务器的配置.(httpd.conf中) 如某公司的WWW服务器为 在httpd.conf中作如下设置: ProxyPass /sales ProxyPass /rd ProxyPass /head 如上设置生效了以后,对的方位会转到上来. 对的访问会转到上来, 客户不直接同 192.168.0.x交互,所有的请求都通过来转发. 过程

  • Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)

    系统环境:RHEL5 [ 2.6.18-8.el5xen ] 软件环境: nginx-0.7.17 lighttpd-1.4.20.tar.gz pcre-6.6-1.1 pcre-devel-6.6-1.1 php-5.1.6-5.el5 参考下载地址: http://sysoev.ru/nginx/nginx-0.7.17.tar.gz (最新稳定版为0.6.32) http://www.lighttpd.net/download/lighttpd-1.4.20.tar.gz #######

  • 理解web服务器和数据库的负载均衡以及反向代理

    但是若该网站平均每秒的请求是200多次,那么问题就来了:这已经是最好的web服务器了,我该怎么办?同样的情景也适用于数据库.要解决这种问题,就需要了解"负载均衡"的原理了. web服务器如何做负载均衡 为web服务器做负载均衡适用的的较多的方式是DNS重定向和反向代理,其他的方式原理也是很类似. 我们多次ping一下百度,会发现回复的IP会有所不同,例如第一次的结果为: 复制代码 代码如下: 正在 Ping baidu.com [220.181.111.86] 具有 32 字节的数据:

  • Windows Server 2003 虚拟主机的安全配置

    本人上次工作于某家网络公司.负责服务器的维护工作.现失业. 经过一段时间的了解.自认为在构件Windows服务器平台上有所经验. 鉴于现在很多朋友都开始谋划属于自己的虚拟主机.并且呢. 网上相关文章都是很老的那种.所以自己冒昧准备写一系列.  希望各位多多指点.有问题有错误多多斧正.谢谢. 开头很严肃吧.呵呵.那下面就轻松点.哎.才跟GF去吃午饭了.撑的我.哎.老打嗝. 这人跟机器就一样.快的确是挺好.但是要稳定.服务器的稳定就好比谈恋爱的稳定. 否则一天三顿吵.外加吃个消夜.那就甭想好点工作了

  • Linux上搭载Nginx负载均衡配置使用案例详解

    目录 1,这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 2, 负载均衡的种类 3, 这里我们只来说Nginx(其他的大家有兴趣可以自行查阅相关文档) 4, 创建两台Nginx服务器 5, 搭建Nginx 搭建Keepalived:(Keepalived需要依赖openssl) 1,这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担.在此

  • Linux 系统 nginx 服务器安装及负载均衡配置详解

    nginx(engine x) 是一个 高性能 的 HTTP 和 反向代理 服务器.邮件代理服务器以及通用的 TCP/UDP 代理服务器.其特点为轻量级(占用系统资源少).稳定性好.可扩展性(模块化结构).并发能力强.配置简单等. 本文主要介绍在测试环境中通过 nginx 实现基本的 负载均衡 功能. nginx 可以提供 HTTP 服务,包括处理静态文件,支持 SSL 和 TLS SNI.GZIP 网页压缩.虚拟主机.URL 重写等功能,可以搭配 FastCGI.uwsgi 等程序处理动态请求

  • LVS+Keepalived构建高可用负载均衡配置方法(配置篇)

    一. LVS简介    LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org.现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能.使用LVS技术要达到的目标是:通过

  • Nginx负载均衡详细介绍

    如果只有一台服务器时,这个服务器挂了,那么对于网站来说是个灾难.因此,这时候的负载均衡就会大显身手了,它会自动剔除挂掉的服务器. 下面简单的介绍下我使用Nginx做负载的体会 下载---安装Nginx这些不介绍了,前篇有介绍. windows和Linux下配置Nginx负载的写法一样,故不分开介绍. Nginx负载均衡一些基础知识: nginx 的 upstream目前支持 4 种方式的分配 1).轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.

随机推荐