尽管目前市面上公有云和私有云实践如火如荼,也出现了不少的云产品和云商家,但是云架构本身来说还是具有一定的技术和经济门槛,并需要一个专业的云架构运维团队。具备这种条件对中小型企业来说具有一定的难度。
中小规模私有服务器集群自身具备的自主全可控的优势,解决中小型企业存在基本需求但尚未有上云需求的两难问题。中小型企业可以通过部署私有服务器集群,来支撑企业项目的孵化、验证、开发、调试等阶段的基本需求。
针对部分项目的特殊需求,项目系统需要运行在私有的隔离网络环境中,都需要部署一套私有服务器集群。私有服务器集群在建设和使用方面都必须满足一定的规范,才能够达到合理利用服务器硬件资源、提升开发效率、降低运维成本的效果。数据湾给大家整理的中小规模私有服务器集群设计方案以供大家参考。
中小规模私有服务器集群方案设计的原则是要充分提高集群的可控性和灵活性。集群的可控性能够保证项目软件具备一致的验证、开发、测试、运行环境,保证软件不会因为程序运行环境差而产生异常,避免产生额外的调试负担。集群的灵活性能够保证集群可以部署多样化的程序运行环境,有针对性地满足各种项目不同的环境需求。
中小规模私有服务器集群所涉及的内容非常广泛,需要能够配置多种程序运行环境,承载项目的各种应用程序。集群方案的设计主要分为硬件系统和软件服务两大部分。集群方案的整体架构如图 1所示。
硬件系统主要包括服务器及其安装的操作系统、配套网络设备等。软件服务指的是运行在集群上的组建各种软件环境的应用程序及配套服务。软件服务分为三类,分别是:
(1)集群基础服务:构建集群所需的基础设施服务,主要包括系统软件源、自定义软件源和时间同步服务等;
(2)应用服务:运行在硬件系统之上的与业务相关的各种应用服务,包括大数据服务、Docker 微服务、数据库服务、团队协作服务、单应用服务和虚拟化云服务等。根据不同的业务场景需求选择安装一种或多种应用服务;
(3)操作管理服务:操作管理集群的基础服务,主要包括用户权限管理、远程管理服务、文件交互服务、集群内容管理等。
组建中小规模私有服务器集群通常需要服务器 3 台及以上,如果数量不足3台,那么只需要将各项服务混合部署即可。集群中服务器的处理器总核数、内存容量、磁盘类型及容量、网卡类型及带宽可以根据业务的实际需求来自行选择。表 1 中提供了计算型、存储型和中间型三种类型中高档需求的服务器配置参考示例。
集群配套网络设备的核心是交换机,交换机应该支持1000Mb/s 速率或更高,可以采用华为、H3C 或者思科等品牌的网管或非网管交换机。在视频传输、大数据分布式计算、分布式存储等必要的应用场景下,如果遇到网络性能瓶颈,可以选择使用光口万兆交换机。服务器的操作系统建议使用Cent OS 7,因为Cent OS官方提供了完整的基础软件安装源,同时Cent OS 7已经从系统内核原生支持Docker服务。
如果服务器的数量增加到5台以上,可以将其中一台服务器安装为 Windows Server 桌面版操作系统,因为项目中使用的部分软件可能必须运行在Windows Server操作系统上。如果安装 Windows Server 系统纯粹为了方便运维管理,那么可以适当降低该服务器的配置。评价硬件系统性能负载的指标主要是系统线程数与处理器总核数的比例关系、内存使用量、磁盘读写速度、磁盘使用量、网卡实时带宽大小等方面。
2.2 软件服务
2.2.1 集群基础服务
集群基础服务作为服务器集群的基础设施,主要包括基础软件源、自定义软件源和时间同步服务等三部分。集群内部的基础软件源和自定义软件源保证了集群内各服务器安装的所有软件都来自同一源头,时间同步服务可以为集群中各个服务器提供时间同步服务,共同保证了程序运行环境的一致性,达到集群环境的可控性。
(1)基础软件源Cent OS
官方提供了完整的操作系统配套基础软件的安装源,这些软件中包括可执行的工具软件,也包括其他软件依赖的运行库软件。将Cent OS 官方提供的基础软件镜像中的软件源部署到服务器集群内部,以HTTP的形式为每一台Cent OS服务器提供远程软件源支持。需要注意的是,即使服务器集群可以连接互联网,也推荐在集群中部署基础软件源,以确保软件安装源的可控性。
(2)自定义软件源
如果遇到一些 Cent OS 官方软件源中没有的软件,或者软件版本等不符合要求的软件,就需要创建自定义软件源。自定义软件源可以是使用createrepo命令创建的rpm包软件源形式,也可以是提供程序可执行文件压缩包的形式。自定义软件源需要符合软件完备性的要求,也就是通过自定义软件源安装软件的时候,除了能够依赖集群内的基础软件源之外,不能够再依赖其他任何第三方的服务。软件依赖的完备性是为了防止经过一段时间后,外部依赖软件版本更新,导致项目软件无法适配依赖软件新版本的情况发生。
(3)时间同步服务
在服务器集群中存在不同服务器之间的系统交互,或者集群部署分布式系统时,服务器之间的时间不一致会导致系统功能出现异常甚至系统崩溃。所以在集群中需要时间同步服务,保证各个服务器之间的时间同步。集群中的时间同步服务整体的设计结构如图 2所示。
集群内的时间同步服务需要选取一台Cent OS 服务器作为集群时间同步服务器,其他的服务器启动时间同步服务,通过该服务器进行时间同步。如果集群网络能够连接其他网络或者互联网,集群时间同步服务器可以指定向其他网络或者互联网的时间同步服务器进行时间同步。
在 Cent OS 服务器上,使用 chrony 来创建时间同步服务,可以配置接受其他服务器进行时间同步的请求,也可以配置向其他服务器请求时间同步。Windows Server 类型的服务器,可以将系统的时间同步服务器地址修改为集群时间同步服务器,实现时间同步。
2.2.2 应用服务
集群中安装的应用服务是体现集群功能灵活性的关键,集群中的应用服务可以单独部署,也可以混合部署,主要包括大数据服务、Docker 微服务、数据库服务、团队协作服务、单应用服务、虚拟化云服务等。
(1)大数据服务
大数据服务中包含大数据的多种组件,根据不同组件的相互配合,能够满足多种复杂场景之下的大数据应用。集群中可以安装 Ambari 系统管理大数据组件,其中包括 HDFS、Map Re⁃duce
、Spark、Kafka、Storm、Flume、Zookeeper等。
(2)Docker微服务
Docker是目前非常主流的一种微服务组件管理方式,提供了多种多样的公用组件,还可以配合k8s、Compose 等组件进行服务管理。Docker各种不同组件抽象出一套通用的管理方法,将各个组件的安装管理模式统一化,使各个组件的操作差异仅仅局限在软件配置上。极大降低了组件的使用复杂程度,有利于开发人员的学习和使用。
(3)数据库服务
集群式的数据库服务包括两种形式,一种是My SQL多节点部署的主从备份式数据库,另外一种是并行计算数据库,如Greenplum。前者实现低延时OLTP的高可用配置数据库;后者实现了大规模的数据仓库,以存储大量、追加型、无修改、不删除类型的日志型数据,满足OLAP 和容忍较高延时的 OLTP场景需求。
(4)团队协作服务
项目团队开发,需要团队协作服务的支持,需要安装Git、SVN等代码托管服务,再进一步还可以安装Jenkins等用于流水线作业、自动化运维的服务组件。
(5)单应用服务
单应用服务指的是单服务器上运行的软件,可能是一个Python脚本,也可能是一个Java开发的可运行Jar包程序。
单应用服务程序的部署需要考虑部署服务器的处理器负载、内存、磁盘和网络带宽的使用情况,要保持各个服务器运行负载基本持平。
为了保证程序运行安全和系统稳定,单服务运行时需要采取分用户的方式运行,为应用程序创建特定用户,分配必要的权限,使程序运行在限制权限的环境中,不能因为单个服务的问题,导致其他服务甚至系统异常。
(6)虚拟化云服务
项目系统的开发是一个非常复杂的工程。系统的涉及面越广,出现的不可控因素的可能性越大,需要的程序运行环境越复杂,仅仅靠有限数量的服务器和 Cent OS 7、Windows Server两种操作系统无法支撑。在这种情况下,可以通过虚拟化云服务对系统环境进行扩展,安装Cent OS 6
、Cent OS 7、Ubuntu、Win⁃dows等操作系统的云主机运行环境,增强集群环境的灵活性。
目前主流的服务器处理器都支持虚拟化特性,部分服务器需要在 BIOS 中打开虚拟化支持。安装虚拟化云服务,可以在Cent OS 7 系统中安装 VMware 软件作为虚拟机管理器,在Win⁃dows Server 上安装 VMware 客户端,远程管理运行在Cent OS 7系统上的VMware云主机。通过对云主机设置不同的网络连接方法和端口映射模式,可以灵活地调整外部对云主机内部应用的使用方法。
2.2.3 操作管理服务
(1)用户权限管理
对应用程序进行分用户权限进行管理,是保证集群服务安全性的有效手段。通过对不同用户设置不同的权限,降低当前用户运行程序带来的异常对其他用户运行程序造成的影响。
(2)远程管理服务
服务器集群的维护工作,除了在系统崩溃、网络中断等极端情况下,都会使用远程管理的方法。远程管理服务主要有面向 Linux 的 SSH、VNC 服务和面向 Windows 的远程桌面、Team⁃Viewer 等远程控制服务。服务器集群中必须部署符合实际情况的远程管理服务。
(3)文件交互服务
服务器集群中丰富的应用内容,都需要从集群外部获得相关文件;集群内部生成的文件,也有可能需要从集群内部导出到集群外部。集群内外文件交互的方式通常有 HTTP、远程桌面拷贝、SFTP/FTP等方式,特殊环境下只能通过U盘,甚至光盘拷贝来进行文件交互。
(4)集群内容管理
集群投入使用后,集群中的内容会逐渐增多,如果不能够对集群内容进行有效的管理,集群使用和运维工作会变得越来越困难。对集群内容进行清单式管理,就是要详细记录集群内安装的各项服务的配置信息和各项服务之间的关联情况。各项服务的配置信息包括服务名称、服务内容、服务部署的IP地址、应用的端口、用户名/密码、启动方式、关闭方式等细节信息。各项服务之间的关联情况包括各个服务的相互依赖情况。清单式的集群内容管理不仅方便集群的日常维护,也便于集群使用人员的信息共享。
3 、软件冲突解决方案
在服务器集群中混合部署多种应用程序,可能会遇到大量的软件冲突问题,包括软件依赖冲突、部署端口冲突等。解决冲突的方案有三种:
(1)通过修改程序源代码或者修改配置文件的方式来消除冲突点;
(2)将冲突双方调整到不同的服务器上部署;
(3)利用集群中的虚拟化云服务重建一套云主机环境部署冲突程序。
本套中小规模私有服务器集群设计方案,通过对硬件环境和软件服务的规范化设计,可以使集群满足大数据计算、微服务部署、数据库存储、虚拟化云环境等多方面的综合应用。集群基础服务构建了服务器集群的基础设施,操作管理服务规范了对集群使用的原则和方法,有利于集群的规范化管理。
TOP