浅谈Linux集群
集群听起来好像就是一个很高端很的技术,其实不是的,那么集群其实就是一堆计算机的集合,给用户提供同一个服务的一组计算机,就称之为集群,对于用户而言好像就是一台计算机提供的服务,集群主要分为三大类,
LB 负载均衡集群
负载均衡集群主要是提高服务的响应能力的,比如说某服务器的并发响应能力是100个,这个时候经常有人反映说连不上服务器,这个时候解决方案一般有 两种,一,升级硬件,升级硬件显然不是很好的解决方案,假如说升级硬件之后过了一段时间由于业务量的加大,服务器又负载不起了怎么办呢, 二,将现有空闲低配的设备组合起来做成一个具有高并发的负载均衡集群,多台计算机同时分摊负载用户的请求,这样一来服务器的压力也没有那么大了,那么这一 类的集群具有很好的可伸缩性,可靠性,和成本低廉等好处,
HA 高可用性集群
高可用性集群主要是提供7*24小时不间断服务的,不能说因为一台或几台服务器的down机而导致无法提供服务的,如果某台down机了,会自动的切换到其他计算机上面工作,从而达到高可用的效果,
HP 高性能集群
高性能集群主要是用于需要大量CPU运算的场景中,比如说天气预报,国外3D大片的特效制作,等等一系列需要做大量运算的应用,
上面介绍了集群应用的三大类,下面来介绍下三大应用中各种实现的机制,
LB 负载均衡集群又分为硬件级与软件级的
硬件类的价格比较贵,F5,等
软件级的比较常见的有如下两种:LVS、Haproxy
HA 高可用集群的解决方案常见的有以下几种
heartbeat、corosync+openais RHCS、ultramokey、keepalived
HP 高性能集群的解决方案常见的有以下
bowerful
上面说了各种集群的解决方案,一般情况下负载均衡集群和高可用集群是结合起来使用的,下面来说说负载均衡集群中比较常用的LVS
LVS (linux virtual server) linux 虚拟服务器
lvs是由国人章文嵩开发的一款自由软件,lvs具有很好的可伸缩性,可靠性,和可管理性,通过linux系统和lvs可以实现一个高可用,高性能,低成本的服务器集群,
lvs是三层架构的,也就是说lvs有三个部分组成的,:最前端的负载均衡器LB,中间的是应用服务器群组,后端的是共享存储,见下图

lvs的三种工作模型
NAT模型
NAT模型显然根据名字都可以看出来,是通过网络地址转换来实现的,他的工作方式是,首先用户请求到达前端的负载均衡器(即Director Server),然后负载均衡器根据事先定义好的调度算法将用户请求的目标地址修改为后端的应用服务器(即Real Server) , 应用程序服务器处理好请求之后将结果返回给用户,期间必须要经过负载均衡器,负载均衡器将报文的源地址 改为用户请求的目标地址,再转发给用户,从而完成整个负载均衡的过程,
NAT模型的特点如下,
所有的节点必须在一个IP网络中
只需有一个公有地址即可
支持端口映射
后端的应用服务器不区分平台
进出数据包都需要经过负载均衡器,当负载过大的时候,负载均衡器将是整个集群的瓶颈
最多支持8个节点,
DR模型
DR模型是通过路由技术实现的负载均衡技术,而这种模型与NAT模型不同的地方是,负载均衡器通过改写用户请求报文中的MAC地址,将请求发送到 Real Server, 而Real Server直接响应用户,这样就大大的减少负载均衡器的压力,DR模型也是用的最多的一种,
DR模型的特点如下,
所有的集群节点都必须同一个物理网络中
RIP可以是公有IP也可以是私有IP
负载均衡器只响应进站请求,
不支持端口映射
TUN模型
TUN模型是通过IP隧道技术实现的,TUN模型跟DR模型有点类似,不同的地方是负载均衡器(Director Server)跟应用服务器(Real Server)通信的机制是通过IP隧道技术将用户的请求转发到某个Real Server,而Real Server 也是直接响应用户的,
TUN模型的特点,
所有的集群节点可以在任意地方
RIP必须是公网IP
负载均衡器只响应进站请求
不支持端口映射
上面介绍了LVS的工作模型,下面来说说LVS支持的调度算法
调度算法也可以称为负载均衡的方法,上面说过前端的负载均衡器(Director Server)会将用户的请求分摊给后端的应用服务器(Real Server),那么负载均衡器(Director Server)怎么会知道将用户请求分摊到哪台应用服务器(Real Server)呢? 就是根据调度算法来实现将用户请求具体分摊到哪台应用服务器(Real Server)的,在LVS中支持多达10种调度算法,下面来说说几个常用的调度算法,
轮询, 轮询调度是将用户请求平均分摊到Real Server 上去,
加权轮询, 加权轮询可以为Real Server 设置不同的权值,对于性能好的Real Server可以较高的权值,而性能比较差的Real Server 的权值可以设置较低点,这样的话就充分利用了服务器的资源,
最少连接, 最少连接调度会动态的将用户请求分摊到已建立的连接最少的Real Server上去,
加权最少连接, 加权最少连接可以将性能好的服务器的全值设置高点,性能差的服务器权值设置低一些,
除了上面四个外还有目标地址hash算法调度, 源地址hash算法, 最少期望延迟调度, 基本地的最少连接调度, 带复制的最少连接调度,等,
上面说了负载均衡集群LVS,其实LVS有一个致命的缺点,当有台负载均衡器(Director Server) 挂掉的时候,那么整个集群将瘫痪了,上面说过负载均衡集群一般要和高可用集群结合起来使用的,这样就可以避免某个Director Server 出现故障而导致整个集群系统瘫痪,
来源:http://www.codesky.net/article/201208/171298.html
浅谈Linux集群的更多相关文章
- mongo 3.4分片集群系列之一:浅谈分片集群
这篇为理论篇,稍后会有实践篇. 这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mong ...
- 浅谈MySQL集群高可用架构
前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ...
- 浅谈mysql集群
一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...
- 浅谈elasticsearch 集群
elasticsearch 集群 摘要: elasticsearch 集群 搭建elasticsearch的集群 现在假设我们有3台es机器,想要把他们搭建成为一个集群 基本配置 每个节点都要进行这样 ...
- 浅谈Linux中的信号处理机制(二)
首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...
- linux集群时钟问题
一.ntpd与ntpdate的区别: 摘自:ntpd与ntpdate的区别 - 百事乐 - 博客园 http://www.cnblogs.com/liuyou/archive/2012/07/29/ ...
- 浅谈 Linux 内核无线子系统
浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...
- 实验室 Linux 集群的管理常用命令
实验室有一个Linux集群,本文做一下记录. SSH相关命令 通过SSH登录集群中的其他机器上的操作系统(或虚拟机中的操作系统).操作系统之间已经设置免密码登录. 1. 无选项参数运行 SSH 通常使 ...
- 基于VMware的虚拟Linux集群搭建-lvs+keepalived
基于VMware的虚拟Linux集群搭建-lvs+keepalived 本文通过keepalived实现lvsserver的的双机热备和真实server之间的负载均衡.这方面的blog挺多,可是每一个 ...
随机推荐
- C++中为什么构造函数初始化列表
已经有个构造函数负责初始化,为什么还需要构造函数初始化表呢? 在以下三种情况下需要使用初始化成员列表:一,需要初始化的数据成员是对象的情况:二,需要初始化const修饰的类成员:三,需要初始化引用成员 ...
- PHP中GD库安装
安装gd库扩展不能像其他扩展安装一样,直接./configure --prefix=/xxx 还需要激活png,jpeg,字库等支持 ./configure --prefix=/xxx --with- ...
- JavaScript CSS Style属性对照表
JavaScript CSS Style属性对照表 盒子标签和属性对照 CSS语法 (不区分大小写) JavaScript语法 (区分大小写) border border border-bottom ...
- 文件描述符和exec() close_on_exec
#include <fcntl.h> #include <iostream> #include <unistd.h> using namespace std; in ...
- 外部连VPN的方法
1)安装网络挂件vpnc使用命令:sudo apt-get install vpnc 2)找到公司的默认配置文件xxx_common.pcf ,使用命令将其转换为对应的配置文件:sudo pcf2vp ...
- 【搜索 回溯】 zoj 1002
题意:一些机枪彼此不能在同一行和同一列,但是由于有墙的阻隔,能保证子弹无法穿透,即可以同行同列,现问如果说给了一个n*n(n<=4)的矩阵,并给出了墙的分布情况,能否求出最大能繁殖的机枪数. 思 ...
- equal与==区别
对于String中的“equal方法”和“==”一直有点混肴,今天重新看了一下他们两点的区别,记录下来让自己以后不在忘记! 先说“==”: “==”是用来比较两个String对象在内存中的存放地址是否 ...
- 转:lr_eval_string函数的用法解析
在LR中,C的变量和LR的参数是不一样的. 任何C的变量都不能被LR的函数直接调用. 应该用lr_eval_string来取值. 比如{NewParam}(LR中参数化的变量)直接用这个引用是没有问题 ...
- IOS小工具以及精彩的博客
IOS小工具以及精彩的博客 工具 Log Guru是一个收集Log的小工具, 可以在 Mac 上查看 iOS 设备的实时系统日志. 现在可以直接高亮显示在 FIR.im 上安装 app 失败的原因.后 ...
- 转:Eclipse Debug 界面应用详解——Eclipse Debug不为人知的秘密
今天浏览csdn,发现一文详细的描述了Eclipse Debug中的各个知识点,非常详尽!特此记录. Eclipse Debug不为人知的秘密 http://blog.csdn.net/mgoann/ ...