前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux和Windows搭配提供高可用性、可扩展性系统

Linux和Windows搭配提供高可用性、可扩展性系统

作者头像
张善友
发布于 2018-01-30 07:22:44
发布于 2018-01-30 07:22:44
8690
举报
文章被收录于专栏:张善友的专栏张善友的专栏

我们的业务系统,不管是企业内部系统还是互联网应用系统,都需要可扩展,高可用性的系统。可扩展性和高可用性不是孤立的,只有结合起来,才能达到理想的效果。

可扩展性是系统、网络或进程的可选属性之一,它表达的含义是可以以一种优雅的方式来处理不断增长的工作,或者以一种很明白的方式进行扩充。例如:它可以用来表示系统具备随着资源(典型的有硬件)的增加提升吞吐量的能力。 垂直扩展的意思是给系统中的单节点增加资源,典型的是给机器增加CPU或内存,垂直扩展为操作系统和应用模块提供了更多可共用的资源,因此它使得虚拟化的技术(应该是指在一台机器上运行多个虚拟机)能够运行的更加有效。 水平扩展的意思是指给系统增加更多的节点,例如为一个分布式的软件系统增加新的机器,一个更清晰的例子是将一台web服务器增加为三台。随着计算机价格的不断降低以及性能的不断提升,以往需要依靠超级计算机来进行的高性能计算的应用(例如:地震分析、生物计算等)现在可以采用这种多个低成本的应用来完成。由上百台普通机器构成的集群可以达到传统的基于RISC处理器的科学计算机所具备的计算能力。

可扩展性更加强调的是水平扩展性,在用户访问数量快速增长的情况下,不终止现有服务来扩展系统的容量。比如web服务器目前已经不能接受更多的用户访问,可以在不停止服务的情况下增加第2台服务器,甚至更多的服务器,而且新增服务器对已有的服务器不会造成负面影响。

没有办法保证系统7*24不发生故障,但用户却要求任何时候都可以正常访问系统,这就是系统高可靠性的需求。一般来说,一个服务是运行在一个系统/机器上,一旦系统/机器出现故障,用户就不能再正常访问这个服务;如果把同一个服务分开放在2个不同的系统/机器,那么即使是一个系统出故障,服务依然是可以访问的。另外一个好处是恢复故障的压力减轻了。现在业界更倾向用 N 个9 来量化可用性, 最常说的就是类似 "4个9(也就是99.99%)" 的可用性。看一下表 1 能更为直观一些。

描述

通俗叫法

可用性级别

年度停机时间

基本可用性

2个9

99%

87.6小时

较高可用性

3个9

99.9%

8.8小时

具有故障自动恢复能力的可用性

4个9

99.99%

53分钟

极高可用性

5个9

99.999%

5分钟

根据墨菲定律(Murphy's Law)[“有可能出错的事情,就会出错(Anything that can go wrong will go wrong)”]的推论,世界上没有 100% 可靠的 Web站点(除非不运行)。

可能的解决方案有2种:一种是针对单服务的升级,但是升级过程复杂、成本高、且针对的往往是单一故障点;另一种是针对服务器集群的升级,也即架设网络服务的有效结构,这样做的好处在于:通过增强集群系统的冗余性从而实现高可用性、通过分而治之实现高性能和高吞吐率、通过对结点数目的动态调整实现高可扩展性和高性能/价格比等。

这里最常用到的一个技术就是集群。集群技术中常用的是负载均衡,负载均衡技术在Windows 上有群集、NLB,在Linux上有LVS,还有第三方提供的解决方案,例如F5负载均衡器

我们开发的应用系统都运行在Windows平台上,可靠性和稳定性方面都比较差,尽管windows占据了绝大部分的桌面市场,但在服务器领域,其份额还是很少的:象google、yahoo、tencent、baidu等拥有上万台服务器应用的机构都不约而同的选择linux做为运营平台来支撑巨大的业务访问。每个业务都运行在一个系统/机器上,一旦系统/机器发生故障,业务将不可避免的停止服务。任何一个服务器出故障,运行在上面的业务将不再问用户提供有效服务。

Windows上比较廉价的集群方案式采用NLB,曾经使用过NLB搭建集群,实现方式可参考Windows Server 2003网络负载均衡的实现。Linux的廉价集群方案就是LVS,LVS和NLB比较起来有很多的优势,LVS可以使得这项工作(组建高可扩展的网络服务)变得容易起来,而且LVS已经被证明非常稳定,也正在被越来越多站点和系统所部署。LVS的相关资料可以参考LVS项目有关中文文档

1.在Linux内核中实现,2.6内核已经集成IPVS内核补丁了,所以不再需要重新编译内核.;

2.三种IP负载均衡技术(通过网络地址转换实现虚拟服务器、通过IP隧道实现虚拟服务器、通过直接路由实现虚拟服务器);

3.十种负载调度算法;

4.支持IPv4和IPv6。

对于系统的高可用性而言,可组建的集群可以是WEB集群、Cache集群、邮件集群、Media集群、DNS集群、MySql集群等。此外,LVS的硬件平台方面:

  • 任何跑Linux的硬件平台都可以运行LVS;
  • LVS的负载均衡和报文转发对CPU速度要求低;
  • 可以用低功耗的硬件平台运行LVS,如Intel ATOM CPU 1.6GHz, 功耗2~3W,及Gigabit Ethernet。

传统模式下,用户的访问请求通过DNS服务器解析后,把服务请求转发给web服务器,取得数据后返回给用户。这种模式有2个麻烦:同时访问的用户增加到某个程度后,服务器不能提供所需的正常访问;遇到故障,所有的访问请求都将失败。要解决这样一个难题,LVS是上上之选。当我们采用LVS方案之后,更改dns服务器的记录,这样用户的访问将首先到达LVS控制器所在的服务器,LVS把请求按照某种算法转发给后面真正的服务器。那么数据的返还是怎样的一个过程呢?在采用DR方式的集群形式下,真实服务器直接把数据返还给用户而不再经过LVS控制器。这样设计使得结构更简单一些,LVS控制器的压力也小很多。

LVS/DR主要由控制器和真实服务器2部分构成,需要在控制器和真实服务器上做好配置才能提供正常的服务。实现LVS/DR最重要的两个东西是ipvs内核模块和ipvsadm工具包,幸运的是,当前的发行版已经包含ipvs内核模块,不必再像旧的内核版本需要打这个补丁,ipvsadm需要从网上下载安装。

LVS可以把服务请求转发到各种各样的操作系统,Windows下设置子网掩码为255.255.255.255比linux设置要麻烦些。要想在网上邻居本地连接的tcp/ip属性设置4个255掩码是不能得逞的,唯一的办法是修改注册表。默认状况下,windows并没有环回接口存在,配置之前得先安装这个“设备”。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2009-09-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么是可扩展性-如何设计一个扩展性强的系统 一
在系统设计中,可扩展性是指系统使其性能和成本适应应用程序和系统处理需求的新变化的能力。
用户1418987
2024/09/06
4470
什么是可扩展性-如何设计一个扩展性强的系统 一
如何实现系统的可扩展性和高可用性
概述 可扩展性,高可用性和性能 可扩展性,高可用性,性能和关键任务这些术语对不同组织或组织内的不同部门来说意味着不同的事情。它们经常被互换,造成混乱,导致管理不善的预期或延迟的实现或不现实的指标。本文为您提供了定义这些术语的工具,以便您的团队能够完全了解性能目标来实现目标关键系统。 可扩展性 可扩展性是系统或应用程序的属性,用于处理大量的工作或更易轻松扩展,用于响应对网络,任务处理,数据库访问或文件系统资源需求的增加 水平可扩展性 当系统通过添加具有相同功能的新节点扩展时,系统可以水平扩展,从而在所
用户1263954
2018/01/30
11.8K0
如何实现系统的可扩展性和高可用性
从Redis到KeyDB:实现高可用和高可扩展性的转变
今天给大家介绍的是KeyDB,KeyDB项目是从redis fork出来的分支。众所周知redis是一个单线程的kv内存存储系统,而KeyDB在100%兼容redis API的情况下将redis改造成多线程。
猫头虎
2024/04/08
1520
从Redis到KeyDB:实现高可用和高可扩展性的转变
一步一步理解Java企业级应用的可扩展性
老实说,“可扩展性”是个全面且详尽的话题,而且往往得不到充分理解。人们通常认为可扩展性等同于高可用性,笔者见过编程新手和架构师“老手”都建议将集群作为可扩展性和高可用性的解决方案。建议确实没错,但问题是,人们通常是通过互联网搜索,而非实际理解应用本身的情况来实现集群。
九州暮云
2019/08/21
1.1K0
一步一步理解Java企业级应用的可扩展性
高可用性、负载均衡的mysql集群解决方案
一、mysql的市场占有率 二、mysql为什么受到如此的欢迎 三、mysql数据库系统的优缺点 四、网络服务器的需求 五、什么是mysql的集群 六、什么是负载均衡 七、mysql集群部署和实现方法 八、负载均衡的配置和测试 九、Mysql集群系统的测试(测试方案+测试脚本+测试结果分析) l mysql的市场占有率 MySQL是世界上最流行的开源数据库,已有1100多万的击活安装,每天超过五万的下 载。MySQL为全球开发者、DBA和IT管理者在可靠性、性能、易用性方面提供了选 择。 第三方市场调查机
李海彬
2018/03/23
5K0
深入理解高可扩展性得实现
在云计算体系架构中,高可扩展性(High Scalability)本质上是一种弹性工程能力,表现为系统通过智能化的资源编排机制,实现计算、存储、网络等基础资源与业务负载的动态匹配。其核心诉求始终如一:通过纵向扩容(Scale Up)或横向拓容(Scale Out)的灵活组合,构建具备非线性增长能力的数字基础设施,既能在流量脉冲场景下实现毫秒级资源弹性供给,又能在业务低峰期自动回收冗余资源,最终达成服务稳定性与成本效率的黄金平衡。
Michel_Rolle
2024/12/26
1.8K0
开发运维视角下,影响软件高可扩展性的6个因素
我们将深入讨论如何编写软件(软件开发)以及如何运行软件(运维)来实现软件可扩展性。对于初学者来说,成本和可扩展性通常是成比例的。
lyb-geek
2021/09/23
5780
ONOS高可用性和可扩展性实现初探
ONOS的发布直面OpenDaylight 进行挑战,直接将 SDN领域两大阵营(运营商和设备商)的竞争瞬间升级,之所以 ONOS能做到这一点,首先,ONOS的定位就是要为运营商提供敏捷和灵活的大规模部署能力,避开了设备商围绕着 OpenDaylight展开的品牌保卫战。另外, ONOS实现了高可用、可扩展的系统设计方案,基于此基础上对系统的层次结构以及网络实体进行高度抽象,这种优秀的设计和高度的抽象保障了系统的演进和能够被优化得更快更有效。这篇文章主要探寻 ONOS在HA 和Scale-out的设计上的一
SDNLAB
2018/04/04
8510
ONOS高可用性和可扩展性实现初探
提高网络可用性、性能和可扩展性的三大法宝:MLAG、堆叠、LACP
在现代网络架构中,MLAG(Multi-Chassis Link Aggregation)、堆叠(Stacking)和LACP(Link Aggregation Control Protocol)是三种重要的技术,它们用于提高网络可用性、性能和可扩展性。本文瑞哥将深入探讨这些技术的原理、应用以及如何配置它们来构建强大的网络基础设施。
网络技术联盟站
2023/10/06
10.8K0
提高网络可用性、性能和可扩展性的三大法宝:MLAG、堆叠、LACP
MySQL的分布式架构:如何实现高可用性和扩展性
MySQL是一种常用的关系型数据库管理系统,它常被用于存储和管理大量的结构化数据。在面对高并发、大规模数据和高可用性需求时,MySQL的单节点架构可能无法满足要求。为了实现高可用性和扩展性,可以采用MySQL的分布式架构。
用户1289394
2024/04/30
6410
MySQL的分布式架构:如何实现高可用性和扩展性
Redis主从架构和高可用性实现
在当今的应用程序中,高可用性和性能是至关重要的。本文将介绍如何使用Redis主从架构和Linux虚拟服务器(LVS)实现高可用性,同时还会详细介绍最近完成的Redis集群迁移部署的过程。
大侠之运维
2024/09/26
1890
Linux服务器集群系统(一)
当今计算机技术已进入以网络为中心的计算时期。由于客户/服务器模型的简单性、易管理性和易维护性,客户/服务器计算模式在网上被大量采用。在九十年代中 期,万维网(World Wide Web)的出现以其简单操作方式将图文并茂的网上信息带给普通大众,Web也正在从一种内容发送机制成为一种服务平台,大量的服务和应用(如新闻服务、网 上银行、电子商务等)都是围绕着Web进行。这促进Internet用户剧烈增长和Internet流量爆炸式地增长,图1显示了1995至2000年与 Internet连接主机数的变化情况[1],可见增长趋势较以往更迅猛。
锅总
2024/06/12
1550
Linux服务器集群系统(一)
3种提升云可扩展性的方法
本文介绍了如何提升云可扩展性的三种方法。首先,使用自动缩放(Auto-scaling)可以自动根据负载调整实例数量。其次,水平扩展数据库层(Horizontally scaling the database tier)可以通过增加只读实例来提高数据库性能。最后,使用分区的EBS卷可以进一步提高性能。
Caffe_tt
2018/01/08
2K0
MySQL高可用九种方案
MySQL 高可用方案之 MMM(Multi-Master Replication Manager)是一种常用的解决方案,用于实现 MySQL 数据库的高可用性和负载均衡。
程序员朱永胜
2023/09/13
2.6K0
MySQL高可用九种方案
Prometheus 与 VictoriaMetrics (VM) 的比较 - 可扩展性、性能、可用性
时序数据库有很多,比如 Prometheus、M3DB、TimescaleDB、OpenTSDB、InfluxDB等等。Prometheus 和 VictoriaMetrics 是开源时间序列数据库,可为复杂 IT 环境中的监控和告警提供强大的解决方案。然而,它们的设计不同,并提供独特的功能,这些功能可能会影响其性能、可扩展性和监控工作负载的易用性。本文旨在分析 Prometheus 和 VictoriaMetrics 之间的差异,从而为寻求最适合其特定需求的解决方案(作为监控解决方案和可观察性或对系统进行故障排除)的用户提供见解。
用户5166556
2024/01/10
2.4K0
Prometheus 与 VictoriaMetrics (VM) 的比较 - 可扩展性、性能、可用性
MySQL - 高可用性:少宕机即高可用?
我们之前了解了复制、扩展性,接下来就让我们来了解可用性。归根到底,高可用性就意味着 "更少的宕机时间"。
北国风光
2019/05/13
1.7K0
高可用性的前生今世
题记:今天是2018年1月1日,这是一个特殊的日子,民间称为“三头”,意思是周头、月头、年头;我把它称为“3A”,指Kerberos协议的3A。无独有偶的是今年也是狗年,智能时代冥府门前的看门狗也进化为先进的机器人三头狗了。今天讨论的就是其中的一个A--Availability. 高可用性(High Availability,简写为HA)是一个有着很长历史的话题。随着时间的推移,各种各样的方法被发明并被使用,以保证应用、服务、数据库、网络和存储是可用的、可靠的,可以为企业提供及时的服务支持。由于企业越来越依
企鹅号小编
2018/01/11
1.1K0
高可用性的前生今世
Windows NLB搭配IIS的ARR搭建高可用环境
在现行的许多网络应用中,有时一台服务器往往不能满足客户端的要求,那么有没有什么办法解决服务器的高可伸缩性、高可用、高可靠性和高性能,提升服务器的SLA? 使用Windows Server 2008/R
张善友
2018/01/19
3.1K0
Windows NLB搭配IIS的ARR搭建高可用环境
服务扩展性和高可用-章节1(翻译)
术语可扩展性、高可用性、性能和关键任务对于不同的组织或组织内的不同部门来说可能意味着不同的事情。它们经常互换,造成混乱,导致管理不善的期望、实现延迟或不切实际的指标。
日薪月亿
2019/05/15
7390
服务扩展性和高可用-章节1(翻译)
『学习笔记』WebLogic中的集群配置与高可用性
🎈今日推荐——https://cloud.tencent.com/developer/article/2465232
数字扫地僧
2024/11/11
2510
『学习笔记』WebLogic中的集群配置与高可用性
推荐阅读
相关推荐
什么是可扩展性-如何设计一个扩展性强的系统 一
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档