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

2023-11-21 14:38

本文主要是介绍Linux和Windows搭配提供高可用性、可扩展性系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

描述通俗叫法可用性级别年度停机时间
基本可用性2个999%87.6小时
较高可用性3个999.9%8.8小时
具有故障自动恢复能力的可用性 4个999.99%53分钟
极高可用性5个999.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并没有环回接口存在,配置之前得先安装这个“设备”。

这篇关于Linux和Windows搭配提供高可用性、可扩展性系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/402961

相关文章

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析