一、 概述

什么是集群,集群的特点、功能和分类。Linux环境下用哪些开源软件来构建一个功能强而有稳定的集群系统。了解国人内核级负载均衡开源项目linux虚拟服务器,简称LVS。

1.1 定义

集群是由两个或者多个计算机或者节点组成的一起执行任务的系统。

1.2 集群的类型

存储型

高性能型

高可用性型

负载均衡型

A、 存储型

存储型集群是跨服务器提供一致文件系统映像,他允许服务器同步地读取和写入单个的共享文件系统。存储型集群将应用程序的安装和修补限制到一个文件系统,简化了存储的管理。而且,采用集群范围的文件系统,存储型集群消除了应用程序数据的冗余拷贝并简化了备份和恢复。

B、 高性能型

高性能计算是计算机科学的一个分支,他致力于开发超集计算机,研究并行算法和开发相关软件,使用集群节点来执行并行运算。

C、 高可用性型

通过消除单点失效以及在一个节点停止运作时将服务从一个集群节点切换到另外一个节点,提供服务的持续可用性。

实现的软件有Turbolinux TurboHA、Heartbeat、Kimberlite。

D、 负载均衡型

将网络服务请求分摊在多个集群节点来平衡请求负载。

1.3 集群系统采用的操作系统

主要有UNIX,windowsNT和linux

UNIX主要是服务器或者工作站上普通使用的操作系统。如:HP/SUN/IBM

Mircrosoft在1995年开发集群系统的开发系统。

Redhat也提供了给予LVS思想构建的集群。

1.4 典型的集群系统

TurboCluster

是一个企业级的集群方案

Linux Virtual Server

Linux虚拟服务器(lvs)构建于实际的服务器集群之上,用户看不到提供服务的多台实际服务器,而只能看见一台作为负载均衡器的服务器,也就是最前端的调度器。

1.5 集群的特点和功能

高可用性和扩展性

不间断服务7*24

故障自动切换

负载均衡和错误恢复

集群系统最大的特点可以灵活、有效地分担系统负载

二、 负载均衡集群LVS

1、负载均衡集群

负载均衡集群可以事项多台服务器或者应用的流量均衡分配。

2、LVS

LVS即linux虚拟服务器,是一个虚拟的服务器集群系统。

项目创始人我国国防大学的章博士管理。

3、lvs架构

三部分:前端的负载均衡层、中介的服务器集群层、数据共享存储层。

对外部用户来说,所有内部服务都是透明的,用户只是使用一个虚拟服务器提供的高性能服务。

4、术语

DS/RS/LVS/IPVS/CC

Director server/Linux Virtual server/IP virtual server/Client Computer

VIP/RIP/DIP/CIP

Virtual IP/Real IP/Client IP

前端调度器:负载均衡器、调度器、Director、LVS Router、地址转换器

后端真实服务器:真实服务器、节点服务器、RealServer、Pool server、LVS客户端

IP负载均衡技术、负载均衡模式

内核高于2.4.23的内核版本即支持IPVS。

5、负载均衡的三种模式

A、NAT模式

负载均衡器或者可以称之为地址转换器的前端调度器,它修改来自专有网络的流出的数据包的地址,外界看起来包是来自地址转换器本身,当外界送到转换器时,他能够判断出应该将包送到内部网络的某台真实节点。

优点:节省IP地址,内部进行伪装。

缺点:效率低,因为返回给请求方的流量经过转换器

应用场景1:一组区服的登陆服务器,对外玩家看到只有一个公网IP地址,其实后端有很多台真实服务器,开启不同的端口,这样,对于游戏配置时,也只需要填写对外的公网IP地址即可。

NAT模式是LVS中最容易实现的模式,同时他也是大多数软件/硬件默认的模式。在NAT模式下,LVS调度器实现网络地址转换以及IP负载分发的功能,所以NAT模式的瓶颈在于前端调度器,而且在扩张的时候也是个问题,当节点到达10个后,会明显比较吃力。

NAT模式的过程:

(1) 调度器接收用户发来的消息,根据调度算法进行IP分流,将数据包发送到后端RS

(2) 真实机执行相应操作后,将消息返回给调度器

(3) 调度器通过NAT地址转换将结果发送给用户,完成一次请求以及响应的操作

B、DR模式

用直接路由技术实现lvs,当参与集群的计算机和作为控制管理计算机在同一网段时可以用这种方法,控制管理的计算机接受到请求包时直接送到参与集群的节点。

DR模式也成为直接路由模式,实现此模式时lvs router只实现IP分发功能,应用服务器收到IP数据包并处理后,通过自身来实现IP地址转换,将数据直接传送给用户,在此模式下,LVS Router只对TCP/IP数据包的头信息进行处理,然后直接路由到应用服务器,不需要处理应用服务器返回的数据信息,因此,性能较高。

用户发送的请求,经过DR调度后,后端真实机进行处理后,直接发送给客户端,完成一次请求以及响应的过程。

直接路由技术实现虚拟服务器。不能跨网段,所有的真实机必须处于一个网段中。

C、隧道模式(TUN模式)

IP Tun可以是NAT和DR模式的综合,包含了这两种模式,性能也介于他们之间,实现IP tunnel模式时,调度器将TCP/IP请求进行重新封装并转发给目标对象,由目标应用服务器直接回复用户,由于调度器和应用服务器之间是通过IP tunnel来进行转发,因此二者可以存在于不同的网段中。

由调度器重新封装发送给后端真实机器,由真实机器直接发送给客户端。可以跨网段进行。

当前大多数架构都选择使用NAT或DR模式来实现LVS负载均衡,由于NAT模式简单,并与DR模式在配置上有很多相似之处,通过这两台服务器实现HTTP+LVS负载均衡集群下的DR模式。

用户IP tunnel技术实现LVS,这种方式主要是在集群节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络了流量中的方法,为了安装的考虑,应该使用隧道技术的VPN也可以使用专线,集群所能提供的服务是基于TCP/IP的web服务,Mail服务,News服务,DNS服务,Proxy服务等。

6、调度算法

1.轮叫算法(Round Robin)

2.加权轮叫算法(weighted Round Robin)

3.最少链接调度(least connections)

4.加权最少链接调度(weighted least connections)

5.其他算法

三、LVS的安装与配置

3.1 负载均衡器的安装

IPVS是整个负载均衡的基础。大部分linux发行版本中,IPVS被 默认安装。

yum install ipvsadm

可以使用本地源直接安装,设置本地源的时候有一个需要注意事项:

如果提示以下错误:

Warning:rpmts_hdrfromfdno:Header V3 DSA signature:NOKEY,Key ID e8562897

Public key for *****.rpm is not installed.

这是由于yum安装了旧版本的RPM-GPG-KEY造成的,解决办法是:

rpm –import /etc/pki/rpm-gpg/PRM-GPG-KEY-CentOS-6

检查是否安装:

[root@master ~]# rpm -qa |grep ipvsadm

ipvsadm-1.25-10.el6.x86_64

检查模块是否加载:

[root@master ~]# lsmod |grep ip_vs

ip_vs_rr                1420  1

ip_vs                 115643  3 ip_vs_rr

libcrc32c               1246  1 ip_vs

ipv6                  321422  39 ip_vs,cnic,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

重新加载lvs模块

Modprobe ip_vs

3.2 ipvsadm的用法

使用ipvsadm –help来查看

常用选项如下:

-A 添加一条新的虚拟服务器记录

-E 编辑一条虚拟服务器记录

-D 删除

-C 清除内核虚拟服务器中的所有记录

-R 恢复虚拟服务器规则

-S 保存虚拟服务器规则

-a 添加一条真实服务器规则

-e 编辑一条真实服务器规则

-d 删除一个真是服务器规则

-L 列出虚拟服务器列表

-Z 虚拟服务表计数器清零(情况当前连接数量)

-t --tcp-service service-address 说明lvs提供的tcp服务

-u 说明是udp服务

-f 说明是经过iptables标记过的服务类型

-s 使用的调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)

-p 会话保持,意思是同一个客服多次请求,将被同一台真实服务器处理,timeout默认300s

-r 真实服务器

-g 指定lvs的工作模式为直接路由模式

-i 指定工作模式为隧道模式

-m 指定lvs工作模式为NAT模式

-w 真实服务器的权值

--mcast-interface interface 指定组播的同步接口

-c 显示lvs当前连接:ipsadm -L -c

--timeout 显示tcp tcpfin udp的timeout值,如:ipvsadm -L --timeout

--daemon 显示同步守护进程状态

--status 显示统计信息

--rate 显示速率信息

--sort 对虚拟服务器和真实服务器排序输出

--numeric -n 输出IP地址和端口的数值形式

3.3 LVS客户端的配置

Lvs客户端不需要安装任何额外的软件。Lvs客户端是指负载均衡后面的真实主机.

3.4 LVS客户端支持的操作系统

基本上目前所有操作系统均支持。GUN/linux、unix、windows等。

LVS集群之原理及概述(1)的更多相关文章

  1. LVS集群之工作原理和调度算法(2)

      LVS的工作机制 LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默 ...

  2. LVS系列一、LVS集群-NAT模式

    一. 集群概述 1. 什么是集群? 一组各自相互独立且又相互依赖的,通过高速网络互联的计算机组成的一个计算机组, 以单一的系统模式加以管理, 为用户提供服务, 对用户来说, 用户只会认为对方是一个服务 ...

  3. 负载均衡之LVS集群

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  4. LVS集群之NAT模式实现

    LVS集群之NAT模式实现 一.集群的种类 集群系统主要分为 1.HA:高可用集群,又叫双机热备.   (a)原理      2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至 ...

  5. Linux系统(五)负载均衡LVS集群之DR模式

    序言 DR模式是lvs集群中三种负载均衡模式的其中一种,那么上一篇中我写啦关于NAT模式的搭建与原理,为什么还要有DR模式与IP隧道模式呢? 首先我们来看3张图.LVS/NAT模式如下图: LVS/I ...

  6. LVS集群简介及使用

    什么是集群 一组通过高速网络互联的计算组,并以单一系统的模式加以管理 将很多服务器集中在一起,提供一种服务,在客户端看来就象是只有一个服务器 可以在付出较低成本的情况下获得在性能,可靠性,灵活性方面的 ...

  7. Redis cluster集群:原理及搭建

    Redis cluster集群:原理及搭建 2018年03月19日 16:00:55 阅读数:6120 1.为什么使用redis? redis是一种典型的no-sql 即非关系数据库 像python的 ...

  8. KVM部署LVS集群故障案例一则

    一.故障现象 KVM部署LVS(Linux Virtual Server)集群后,能够单独以HTTP方式访问RS(Real Server)的实际IP,但无法通过VIP(Virtual IP)访问. 二 ...

  9. 转载-lvs官方文档-LVS集群中的IP负载均衡技术

    章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...

随机推荐

  1. 翻译:Identifier Qualifiers标识限定符

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. JMeter循环控制器循环次数使用变量控制注意事项

    1.进入循环控制器之前变量要有值: 2.BeanShell处理文件,读取行数,赋值给变量,要有相应的Sampler,不然脚本不会运行. 对于单个线程来说,假如设置了循环2次,线程启动后,运行结束,此时 ...

  3. <大话设计模式>笔记

    读完了<大话设计模式>这本书,收获很多,对程序设计有了很多新的理解.将每章模式的大概要点做了些笔记以备查阅,一些设计模式书读完也对其了解得不是很透彻,需要以后在实践中来不断地加深理解吧.读 ...

  4. Hibernate框架HQL语句

    这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Class ...

  5. 前端模块化:RequireJS(转)

    前言 前端模块化能解决什么问题? 模块的版本管理 提高可维护性 -- 通过模块化,可以让每个文件职责单一,非常有利于代码的维护 按需加载 -- 提高显示效率 更好的依赖处理 -- 传统的开发模式,如果 ...

  6. Mac和Xcode常用的快捷键

    Mac电脑一般都不怎么用鼠标,因此除了触摸屏的各种双指.三指甚至四指的操作之外,快捷键的使用可以带来非常大的便利,本文则主要收集整理了自己在Mac常规和Xcode开发过程中常用的一些快捷键. 一.Ma ...

  7. iOS 进阶—— iOS 内存管理

    1 似乎每个人在学习 iOS 过程中都考虑过的问题 alloc retain release delloc 做了什么? autoreleasepool 是怎样实现的? __unsafe_unretai ...

  8. JavaWeb框架_Struts2_(八)----->Struts2的国际化

    这一篇博文拖了蛮久了,现在先把它完成,结束struts2这个版块,当然这只是最基础的部分,做项目还需要更深的理解.下一个web后端的版块准备做Spring框架的学习-嗯,加油! 1. Struts2的 ...

  9. 用LinkedList集合演示栈和队列的操作

    在数据结构中,栈和队列是两种重要的线性数据结构.它们的主要不同在于:栈中存储的元素,是先进后出:队列中存储的元素是先进先出.我们接下来通过LinkedList集合来演示栈和队列的操作. import ...

  10. Udacity并行计算课程笔记-The GPU Hardware and Parallel Communication Patterns

    本小节笔记大纲: 1.Communication patterns gather,scatter,stencil,transpose 2.GPU hardware & Programming ...