谁在或做过mysql cluster NDB 7.2集群

谁在或做过mysql cluster NDB 7.2集群,第1张

一、灾难恢复

我们知道,数据库的日常维护,最重要的就是备份和恢复。有同事(也有DBA)告诉我说,cluster的维护成本很高。就我看来,Mysql发布这个版本的集群方案,是经过严格测试的。官方宣称99999%的可用性,毫秒级实时性非常诱人。引用官方的一张图:

在所有的管理节点,绝大部分的API节点(Mysqld节点和Memcache节点),超过半数的数据节点都崩溃的情况下,cluster仍然可以保障你的业务正常运行。节点的事务如果出现冲突,cluster会自动修复,如果其中任意一台数据节点出现故障无法启动,那么,我们马上可以换上新的,使用ndbd --initial初始化节点,alter online table重新同步写入数据就行。

二、日常备份和恢复

cluster的备份命令非常容易,在管理节点上执行:

mgmd>start backup

语法:

START BACKUP [backup_id] [wait_option] [snapshot_option]

官方文档我就不抄了。控制台会显示当前备份的简要信息,如:哪个节点开始备份等。你也可以指定具体哪个节点开始备份。cluster的备份数据存放在每个数据节点的数据目录下,从1开始,每次备份产生一个备份目录,形如:BACKUP-备份id。在不指定节点的情况下,每个节点会依次备份。cluster的备份是在线的,不闭塞的,这样我们在备份时完全不用担心会造成数据库堵塞。恢复数据同样简单,我们在每个数据节点(注意:是每个数据节点,不是其中某一个)发出如下指令:

shell>/opt/soft/mysql/bin/ndb_resotre -c "管理服务器IP:1186" -n 节点id -b 备份id -r 就行,如果不想记binlog日志,可以加上--no-binlog参数,全部参数列表请参考官方文档。

在上文,我强调要在每个数据节点执行操作,但是,这只是为保险起见,事实上,在最少情况下,只需要在相同节点组的任意一个节点各操作一次就行。例如,如上图典型的4数据节点集群,node1和2属于node group1,node3和4属于node group2,在恢复时,我们只需要在node1和node3上各执行一次恢复指令就行了。其个中原因,大家可以再看图多思考就会明白。

三、在线扩展节点

Mysql cluster宣称可以在业务量大大增长时,在线添加节点以适应业务需求。方法如下:

(注:以下192168010是管理节点IP)

1添加一个[ndbd]并在configini里加入

2停掉mgmd : 10 stop 再重启 ndb_mgmd -f configini --reload (这里10是管理节点的id)

3在已存在的数据节点上rolling restart :

mgmd>原数据节点ID1 restart

mgmd>原数据节点ID2 restart

可以在ndbinfonodes表检查确认所有的数据节点使用了新的配置

4rolling restart所有的sql和api节点 (如果有配置/etc/initd/mysqlserver restart也一样)

mysqladmin -uroot -ppassword shutdown

mysqld_safe --ndbcluster --ndb-connectstring=192168010 &

5在新节点上执行初始化启动

ndbd -c 192168010 --initial

6建新节点组3,4是新节点的ID

mgmd>CREATE NODEGROUP 3,4

7再分配集群数据,对每个表执行一次

ALTER ONLINE TABLE tbl REORGANIZE PARTITION

如果数据量很大,这个过程比较慢,请耐心等待。(如果要数落cluster的不足,我认为在线添加数据节点算是一个)

四、Replication

今天,Mysql的replication异步复制技术已经相当成熟,使用也非常频繁。cluster同样对replication提供了支持。配置非常简单,仅需在cluster中任意一台myql节点上启用binlog,作为master,然后在从库上不启用ndb引擎,其他配置和mysqld之间的replication完全一样。这里需要注意的一点是,你的binlog_format需要设置为STATEMENT,一定不要设置为MIXED,否则你的触发器将会令你的同步出错。这可能是cluster的一个bug,我没有深究。

CoreOS集群的架设比架设一个传统服务器集群更加容易。一方面因为 CoreOS 使用了 Cloud-init 自动化了集群信息的配置,另一方面则是受益于 etcd 分布式存储实现的消息分发和服务器自发现机制。这些便利性正是 CoreOS 系统设计充分为集群架构考虑带来的效率提升。

安装 CoreOS

CoreOS 的安装方法和传统 Linux 系统有很大的不同。鉴于是基础教程,在这一篇中,我们会使用官方的Vagrant镜像一步一步的构建CoreOS的VirtualBox虚拟机集群。本文使用了Linux/Mac作为测试环境,Vagrant从16版已经支持Windows,但需要安装Putty作为登录工具,略有不同,具体使用方法见 链接。  

需要顺带说明一点,比较仔细的使用者可能已经发现官方提供的镜像中有一个是“ ISO镜像文件”,然而这个镜像实际上只是一个 Live CD,也就免安装的试用镜像,直接使用这个ISO启动的系统是不具备服务自发现和分布式消息分发的能力的。通过ISO镜像安装集群的方式我们会放到专题篇的内容里面详述。好,现在进入正题吧。

正如系列的第一篇所提到的,Cloud-init 通常依赖于具体平台的实现定制,将其直接在物理机上使用并不是主流的使用方法。对于这种安装方法, 官方有一篇文档提供了详细的步骤,这里不再进行详细讨论。

首先来看一下 CoreOS 原生支持的平台。截止到目前,最新版本的CoreOS v540已经支持的平台如下图。

可以看到除去安装到本地的 Bare Metal,其余基本是针对主流的云服务平台定制的版本。这里的定制主要是 Cloud-init 等启动服务的配置,那么如何知道 CoreOS 已经支持自动化的集群部署的平台有哪些呢?我们可以从 CoreOS 源代码的 coreos-base 目录里得到答案。

这些 oem 开头的目录就是平台定制的实现。其中每个目录中的 files/cloud-configyml 文件,就是 Cloud-init 的配置文件。在每一种平台安装 CoreOS 的方式各有不同,可以从官方网站相应的页面找到相应步骤。这里我们选择其中的 Vagrant 作为演示的目标平台。

在 Vagrant 上部署 CoreOS 集群

使用 Vagrant 建立 CoreOS 集群可以说是最简单且经济的方式了,使用本地虚拟机构建,特别适合快速验证 CoreOS 的功能。

预备

需要准备的东西,包括一台连接到互联网的 Mac 或者桌面 Linux 电脑,安装好 Git、VirtualBox 和 Vagrant。

通过 Git 下载官方的 Vagrant 仓库:

git clone https://githubcom/coreos/coreos-vagrantgit

下载完成后,我们接下来配置 CoreOS 集群。

配置

为了使用集群服务器的自发现功能,我们需要一个能用来唯一标识一个集群并提供集群信息的地址。CoreOS 官方提供了这个服务,当然我们也可以使用自己搭建的私有集群标识服务器。鉴于搭建私有标识服务器属于比较进阶的内容,我们会在这个系列的后续文章详述。

通过浏览器或命令行 curl 访问地址 https://discoveryetcdio/new可以得到一个新的集群标识 URL(如果是在Windows下,可以直接使用浏览器访问这个URL地址),这个 URL 会在配置 user-data 时候使用到。

curl https://discoveryetcdio/new

进入 coreos-vagrant 目录,将 user-datasample 和 configrbsample 两个文件各备份一份,并去掉 sample 后缀。得到 user-data 和 configrb 文件。

首先修改 user-data 文件,它将作为启动的配置文件提供给 CoreOS 操作系统。值得一提的是,在这个配置中,可以使用两个变量 $private_ipv4 和 $public_ipv4,它们会在实际运行的时候被自动替换为主机的真实外网 IP 和内网 IP 地址。

这里我们需要做的只是将其中 discovery所在行前面的注释符合“#”去掉,然后替换它的值为我们刚刚获得的集群标识 URL 地址。简单来说,所有使用了同一个标识 URL 的主机实例都会在 CoreOS 启动时自动加入到同一个集群中,这就实现了无需人工干预的集群服务器自发现。

#cloud-config 

coreos: 

  etcd: 

    # generate a new token for each unique cluster from https://discoveryetcdio/new 

    # WARNING: replace each time you 'vagrant destroy' 

    discovery: <集群标识URL地址> 

    addr: $public_ipv4:4001 

peer-addr: $public_ipv4:7001 

然后修改 configrb 文件,这里包含了 Vagrant 虚拟机的配置。通过这个文件实际上可以覆写任何 Vagrantfile 里的参数,但是目前我们只需要关注 $num_instances 和 $update_channel 这两个参数的值。

$num_instances 表示将启动的 CoreOS 集群中需要包含主机实例的数量; $update_channel 表示启动的 CoreOS 实例使用的升级通道,可以是 ‘stable’,’beta’ 或 ‘alpha’。

$num_instances=3 

$update_channel='stable'

CoreOS 没有跨越式的版本发布,而是使用与 Arch Linux 类似的平滑的滚动升级,确保用户任何时候下载到的版本都是最新发布的系统镜像,并且从根本上解决了服务器系统在运行几年后,由于无法平滑升级而被迫重新安装的情况。此外 CoreOS 提供了 Stable、Beta 和 Alpha 三种升级通道,用于满足不同用户对系统新特性和稳定性的平衡。关于升级通道的切换,可参考官方的文档。

启动

启动集群,执行:

vagrant up

查看集群运行状态,所有的集群实例都已经启动。

vagrant up 

Current machine states: 

core-01                   running (virtualbox) 

core-02                   running (virtualbox) 

core-03                   running (virtualbox)

此时,在 CoreOS 集群的内部正发生着许多故事,集群的实例之间通过自发现服务,相互认识了对方并建立了联系。它们具备了在集群中任意一个实例节点控制整个集群的能力。是的,一个功能完备的 CoreOS 服务器集群已经完全运行起来了。

我现在使用的是小鸟云,他们目前官网有活动,3折优惠,建议去看看!

帮您下了两篇,希望对您有所帮助哦!祝您愉快!

1

题目:基于无线传感器网络仿真平台的研究

一、引言

传感器网络(WSN)日新月异,各种网络方案和协议日趋复杂,网络规模日趋庞大,对网络研究人员而言,掌握网络仿真的重要性是不言而喻的。WSN仿真能够在一个可控制的环境里研究WSN应用,包括操作系统和网络协议栈,能够仿真数量众多的节点,能够观察由不可预测的干扰和噪声引起的难以琢磨的节点间的相互作用,获取节点间详细的细节,从而提高节点投放后的网络成功率,减少投放后的网络维护工作。目前无线传感器网络使用的仿真工具主要有NS2、TinyOS、OPNET、OMNET++等等。其中TinyOS是专门针对无线传感器网络的特点而研究开发的。

二、无线传感器网络仿真简介

在传感器网络中,单个传感器节点有两个很突出的特点。一个特点是它的并发性很密集;另一个特点是传感器节点模块化程度很高上述这些特点使得无线传感器网络仿真需要解决可扩展性与仿真效率、分布与异步特性、动态性、综合仿真平台等等问题。

三、无线传感器网络常用仿真工具

无线传感器网络常用仿真工具有NS2、OPNET、OMNET++、TinyOS,下面我们简要介绍它们各自的性能和特点。

31 NS2

NS是一种可扩展、以配置和可编程的时间驱动的仿真工具,它是由REAL仿真器发展而来在NS的设计中,使用C++和OTCL两种程序设计语言, C++是一种相对运行速度较快但是转换比较慢的语言,所以C++语言被用来实现网络协议, 编写NS底层的仿真引擎; OTCL是运行速度较慢,但可以快速转换的脚本语言,正好和C++互补,所以OTCL语言被用来配置仿真中各种参数,建立仿真的整体结构, OTCL的脚本通过调用引擎中各类属性、方法,定义网络的拓扑,配置源节点、目的节点建立链接,产生所有事件的时间表,运行并跟踪仿真结果,还可以对结果进行相应的统计处理或制图NS可以提供有线网络、无线网络中链路层及其上层精确到数据包的一系列行为仿真。NS中的许多协议都和真实代码十分接近,其真实性和可靠性是非常高的。

32 OPNET

OPNET是在MIT研究成果的基础上由MIL3公司开发的网络仿真软件产品。 OPNET的主要特点包括以下几个方面:(1)采用面向对象的技术,对象的属性可以任意配置,每一对象属于相应行为和功能的类,可以通过定义新的类来满足不同的系统要求; (2)OPNET提供了各种通信网络和信息系统的处理构件和模块;(3) OPNET采用图形化界面建模,为使用者提供三层(网络层、节点层、进程层)建模机制来描述现实的系统;(4) OPNET在过程层次中使用有限状态机来对其它协议和过程进行建模,用户模型及OPNET内置模型将会自动生成C语言实现可执行的高效、高离散事件的模拟流程;(5) OPNET内建了很多性能分析器,它会自动采集模拟过程的结果数据;(6)OPNET几乎预定义了所有常用的业务模型,如均匀分布、泊松分布、欧兰分等。

33 OMNET++

OMNET++是面向对象的离散事件模拟工具,为基于进程式和事件驱动两种方式的仿真提供了支持。 OMNET++采用混合式的建模方式,同时使用了OMNET++特有的ned(Network Discription,网络描述)语言和C++进行建模。OMNET++主要由六个部分组成:仿真内核库、网络描述语言的编译器、图形化的网络编译器、仿真程序的图形化用户接口、仿真程序的命令行用户接口和图形化的向量输出工具。OMNET++的主要模型拓扑描述语言NED,采用它可以完成一个网络模型的描述。 网络描述包括下列组件:输入申明、信道定义、系统模块定义、简单模块和复合模块定义。使用NED描述网络,产生NED文件,该文件不能直接被C++编译器使用,需要首先采用OMNET++提供的编译工具NEDC将NED文件编译成cpp文件。最后,使用C++编译器将这些文件与用户和自己设计的简单模块程序连接成可执行程序。

34 TinyOS

TinyOS是专门针对传感器研发出的操作系统。在TinyOS上编程序使用的语言为nesC(C language for network embedded systems) 语言。

nesC语言是由C语言扩展而来的,意在把组件化/模块化思想和TinyOS基于事件驱动的执行模型结合起来。 nesC 组件有Module(模块)和Configuration(连接配置文件)两种。在模块中主要实现代码的编制,在连接配置文件中主要是将各个组件和模块连接起来成为一个整体。

TinyOS程序采用的是模块化设计,所以它的程序核心往往都很小,能够突破传感器存储资源少的限制,这能够让TinyOS很有效的运行在无线传感器网络上并去执行相应的管理工作等。TinyOS的特点主要体现在以下几个方面:

(1)组件化编程(Componented-Based Architecture)。TinyOS的组件通常可以分为以下三类:硬件抽象组件、合成组件、高层次的软件组件;硬件抽象组件将物理硬件映射到TinyOS组件模型合成硬件组件模拟高级硬件的行为高层次软件模块完成控制、路由以及数据传输等。}

(2)事件驱动模式(Event-Driven Architecture)。事件驱动分为硬件驱动和软件事件驱动。硬件事件驱动也就是由一个硬件发出中断,然后进入中断处理函数。而软件驱动则是通过singal关键字发出一个事件。

(3)任务和事件并发模式(Tasks And Events Concurrency Model)。任务用在对于时间要求不是很高的应用中,任务之间是平等的,即在执行时是按顺序先后来的,而不能相互抢占,TinyOS对任务是按简单的FIFO队列进行处理的。事件用在对于时间的要求很严格的应用中,而且它可以占先优于任务和其他事件执行。

(4)分段执行(Split-Phase Operations)。在TinyOS中由于tasks 之间不能互相占先执行,所以TinyOS没有提供任何阻塞操作,为了让一个耗时较长的操作尽快完成,一般来说都是将对这个操作的需求和这个操作的完成分开来实现,以便获得较高的执行效率。

(5) 轻量级线程(lightweight thread)。轻量级线程(task, 即TinyOS中的任务)按FIFO方式进行调度,轻量级线程之间不允许抢占;而硬件处理线程(在TinyOS中,称为硬件处理器),即中断处理线程可以打断用户的轻量级线程和低优先级的中断处理线程,对硬件中断进行快速处理响应。

(6) 主动通信消息(active message)。每一个消息都维护一个应用层和处理器。当目标节点收到这个消息后,就会把消息中的数据作为参数,并传递给应用层的处理器进行处理。应用层的处理器一般完成消息数据的解包操作、计算处理或发送响应消息等工作。

TinyOS操作系统中常用的仿真平台主要是TOSSIM和Avrora

(1)TOSSIM(TinyOS simulation)是一个支持基于TinyOS的应用在PC机上运行的模拟器TOSSIM运行和传感器硬件相同的代码,仿真编译器能直接从TinyOS应用的组件表中编译生成仿真程序。

(2)Avrora是一种专门为Atmel和Mica2节点上以AVR单片机语言编写的程序提供仿真分析的工具。它的主要特点如下:1) 为AVR单片机提供了cycle accurate级的仿真,使静态程序可以准确的运行。它可以仿真片上(chip-on)设备驱动程序,并为片外(off-chip)程序提供了有规则的接口;2)可以添加监测代码来报告仿真程序运行的性能,或者可以在仿真结束后收集统计数据,并产生报告;3)提供了一套基本的监控器来剖析程序,这有助于分析程序的执行模式和资源使用等等;4)Avrora可以用gdb调试程序;5) Avrora可以为程序提供一个程序流图,通过这个流程图可以清楚的表示机器代码程序的结构和组织;6) Avrora中提供了分析能量消耗的工具,并且可以设置设备的带电大小;7) Avrora可以用来限制程序的最大堆栈空间,它会提供一些关于目前程序中的最大的堆栈结构,和一些关于空间和时间消耗的信息报告。

35性能比较

TinyOS 用行为建模,可以仿真跨层协议;仿真程序移植到节点上,不需要二次编码。

通过对上述几种仿真软件的分析比较,我们可以清楚的看到各个仿真软件的特点、适用范围,我们可以根据研究需要选择适合的仿真软件,使得我们的学习研究可以事半功倍。

结束语

网络仿真技术为通信网络规划和优化提供了一种科学高效的方法。网络仿真在国内是近几年才发展起来的,但在国外网络仿真技术已经相当成熟,我们应该大胆地借鉴国外先进技术,促进国内网络仿真技术迅速发展。

参考文献

1于海斌,曾鹏等智能无线传感器网络科学出版社,2006,p283~p303,

2石怀伟,李明生,王少华,网络仿真技术与OPNET应用实践,计算机系统应用2006第3期

3李玥,吴辰文,基于OMNeT++地TCP/IP协议仿真,兰州交通大学学报(自然科学版),2005年8月

4袁红林,徐晨,章国安,TOSSIM:无线传感器网络仿真环境,传感器与仪表仪器 ,2006年第22卷第7-1期

2

集群虚拟服务器的仿真建模研究

来源:电子技术应用 作者:杨建华 金笛 李烨 宁宇

摘要:阐述了集群虚拟服务器的工作原理和三种负载均衡方式,通过实例讨论了虚拟服务器的仿真和建模方法,创建了测试和仿真系统性能的输入和系统模型,并依据Q—Q图和累积分布函数校验了其概率分布。

关键词:集群虚拟服务器负载均衡仿真建模概率分布

随着互联网访问量和数据流量的快速增长,新的应用层出不穷。尽管Intemel服务器处理能力和计算强度相应增大,但业务量的发展超出了先前的估计,以至过去按最优配置建设的服务器系统也无法承担。在此情况下,如果放弃现有设备单纯将硬件升级,会造成现有资源的浪费。因此,当前和未来的网络服务不仅要提供更丰富的内容、更好的交互性、更高的安全性,还要能承受更高的访问量,这就需要网络服务具有更高性能、更大可用性、良好可扩展性和卓越的性价比。于是,集群虚拟服务器技术和负载均衡机制应运而生。

集群虚拟服务器可以将一些真实服务器集中在一起,组成一个可扩展、高可用性和高可靠性的统一体。负载均衡建立在现有网络结构之上,提供了一种廉价、有效和透明的方法建立服务器集群系统,扩展网络设备和服务器的带宽,增加吞吐量,加强网络数据处理能力。提高网络的灵活性和可用性。使用负载均衡机制.大量的并发访问或数据流量就可以分配到多台节点设备上分别处理。系统处理能力得到大幅度提高,大大减少用户等待应答的时间。

实际应用中,虚拟服务器包含的真实服务器越多,整体服务器的性能指标(如应答延迟、吞吐率等)越高,但价格也越高。在集群中通道或其他部分也可能会进入饱和状态。因此,有必要根据实际应用设计虚拟服务器的仿真模型,依据实际系统的测量数据确定随机变量的概率分布类型和参数,通过分位点一分位点图即Q-Q图(Quaantile-Quantile Plot)和累积分布函数(Cumulative Distribution Functions)等方法校验应答或传播延迟等性能指标的概率分布,通过仿真软件和工具(如Automod)事先分析服务器的运行状态和性能特点,使得集群系统的整体性能稳定,提高虚拟服务器设计的客观性和设计的可靠性,降低服务器建设的投资风险。

1 集群虚拟服务器的体系结构

一般而言,首先需要在集群虚拟服务器上建立互联网协议伪装(Internet Protocol Masquerading)机制,即IP伪装,接下来创立IP端口转发机制,然后给出在真实服务器上的相关设置。图1为集群虚拟服务器的通用体系结构。集群虚拟服务器通常包括:真实服务器(RealServers)和负载均衡器(Load Balmlcer)。

由于虚拟服务器的网络地址转换方式是基于IP伪装的,因此对后台真实服务器的操作系统没有特别要求,可以是windows操作系统,也可以是Lmux或其他操作系统。

负载均衡器是服务器集群系统的惟一入口点。当客户请求到达时,均衡器会根据真实服务器负载情况和设定的调度算法从真实服务器中选出一个服务器,再将该请求转发到选出的服务器,并记录该调度。当这个请求的其他报文到达后,该报文也会被转发到前面已经选出的服务器。因为所有的操作都在操作系统核心空间中完成,调度开销很小,所以负载均衡器具有很高的吞吐率。整个服务器集群的结构对客户是透明的,客户看到的是单一的虚拟服务器。

负载均衡集群的实现方案有多种,其中一种是Linux虚拟服务器LVS(Linux Virtual Server)方案。LVS实现负载均衡的技术有三种:网络地址转换(Network Address Translation)、直接路由(Direct Routing)和IP隧道(IP Yunneling)。

网络地址转换按照IETF标准,允许一个整体机构以一个公用IP地址出现在Inlemet上。通过网络地址转换,负载均衡器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的应答报文通过均衡器时,报文的源地址被重写,把内部私有网络地址翻译成合法网络IP地址,再返回给客户,完成整个负载调度过程。

直接路由的应答连接调度和管理与网络地址转换的调度和管理相同,但它的报文是直接转发给真实服务器。在直接路由应答中,均衡器不修改、也不封装IP报文.而是将数据帧的媒体接入控制MAC(Medium Aceess Control)地址改为选出服务器的MAC地址,再将修改后的数据帧在局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到该数据帧,从中获得该IP报文。当服务器发现报文的目标地址在本地的网络设备时,服务器处理该报文,然后根据路由表应答报文,直接返回给客户。

IP隧道是将一个IP报文封装在另一个IP报文中的技术。该技术可以使目标为某个口地址的数据报文被封装和转发到另一个IP地址。用户利用IP隧道技术将请求报文封装转发给后端服务器,应答报文能从后端服务器直接返回给客户。这样做,负载均衡器只负责调度请求,而应答直接返回给客户,不需要再处理应答包,将极大地提高整个集群系统的吞吐量并有效降低负载均衡器的负载。IP隧道技术要求所有的服务器必须支持IP Yunnehng或lP封装(Encapsulation)协议。

2 集群虚拟服务器报文延迟的确定

通过一个装有5台真实服务器并使用网络地址转换技术实现Linux虚拟服务器的实际系统,可以得到有关请求和应答报文的时戳(Time Stamp)文件n根据这些文件.能够计算出集群虚拟服务器的仿真和建模所需数据。

为了确定随机变量分布类型和参数,应该统计下列延迟:(1)从客户到负载均衡器的传播延迟(Transport Delay);(2)负载均衡器的应答延迟(Response Delay);(3)从负载均衡器到真实服务器的传播延迟;(4)真实服务器的应答延迟;(5)从真实服务器到负载均衡器的传播延迟;f61负载均衡器对真实服务器的应答延迟;(7)从负载均衡器到客户的传播延迟。

在实际系统产生的时戳文件中,问接地描述了上述各延迟时间。文件包含的内容如下:

当一个服务请求到达集群虚拟服务器系统时,即产生带有惟一序列号的同步请求报文(Synchronized Request Package),将该报文转发到某一真实服务器,同时建立该服务器与客户端的连接,每个这样的连接都带有惟一的端口号;该服务器处理通过该连接的确认请求报文(Acknowledgement Request Package),直到服务器收到结束请求报文(Finished Request Package)。对每一种类型的请求报文,系统都给予一个相应的应答报文。因此,在不同的报文时戳文件中,如果两条记录具有相同的端口号、报文类型和序列号,则它们是同一个请求或应答报文,对相关的时戳相减即可得到集群虚拟服务器系统的仿真和建模所需的延迟数据。通过所编写的C++程序即可计算这些延迟。

3 系统仿真模型

上述的集群虚拟服务器实际系统的仿真模型如图2所示,在负载均衡器、各通道、5台真实服务器中通过或处理的均为请求或应答报文。

4 随机变量模型的确定

对具有随机变量的集群虚拟服务器进行仿真,必须确定其随机变量的概率分布,以便在仿真模型中对这些分布进行取样,得到所需的随机变量。

41 实际虚拟服务器的延迟数据概况

在实际虚拟服务器的负载均衡器、各通道和5台真实服务器中,对请求和应答报文都有一定的延迟。部分报文延迟的统计数据如表1所示。

由表l中的数据可见,报文延迟的中位数与均值差异较大,所以其概率分布不对称;变异系数不等于l,导致概率分布不会是指数分布,而可能是γ分布或其他分布。

4.2 随机变量的概率分布

图3为第一台真实服务器到负载均衡器之间的通道报文传播延迟直方图,其中t为报文延迟时间,h(t)为报文延迟区间数。由图3可知,通道内的报文传播延迟数据近似服从γ分布或对数正态分布。

描述γ分布需要两个参数:形状(Shape)参数α和比例(Scahj)参数口,这两个参数与均值M、方差V之间的关系是非线性的:

描述对数正态分布也需要形状参数σ和比例参数μ,这两个参数与均值M、方差V之问的关系也是非线性的:

式(1)~(4)都可以通过最大似然估计MLE(Maximum Likelihood Estimator)方法或最速下降法(Steepest Descent Method)求出。表2给出了甩这两种方法求出的从第一台真实服务器到负载均衡器之间通道内的报文延迟概率分布参数。

使用累积分布函数和Q-Q图可以校验并进一步确定上述通道内报文传播延迟的概率分布。取用表2中的参数,可以得到γ分布的累积分布函数,如图4所示,其中t为报文延迟时间,F(t)为报文延迟的累积分布函数。为作比较,实验分布也画在该图中。γ分布和对数正态分布的Q-Q图如图5所示。

由图4和图5可以看出,γ分布较好地拟合了该通道内的报文传播延迟数据分布。其他通道报文延迟直方图也有类似形状。经计算和分析,这些通道的报文传播延迟概率分布也近似服从γ分布。

根据表1中的数据以及相关的直方图都难以确定在负载均衡器和真实服务器中报文延迟的理论分布。因此,采用实验分布作为其模型。

5 模型仿真

在建立了图1所示的集群虚拟服务器的系统仿真模型并确定了其随机变量的分布特性后,可以采用由美国布鲁克斯自动化公司(Brooks Automation)开发的仿真软件Automod输入该模型,并通过在Automod环境中编程进行集群虚拟服务器的仿真和分析。

在Automod的仿真过程中,可以直接利用软件提供的资源(Resource)作为各种报文数据处理的单元;系统各部分的报文排队活动可以直接通过排队(Queue)实现;建立一个负载产生器,等效为在Inlemtet上使用虚拟服务器的客户。

通过采用Automod的属性变量(Attribute Variable)可以解决负载均衡器的双方向报文处理功能的问题。负载均衡器使用轮转调度算法(Round Robin Scheduling),即假设所有真实服务器的处理性能均相同,依次将请求调度到不同的服务器。

验证仿真模型可以分别在实际虚拟服务器系统和Automod的仿真模型中从以下两方面进行对比:(1)在负载均衡器、各个真实服务器和通道中排队的应答或传播报文数量;(2)真实服务器及负载均衡器的cPU利用率。例如,当使用实际的应答或传播报文延迟数据时,在Automod的仿真模型中,如果设置一个较低的资源量,则在仿真过程中就会发现大部分的负载都被堵在真实服务器的排队中,即真实服务器处理报文的能力过低,无法与实际系统的状况相比;如果设置一个较高的资源量,则意味着服务器的并行处理能力增加,真实服务器的利用率提高,负载就很少或不会滞留在真实服务器的排队中。因此,在Automod中可以根据实际情况调整仿真模型的资源量大小。

如果在Automod中增加负载产生器的负载产生率,就等效为用户访问量增加,通过观察排队中的负载滞留比例,就可以发现系统的最大处理报文的能力以及系统各部分应答报文可能出现瓶颈之处。例如,将负载产生率增加一倍,虽然系统仍然可以处理所有的报文,但各台真实服务器的平均利用率将达80%左右。显然,这时系统应答报文的“瓶颈”为真实服务器,有必要在系统中增添一台新的真实服务器。

通过一个包括5台真实服务器的实际虚拟服务器系统。收集并计算了仿真和建模的样板数据。依据系统报文延迟的中位数、均值、变异系数和直方图等,确定了系统随机变量的概率分布;采用最大似然估计方法和最速下降法,得到了通道概率分布的具体参数;根据Q-Q图和累积分布函数进一步校验并最终确定通道的概率分布形式。使用Automod软件进行了仿真建模和编程,借助仿真结果可以发现虚拟服务器的最大处理能力和可能的“瓶颈”之处。通过及时定位系统“瓶颈”,可以有的放矢地进一步研究和改进系统,有效提高系统性能。所采用的仿真方法也可以用于其他领域的仿真建模或分析中。

在仿真模型中,负载均衡方式和调度算法还需要进一步增加,以便于比较不同的虚拟服务器系统。样本数据也需要进一步扩充,以避免报文延迟的自相关性。

Tomcat集群中,Tomcat集群只完成了会话同步,没提供文件同步方案,为了同步文件等,可以使用同步工具GoodSync。

GoodSync无论是通过局域网络还是互联网络,只要是你的重要文件,都可以自动同步和备份。通过使用创新性的同步算法 —— GoodSync 将在未来数年中成为同步领域的领先者。

GoodSync利用创新的同步算法,可以有效防止文件误删除,数据意外丢失,并消除重复的文件。GoodSync已经从用户和媒体获得许多衷心的赞扬和高度评价。

GoodSync - 真正实用的双向文件同步工具,更多介绍可参看《GoodSync_》

详细说明参见《强大的数据同步工具GoodSync使用教程_百度经验》

所谓双机热备,就是将中心服务器安装成互为备份的两台服务器,并且在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会迅速的自动启动并运行。我们来看看在WIN2000服务器版下的实现过程。

一、 硬件准备及基本安装综述

网络服务器 两台

网络服务网卡 四块

服务器硬盘 两块

SCSI磁盘阵列 一个

SCSI硬盘 三块

首先是将两台服务器都配置成双网卡,并分别安装Win2000 Advance Server(高级服务器版)。之后配置网络环境使之畅通:将两台服务器加入到域当中,成为域成员,并在每台服务器上设置管理员权限。

另外就是注意所有磁盘必须设置成基本盘并做成采用NTFS格式分区,磁盘阵列分区一定要大于2个。最后将三块SCSI硬盘做成磁盘阵列,笔者建议为RAID5(在配置阵列时,一定注意单独分一个至少1G的分区出来,用于存放配置数据库的检测点以及日志文件)。

二、 具体安装要点。

配置服务器网络环境要点

1、 在前一步中,我们将两台服务器都安装了双网卡,一个用于连接公网(internet),一个连接内部局域网。

将连接内部局域网的网卡建立点对点的通信和群集状态信号,然后每个终端的公网适配器连接该群集到公网上,并在此驻留客户。

2、 待win2000高级服务器版安装好后,开始配置每台服务器的网络参数。在网络连接将连接公网的改为“外网”,连接局域网的改为“内网”,然后将两台服务器的各自网卡分别指定IP地址为:

服务器A:外网IP为:1921680160,内网IP为:1010101,子网掩码为:2552552550 网关为:19216801(此处网关为你主域控制器的IP地址)

服务器B:外网IP为:1921680161,内网IP为:1010102,子网掩码为:2552552550 网关为:19216801

安装服务软件要点

配置服务器A

1、 所有的设备都先关闭后再开启磁盘阵列。

2、 启动服务器A,用事先设置的管理员帐号登陆到域;然后在添加/删除程序选项里添加“集群服务”组件,并注意在安装过程中将此组件设置为集群的首节点,接着创建集群名称(任取即可,比如

myserver)。

3、 由于我们只有一个共享的磁盘阵列,所以应该将此阵列中的分区都配置成群集磁盘。

4、 开始配置群集网络。外网和内网的配置相同,即群集网络的外网、内网的名称和IP地址要保持跟网络适配器一致,至外还要选中该网络可用于集群服务,外网要选中所有的通信(混合网络)选项,而内网只选中用于内部群集的通信选项。在接着出现的“使用网络顺序”对话框中,调整为表里的第一个连接是内网(解释:在正常的操作中,该连接将用于群集通信。如果此连接失效,群集服务将自动切换到表里的下一个网络),继续下一步会出现集群的IP地址和掩码选项,设置集群IP地址为1921680162,子网掩码为:2552552550。单击完成即可。

配置配置服务器B

首先一定保持磁盘阵列和服务器A的开机和可用,然后才启动服务器B。接着同样安装“集群服务”组件,安装过程大致与服务器A相同,唯一注意的地方是在创建或添加群集的对话框中,在群集中选择第二个或下一个节点,并单击下一步;接着输入前面所创建的群集名称(本例为myserver),在下一步中将连接到群集设为未选中,这样群集服务配置向导会自动提供前面在安装服务器A时选定的帐号名,输入该帐号的口令后一路点击下一步并最终结束配置。

最后应检测以上操作是否成功。依次单击“开始”—“程序”—“管理工具”,打开“群集管理器”,如果看到显示有这两个节点,表明群集已被正常配置并已开始运行。

三、 功能检测。

以下是一些检测:

1、 在两台服务器以及集群服务同时运行的情况下,断掉其中一台服务器的外网连接,此时运行在此服务器上的集群服务会被迫自动断开并转移到另外一个连接正常的节点上(此过程所需时间视你服务器开展的服务数量而定,一般4秒钟左右)。或是可以更改一台服务器的系统时间,经过几分钟,被改动的时间会自动调整成同另一台节点相同。

2、 在集群服务上开启web服务,并设置好下载项目。在用户端开始下载项目,接着马上断掉集群中的一个节点,结果用户端并无明显的感觉掉线!

由以上检测办法可以看出,Win2000服务器版的集群服务在容错方面具有良好的表现!一般在瞬间即可把出错的节点上的服务接管过来,而用户端并不会感觉有明显的变化!

这里面有服务器、交换机、路由器、防火墙等若干设备

关于辐射的问题我可以告诉你:

生活中,辐射无处不在,你要是想一点也没事,是不可能的,除非你把自已隔离了,平时的辐射,对人体的影响极小。

电磁辐射是怎样影响人体健康的呢?其生物学作用机理是什么?电磁辐射通常以热效应,非热效应和刺激对机体产生生物作用。热效应已为大家所熟悉,人体是电介体,在高变电场作用下被反复极化,分子间碰撞和摩擦产生剧烈运动,将电能转化为热能。机体内还有电介质溶液(例如体液等),在电场作用下产生传导电流,形成不同程度的闭合回路,产生局部感应热流,导致发热。高频辐射特别是微波辐射产生的热效应更为明显。微波炉、 微波治疗仪等就是利用辐射能的热效应原理。发热过高和长时间接受辐射都会对人体产生破坏,低频电磁辐射的热效应不明显。非热效应对脑细胞产生影响,使大脑皮质细胞活动能力减弱已形成的条件反射受到抑制,长时间的暴露可能引起神经系统机能絮乱。

实验显示,电磁场能使正常人的睡眠时间平均缩短20分钟。美国弗雷保心血管医学教授布斯一次研究结果,移动电话辐射使受试者的舒张压增高10-20毫米汞柱。斯坦福大学和北卡罗米州综合实验系统公司研究了四种移动电话,辐射对多种动物细胞的影响。结果表明,辐射可使动物的染色体受损。对DNA遗传因子产生影响,将导致细胞癌变。雏鸡、猫的大脑皮质,在低频调制的特高频、甚高频电磁波照射下,会有钙离子析出,钙离子是生物体内进行信息传递、免疫系统工作和细胞繁殖时不可缺少的物质。实验还发现低频电磁波会使动物松果体的褪黑色激素的分泌量发生变化,这种激素对肿瘤细胞有抑制作用,褪黑激素减少时可以致使组织分子发生改变、导致退行性疾病发病。

刺激作用:当电磁波100KHz以下时,对人体的刺激作用有两方面。一是人体接触到暴露于电磁场下的非金属体时会受到电击。频率越低,电击程度越大;二是体内产生感应电流,当感应电流大于机体电流(脑点和心点等)时,就会引起神经系统、视觉系统细胞的兴奋,频率越低,兴奋程度越大。轻微刺激作用使人产生麻酥酥地感觉,刺激作用越大,会引起肌肉收缩,继而发生疼痛,心脏和呼吸器官兴奋,严重时会出现心室细微颤动,心肌持续收缩,最后导致心脏停止跳动而死亡。

电脑主机、显示器、鼠标、键盘及周围的相关设备都会产生辐射,眼睛看不见,手摸不到。据科学研究表明:电脑产生的低频电磁辐射对人体造成的伤害是隐性的、积累的,人们经常(长期)在超强度的电脑低频电磁辐射环境中使用电脑,导致头晕、头痛、脑涨、耳鸣、失眠、眼睛干涩、视力下降、食欲不振、疲倦无力、记忆力减退、部分人脱发、白细胞减少、免疫力底下、白内障、白血病、脑癌、乳癌、血管扩张、血压异常、胸闷、心动过缓、心搏血量减少、窦性心率不齐、男性精子质量降低、部分女性经期紊乱、孕妇流产、死胎、胎儿畸形、生殖病变、遗传病变、癌症等可怕疾病。人在操作电脑后,脸上会吸附许多电磁辐射颗粒,经常遭辐射会出现脸部斑疹。一个人连续操作电脑工作五小时,电脑产生的低频辐射对人体的伤害,相当于一天的生命损失。

房间里电脑数量越多,摆放越密集,空气中的低频电磁辐射量越大,对人体的伤害越大。电脑显示器(屏)的北部辐射强度大大超过显示器(屏)正面的辐射强度。有些企事业单位使用电脑的工作岗位,学校电脑教室和一些网吧前后、左右近距离横排摆放电脑,前排 人员背对着后排电脑显示器的背部,前后、左右近邻电脑,受到的伤害更大。即使在显示器上挂一个一般的"辐射防护网(板)"也只能阻挡来自显示器正面的一少部分辐射。不能解决根本问题。不少人误认为,只要用"液晶显示器"更换掉电脑上的"普通"(玻璃)显示器,就可以完全消除电脑主机、显示器、鼠标、键盘及周围相关设备上的所有辐射。其实根本不可能消除电脑整机中各部分的所有辐射,而仅仅是以高额投资减少了"显示器"上的局部辐射,但仍无法消除电脑主、鼠标、键盘及周围相关设备上的电脑辐射照样伤人的难题。

电脑的终端是监视器,它的原理和电视机一样,当阴极射线管发射出的电子流撞击在荧光屏上时,即可转变成可见光,在这个过程中会产生对人体有害的X射线。而且在VDT周围还会产生低频电磁场,长期受电磁波辐射污染,容易导致青光眼、失明症、白血病、乳腺癌等病症。据不完全统计,常用电脑的人中感到眼睛疲劳的占83%,肩酸腰痛的占63.9%,头痛和食欲不振的则占56.1%和54.4%,其他还出现自律神经失调、抑郁症、动脉硬化性精神病等等。

如何使电脑辐射对人体的危害降到最低,笔者认为应做到以下几点:

1避免长时间连续操作电脑,注意中间休息。要保持一个最适当的姿势,眼睛与屏幕的距离应在40~50厘米,使双眼平视或轻度向下注视荧光屏。

2室内要保持良好的工作环境,如舒适的温度、清洁的空气、合适的阴离子浓度和臭氧浓度等。

3电脑室内光线要适宜,不可过亮或过暗,避免光线直接照射在荧光屏上而产生干扰光线。工作室要保持通风干爽。

4电脑的荧光屏上要使用滤色镜,以减轻视疲劳。最好使用玻璃或高质量的塑料滤光器。

5安装防护装置,削弱电磁辐射的强度。

6注意保持皮肤清洁。电脑荧光屏表面存在着大量静电,其集聚的灰尘可转射到脸部和手部皮肤裸露处,时间久了,易发生斑疹、色素沉着,严重者甚至会引起皮肤病变等。

7注意补充营养。电脑操作者在荧光屏前工作时间过长,视网膜上的视紫红质会被消耗掉,而视紫红质主要由维生素A合成。因此,电脑操作者应多吃些胡萝卜、白菜、豆芽、豆腐、红枣、橘子以及牛奶、鸡蛋、动物肝脏、瘦肉等食物,以补充人体内维生素A和蛋白质。而多饮些茶,茶叶中的茶多酚等活性物质会有利于吸收与抵抗放射性物质

因为电磁辐射强度随着与辐射源的距离的平方值而下降。最好把电脑及家用电器不要集中在您常在的室内。例如:电脑、电视机和电冰箱、微波炉、不要放置在卧室内。专家建议,电脑使用者应于显示屏保持的距离不少于70厘米,于电脑两侧和后部保持的距离不少于120厘米。此外,减少与电脑等接触的时间,也是重要的。因为接受辐射的积累剂量是同辐射强度与辐照时间的乘积成正比。因此减少上机时间是必要的,这在实际中很难做到的。但是,很多人在所处的工作和生活环境中要实现与辐射源保持一定距离有困难。例如:有多台电脑的办公室,前后、左右距离不能保持要求的距离。还有些人,不允许减少上机上网的工作时间,每天操作3-4小时,而且连续不间断。在此情况下,唯一的办法是穿防护服,戴防护帽,以直接减少身体对辐射的吸收。

如果没有好的防辐射准备,最好屋里摆一些能吸纳辐射的植物,想仙人球,绿萝等,可以起到一些作用。

集群技术案例介绍和具体操作

集群技术案例介绍和具体操作

中国科学院西安网络中心 中科红旗linux培训认证中心

集群技术

11 什么是集群

简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提

供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的

集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一

个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群

系统的节点。

12 为什么需要集群

集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就

开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并

不为大家所熟知。直到Linux集群的出现,集群的概念才得以广为传播。

对集群的研究起源于集群系统良好的性能可扩展性(scalability)。提高CPU

主频和总线带宽是最初提供计算机性能的主要手段。但是这一手段对系统性能的

提供是有限的。接着人们通过增加CPU个数和内存容量来提高性能,于是出现了

向量机,对称多处理机(SMP)等。但是当CPU的个数超过某一阈值,象SMP这些

多处理机系统的可扩展性就变的极差。主要瓶颈在于CPU访问内存的带宽并不能

随着CPU个数的增加而有效增长。与SMP相反,集群系统的性能随着CPU个数的

增加几乎是线性变化的。图1显示了这中情况。

图1 几种计算机系统的可扩展性

对于关键业务,停机通常是灾难性的。因为停机带来的损失也是巨大的。下

面的统计数字列举了不同类型企业应用系统停机所带来的损失。

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

应用系统每分钟损失(美元)

呼叫中心(Call Center) 27000

企业资源计划(ERP)系统13000

供应链管理(SCM)系统11000

电子商务(eCommerce)系统10000

客户服务(Customer Service Center)系统27000

图2:停机给企业带来的损失

随着企业越来越依赖于信息技术,由于系统停机而带来的损失也越拉越大。

集群系统的优点并不仅在于此。下面列举了集群系统的主要优点:

高可扩展性:如上所述。

高可用性:集群中的一个节点失效,它的任务可传递给其他节点。可以有效防止单点失效。

高性能:负载平衡集群允许系统同时接入更多的用户。

高性价比:可以采用廉价的符合工业标准的硬件构造高性能的系统。

21 集群系统的分类

虽然,根据集群系统的不同特征可以有多种分类方法,但是一般把集群系统分为两类:

(1)、高可用(High Availability)集群,简称HA集群。

这类集群致力于提供高度可靠的服务。就是利用集群系统的容错性对外提供724小时不间

断的服务,如高可用的文件服务器、数据库服务等关键应用。

目前已经有在Linux下的高可用集群,如Linux HA项目。

负载均衡集群:使任务可以在集群中尽可能平均地分摊不同的计算机进行处理,充分利

用集群的处理能力,提高对任务的处理效率。

在实际应用中这几种集群类型可能会混合使用,以提供更加高效稳定的服务。如在一个使

用的网络流量负载均衡集群中,就会包含高可用的网络文件系统、高可用的网络服务。

(2)、性能计算(High Perfermance Computing)集群,简称HPC集群,也称为科学计算

集群。

在这种集群上运行的是专门开发的并行应用程序,它可以把一个问题的数据分布到多

台的计算机上,利用这些计算机的共同资源来完成计算任务,从而可以解决单机不能胜任

的工作(如问题规模太大,单机计算速度太慢)。

这类集群致力于提供单个计算机所不能提供的强大的计算能力。如天气预报、石油勘探与油

藏模拟、分子模拟、生物计算等。这些应用通常在并行通讯环境MPI、PVM等中开发,由于MPI

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

是目前的标准,故现在多使用MPI为并行环境。

比较有名的集群Beowulf就是一种科学计算集群项目。

3、集群系统转发方式和调度算法

3.1转发方式

目前LVS主要有三种请求转发方式和八种调度算法。根据请求转发方式的不同,所构

架集群的网络拓扑、安装方式、性能表现也各不相同。用LVS主要可以架构三种形式的集群,

分别是LVS/NAT、LVS/TUN和LVS/DR,可以根据需要选择其中一种。

(1)、网络地址转换(LVS/NAT)

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

(2)、直接路由

(3)、IP隧道

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

三种转发方式的比较:

3.2、调度算法

在选定转发方式的情况下,采用哪种调度算法将决定整个负载均衡的性能表现,不同

的算法适用于不同的应用场合,有时可能需要针对特殊场合,自行设计调度算法。LVS的算

法是逐渐丰富起来的,最初LVS只提供4种调度算法,后来发展到以下八种:

1轮叫调度(Round Robin)

调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均

等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2加权轮叫(Weighted Round Robin)

调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样

可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动询问真实服务器的

负载情况,并动态地调整其权值。

3最少链接(Least Connections)

调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器

上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较

好地均衡负载。

4加权最少链接(Weighted Least Connections)

在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自

动询问真实服务器的负载情况,并动态地调整其权值。

5基于局部性的最少链接(Locality-Based Least Connections)

“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache

集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务

器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且

有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求

发送到该服务器。

6 带复制的基于局部性最少链接( Locality-Based Least Connections with

Replication)

“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要

用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务

器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目

标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一

台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接

”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服

务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,

以降低复制的程度。

7目标地址散列(Destination Hashing)

“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分

配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,

否则返回空。

8源地址散列(Source Hashing)

“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的

散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则

返回空。

了解这些算法原理能够在特定的应用场合选择最适合的调度算法,从而尽可能地保持

Real Server的最佳利用性。当然也可以自行开发算法,不过这已超出本文范围,请参考有

关算法原理的资料。

4.1、什么是高可用性

计算机系统的可用性(availability)是通过系统的可靠性(reliability)和可维护性

(maintainability)来度量的。工程上通常用平均无故障时间(MTTF)来度量系统的可靠性,

用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

MTTF/(MTTF+MTTR)100%

业界根据可用性把计算机系统分为如下几类:

可用比例

(Percent

Availability)

年停机时间

(downtime/year

)

可用性分类

995 37天

常规系统

(Conventional)

999 88小时可用系统(Available)

9999 526分钟

高可用系统(Highly

Available)

99999 53分钟Fault Resilient

999999 32秒Fault Tolerant

为了实现集群系统的高可用性,提高系统的高可性,需要在集群中建立冗余机制。一个功

能全面的集群机构如下图所示

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

负载均衡服务器的高可用性

为了屏蔽负载均衡服务器的失效,需要建立一个备份机。主服务器和备份机上都运行

High Availability监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运

行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并

继续提供服务;当备份管理器又从主管理器收到“I am alive”这样的信息是,它就释放

服务IP地址,这样的主管理器就开开始再次进行集群管理的工作了。为在住服务器失效的

情况下系统能正常工作,我们在主、备份机之间实现负载集群系统配置信息的同步与备份,

保持二者系统的基本一致。

HA的容错备援运作过程

自动侦测(Auto-Detect)阶段 由主机上的软件通过冗余侦测线,经由复杂的监听程序。逻

辑判断,来相互侦测对方运行的情况,所检查的项目有:

主机硬件(CPU和周边)

主机网络

主机操作系统

数据库引擎及其它应用程序

主机与磁盘阵列连线

为确保侦测的正确性,而防止错误的判断,可设定安全侦测时间,包括侦测时间间隔,

侦测次数以调整安全系数,并且由主机的冗余通信连线,将所汇集的讯息记录下来,以供

维护参考。

自动切换(Auto-Switch)阶段 某一主机如果确认对方故障,则正常主机除继续进行原来的

任务,还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序及服

务。

自动恢复(Auto-Recovery)阶段 在正常主机代替故障主机工作后,故障主机可离线进行修

复工作。在故障主机修复后,透过冗余通讯线与原正常主机连线,自动切换回修复完成的

主机上。整个回复过程完成由EDI-HA自动完成,亦可依据预先配置,选择回复动作为半自

动或不回复。

4.2、HA三种工作方式:

(1)、主从方式 (非对称方式)

工作原理:主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,

待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的

一致性通过共享存储系统解决。

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

(2)、双机双工方式(互备互援)

工作原理:两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另

一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存

储系统中。

(3)、集群工作方式(多服务器互备方式)

工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用

主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

相关文档

http://techsinacomcn/it/2004-04-09/1505346805shtml

http://stonesoupesdornlgov

LINUX下的集群实列应用

最近有客户需要一个负载均衡方案,笔者对各种软硬件的负载均衡方案进行了调查和

比较,从IBM sServer Cluster、Sun Cluster PlatForm 等硬件集群,到中软、红旗、

TurboLinux的软件集群,发现无论采用哪个厂商的负载均衡产品其价格都是该客户目前所

不能接受的。于是笔者想到了开放源项目Linux Virtual Server(简称LVS)。经过对LVS的研

究和实验,终于在Red Hat 90上用LVS成功地构架了一组负载均衡的集群系统。整个实

现过程整理收录如下,供读者参考。

选用的LVS实际上是一种Linux操作系统上基于IP层的负载均衡调度技术,它在操

作系统核心层上,将来自IP层的TCP/UDP请求均衡地转移到不同的服务器,从而将一组

服务器构成一个高性能、高可用的虚拟服务器。使用三台机器就可以用LVS实现最简单的集

群,如图1所示。

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

图1 LVS实现集群系统结构简图

图1显示一台名为Director的机器在集群前端做负载分配工作;后端两台机器称之为

Real Server,专门负责处理Director分配来的外界请求。该集群的核心是前端的Director

机器,LVS就是安装在这台机器上,它必须安装Linux。Real Server则要根据其选用的负

载分配方式而定,通常Real Server上的设置比较少。接下来介绍Director机器上LVS的

安装过程。

安装

LVS的安装主要是在Director机器上进行,Real Server只需针对不同的转发方式做简单

的设定即可。特别是对LVS的NAT方式,Real Server惟一要做的就是设一下缺省的网关。

所以构架集群的第一步从安装Director机器开始。

首先,要在Director机器上安装一个Linux操作系统。虽然早期的一些Red Hat版本,

如62、72、80等自带Red Hat自己的集群软件,或者是在内核中已经支持LVS,但是为

了更清楚地了解LVS的机制,笔者还是选择自行将LVS编入Linux内核的方式进行安装,

Linux版本采用Red Hat 90。

如果用户对Red Hat的安装比较了解,可以选择定制安装,并只安装必要的软件包。

安装中请选择GRUB 做为启动引导管理软件。因为GRUB 在系统引导方面的功能远比

LILO强大,在编译Linux内核时可以体会它的方便之处。

LVS是在Linux内核中实现的,所以要对原有的Linux内核打上支持LVS的内核补丁,

然后重新编译内核。支持LVS 的内核补丁可以从LVS 的官方网

http://wwwlinuxvirtualserverorg 下载,下载时请注意使用的Linux核心版本,必须下载和

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

使用的Linux内核版本相一致的LVS内核补丁才行。对于Red Hat 90,其Linux内核版本

是2420,所以对应内核补丁应该是http://wwwlinuxvirtualserverorg/software/kernel-

24/linux-2420-ipvs-109patchgz。笔者经过多次实验,使用Red Hat 90自带的Linux

源代码无法成功编译LVS 的相关模组。由于时间关系笔者没有仔细研究,而是另外从

kernelorg上下载了一个tar包格式的2420内核来进行安装,顺利完成所有编译。下面是

整个内核的编译过程:

1删除Red Hat自带的Linux源代码

# cd /usr/src

# rm -rf linux

2下载2420内核

# cd /usr/src

# wget ftp://ftpkernelorg/pub/linux/kernel/v24/linux-2420tarbz2

3解压到当前目录/usr/src

# cd /usr/src

# tar -xjpvf linux-2420tarbz2

4建立链接文件

# cd /usr/src # ln -s linux-2420 linux-24 # ln -s linux-2420 linux

5打上LVS的内核补丁

# cd /usr/src

#wget http://wwwlinuxvirtualserverorg/software/kernel-24/linux-2420-ipvs-

109patchgz

# gzip -cd linux-2420-ipvs-109patchgz

# cd /usr/src/linux

# patch -p1 < /linux-2420-ipvs-109patch

在打补丁时,注意命令执行后的信息,不能有任何错误信息,否则核心或模组很可能

无法成功编译。

6打上修正ARP问题的内核补丁

# cd /usr/src

# wget http://wwwssibg/~ja/hidden-2420pre10-1diff

# cd /usr/src/linux

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

# patch -p1 < /hidden-2420pre10-1diff

这一步在Director机器上可以不做,但是在使用LVS/TUN和LVS/DR方式的Real Server

上必须做。

7为新核心命名

打开/usr/src/linux/Makefile。注意,在开始部分有一个变量EXTRAVERSION可以自行定

义。修改这个变量,比如改成“EXTRAVERSION=-LVS”后,编译出的核心版本号就会显

示成2420-LVS。这样给出有含义的名称将有助于管理多个Linux核心。

8检查源代码

# make mrproper

这一步是为确保源代码目录下没有不正确的o文件及文件的互相依赖。因为是新下载的内

核,所以在第一次编译时,这一步实际可以省略。

9配置核心选项

# make menuconfig

命令执行后会进入一个图形化的配置界面,可以通过这个友好的图形界面对内核进行定制。

此过程中,要注意对硬件驱动的选择。Linux支持丰富的硬件,但对于服务器而言,用不到

的硬件驱动都可以删除。另外,像Multimedia devices、Sound、Bluetooth support、Amateur

Radio support等项也可以删除。

注意,以下几项配置对LVS非常重要,请确保作出正确的选择:

(1)Code maturity level options项

对此项只有以下一个子选项,请选中为,即编译到内核中去。

Prompt for development and/or incomplete code/drivers

(2)Networking options项

对此项的选择可以参考以下的配置,如果不清楚含义可以查看帮助:

<> Packet socket

[ ] Packet socket: mmapped IO

< > Netlink device emulation

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

Network packet filtering (replaces ipchains)

[ ] Network packet filtering debugging

Socket Filtering

<> Unix domain sockets

TCP/IP networking

IP: multicasting

IP: advanced router

IP: policy routing

[ ] IP: use netfilter MARK value as routing key

[ ] IP: fast network address translation

<M> IP: tunneling

IP: broadcast GRE over IP

[ ] IP: multicast routing

[ ] IP: ARP daemon support (EXPERIMENTAL)

[ ] IP: TCP Explicit Congestion Notification support

[ ] IP: TCP syncookie support (disabled per default)

IP: Netfilter Configuration --->

IP: Virtual Server Configuration --->

(3)Networking options项中的IP: Virtual Server Configuration项

如果打好了LVS的内核补丁,就会出现此选项。进入Virtual Server Configuration选项,

有以下子选项:

<M> virtual server support (EXPERIMENTAL)

IP virtual server debugging

(12) IPVS connection table size (the Nth power of 2)

--- IPVS scheduler

<M> round-robin scheduling

<M> weighted round-robin scheduling

<M> least-connection scheduling scheduling

<M> weighted least-connection scheduling

<M> locality-based least-connection scheduling

<M> locality-based least-connection with replication scheduling

<M> destination hashing scheduling

<M> source hashing scheduling

<M> shortest expected delay scheduling

<M> never queue scheduling

--- IPVS application helper

<M> FTP protocol helper

以上所有项建议全部选择。

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

(4)Networking options项中的IP: Netfilter Configuration项

对于24版本以上的Linux Kernel来说,iptables是取代早期ipfwadm和ipchains的

更好选择,所以除非有特殊情况需要用到对ipchains和ipfwadm的支持,否则就不要选它。

本文在LVS/NAT方式中,使用的就是iptables,故这里不选择对ipchains和ipfwadm的

支持:

< > ipchains (22-style) support

< > ipfwadm (20-style) support

10 编译内核

(1)检查依赖关系

# make dep

确保关键文件在正确的路径上。

(2)清除中间文件

# make clean

确保所有文件都处于最新的版本状态下。

(3)编译新核心

# make bzImage

(4)编译模组

# make modules

编译选择的模组。

(5)安装模组

# make modules_install

# depmod -a

生成模组间的依赖关系,以便modprobe定位。

(6)使用新模组

# cp Systemmap /boot/Systemmap-2420-LVS

# rm /boot/Systemmap

# ln -s /boot/Systemmap-2420-LVS /boot/Systemmap

# cp arch/i386/boot/bzImage /boot/vmlinuz-2420-LVS

# rm /boot/vmlinuz

# ln -s /boot/vmlinuz-2420-LVS /boot/vmlinuz

# new-kernel-pkg --install --mkinitrd --depmod 2420-LVS

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

(7)修改GRUB,以新的核心启动

执行完new-kernel-pkg命令后,GRUB的设置文件/etc/grubconf中已经增加了新核心的

启动项,这正是开始安装Linux时推荐使用GRUB做引导程序的原因。

grubconf中新增内容如下:

title Red Hat Linux (2420-LVS)

root (hd0,0)

kernel /boot/vmlinuz-2420LVS ro root=LABEL=/

initrd /boot/initrd-2420LVSimg

将Kernel项中的root=LABEL=/改成 root=/dev/sda1 (这里的/dev/sda1是笔者Linux的根

分区,读者可根据自己的情况进行不同设置)。

保存修改后,重新启动系统:

# reboot

系统启动后,在GRUB的界面上会出现Red Hat Linux(2420-LVS)项。这就是刚才编译的

支持LVS的新核心,选择此项启动,看看启动过程是否有错误发生。如果正常启动,ipvs

将作为模块加载。同时应该注意到,用LVS的内核启动后在/proc目录中新增了一些文件,

比如/proc/sys/net/ipv4/vs/。

11安装IP虚拟服务器软件ipvsadm

用支持LVS的内核启动后,即可安装IP虚拟服务器软件ipvsadm了。用户可以用tar包或

RPM 包安装,tar 包可以从以下地址http://wwwlinuxvirtualserverorg/software/kernel-

24/ipvsadm-121targz 下载进行安装。

这里采用源RPM包来进行安装:

# wget http://wwwlinuxvirtualserverorg/software/kernel-24/ipvsadm-121-7srcrpm

# rpmbuild --rebuild ipvsadm-121-7srcrpm

# rpm -ivh /usr/src/redhat/RPMS/i386/ipvsadm-121-7i386rpm

注意:高版本的rpm命令去掉了--rebuild这个参数选项,但提供了一个rpmbuild命令来实

现它。这一点和以前在Red Hat 62中以rpm—rebuild XXXsrcrpm来安装源RPM包的习

惯做法有所不同。

安装完,执行ipvsadm命令,应该有类似如下的信息出现:

# ipvsadm

中科红旗linux技术支持服务中心---西安站 http://linuxxabaccn

中国科学院西安网络中心 中科红旗linux培训认证中心

IP Virtual Server version 109 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

出现类似以上信息,表明支持LVS 的内核和配置工具ipvsadm 已完全安装,这台

Director机器已经初步安装完成,已具备构架各种方式的集群的条件。

实例

理解了上述关于请求转发方式和调度算法的基本概念后,就可以运用LVS来具体实现

几种不同方式的负载均衡的集群系统。LVS的配置是通过前面所安装的IP虚拟服务器软件

ipvsadm来实现的。ipvsadm与LVS的关系类似于iptables和NetFilter的关系,前者只是

一个建立和修改规则的工具,这些命令的作用在系统重新启动后就消失了,所以应该将这

些命令写到一个脚本里,然后让它在系统启动后自动执行。网上有不少配置LVS的工具,

有的甚至可以自动生成脚本。但是自己手工编写有助于更深入地了解,所以本文的安装没

有利用其它第三方提供的脚本,而是纯粹使用ipvsadm命令来配置。

下面就介绍一下如何配置LVS/NAT、LVS/TUN、LVS/DR方式的负载均衡集群。

1设定LVS/NAT方式的负载均衡集群

NAT是指Network Address Translation,它的转发流程是:Director机器收到外界请求,

改写数据包的目标地址,按相应的调度算法将其发送到相应Real Server上,Real Server

处理完该请求后,将结果数据包返回到其默认网关,即Director机器上,Dire

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 谁在或做过mysql cluster NDB 7.2集群

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情