DHIS2 服务器托管{ #dhis2-server-hosting }¶
本章概述了在生产中建立 DHIS2 系统所面临的挑战。 它描述了我们在实践中常见的各种方法,并批判性地审视了每种方法的优缺点。 本章旨在为计划实施 DHIS2 的机构提供实用而务实的建议。 本文件以国家卫生部 (MOH) 为典型的系统所有者,但大多数考虑因素也适用于其他类型的组织。
建筑¶
最基本的 DHIS2 安装{ #most-basic-dhis2-installation }¶
DHIS2 是一个支持数据库的 java 网络应用项目,只需使用 tomcat 或 jetty 等 java servlet 引擎和 postgresql 数据库服务器,就能非常简单地设置运行。 有一定技术能力的人可以阅读 DHIS2 参考指南,在笔记本电脑上相对简单地设置两个软件包和它们之间的数据库连接。 对于开发人员或只想在本地试用 DHIS2 的人来说,这种类型的设置很常见。 从 https://dhis2.org/downloads 页面下载 DHIS2 网络应用项目文件(WAR 文件),在 dhis.conf 中配置数据库连接,然后通过连接到运行中的 tomcat 服务器的网络浏览器访问 DHIS2 应用项目。
简单架构](resources/images/simple_architecture.png "简单架构")
在生产中设置和运行 DHIS2 所涉及的不仅仅是连接的软件组件。 硬件资源需要调配和管理。软件的安装需要考虑安全性、性能和可维护性。 在大多数情况下,DHIS2 系统不止一个,还可能包括架构内的其他系统。需要考虑到周边的基础设施(监控系统、信息传递系统、互操作性组件等)。最重要的是,设计、安装和管理系统需要大量的技术技能和经验(热件)。
生产中的 DHIS2{ #dhis2-in-production }¶
对在生产环境中运行的 DHIS2 服务器进行规划是一项更为详细和广泛的工作,这是因为 - 应用项目通常需要全天候持续可用,很少有计划内或计划外的停机时间 - 所保存的数据有价值且可能敏感 - 大型网站可能有数以万计的用户和数以百万计的记录 - 系统需要多年积极维护和更新
所有这些都对物理基础设施、安全和性能限制以及广泛的技术技能提出了相当复杂的要求,而这些要求在查看上述简单架构时都不会立即显现出来。 在实施规划阶段,必须对服务器的实施进行适当规划,以便能够调动物理和人力资源来满足这些要求。
制定计划{ #making-a-plan }¶
安全{ #security }¶
从一开始就考虑到安全问题总是有益的。 实际上,这可能意味着你已经做好了预算: 1. 一名安全官员作为核心团队的成员。 安全官员的主要职责之一是制定安全管理计划,例如遵循 ISO27001 的指导原则。 2. 每年对系统进行内部或最好是外部审计。本指南的[自己的部分](#security-considerations)中有更多关于安全的细节。
备份和存档{ #backups-and-archiving }¶
这里的详细注意事项应源于安全计划,并根据安装过程进行设置。 我们在此特别提请注意,因为根据我们多年的经验,最常见的 "灾难 "与备份不足有关,往往会导致不可挽回的数据丢失。
备份计划需要考虑的重要方面有 1. 时间点恢复目标是什么(您能承受损失多少数据) 2. 自动化。 依赖人工干预进行备份的备份计划并不可靠 3. 异地存档。 在同一台机器上存储备份有一定价值,但需要考虑机器(或附近机器)发生灾难性故障的可能性。 这包括云虚拟机。 此外,还要考虑高速磁盘容量的成本。 对于有能力的用户,现在可从一系列云提供商处获得使用对象存储(兼容 S3)的异地存档,这通常是最便宜、最简单的存档方式。 4. 测试。 备份需要定期测试(最好是自动测试),以确保您认为是备份的文件实际上是良好的备份。
备份计划还涉及其他方面,但重要的一点是,在项目开始时就应认真考虑,而不是事后才考虑。 预算总是需要权衡的,因此任何备份计划都应适当计算成本,同时考虑到保留要求与预算。
物理环境{ #physical-environment }¶
计划中比较重要的部分之一是决定服务器运行的物理环境。 第一个广泛的选择是拥有自己的设备和托管设施,还是使用云服务提供商并为使用资源和可能的其他服务(如应用项目管理)付费。 答案没有对错之分,如何选择取决于成本、可用技能、现有基础设施、合规性等因素。 DHIS2 已通过多种部署模式成功实施,但每种模式都有其自身的风险和挑战。 在本节中,我们将对每种模式提出一些看法,并在最后简要列出需要考虑的因素。
在地下室{ #in-the-basement }¶
这个略带调侃意味的描述指的是那些购买服务器设备并将其安装在大楼服务器机房的组织。 一切都近在咫尺,最大限度地增强了对资源的控制感,但控制带来的是更大的责任。
这种方法是迄今为止最难掌握的。 典型的挑战包括
- 消防安全控制不当
- 由于空调和/或附近的管道不正确而造成的水渍风险
- 提供与大楼其他部分分开的连续供电线路
- 粉尘控制不足或不存在
- 鼠害造成的电缆损坏
- 在办公时间之外,通常很难全天候实际进入政府大楼
光是建筑设计方面的考虑,就使其成为一项相当昂贵的提议。 将服务器级设备和机架放置在不规范的环境中会缩短使用寿命,并使保修失效。
由于所涉及的成本和风险,在大多数情况下,我们不建议采用这种方法。 此外,还需要更多的技术技能组合,包括数据中心工程、网络和安全工程,这些都可以通过以下方法之一来避免。
部委或国家政府数据中心{ #ministry-or-national-government-data-centre }¶
考虑到上述困难,许多国家采取了将托管需求集中到政府或部委专用数据中心的战略。
- 管理不同
- 自由和开放源码软件的技能并不总是很普遍--很多都是 windows、hyperV、vmware
- 服务访问、网络配置更改等可能会非常繁琐
- 我们经常看到超量配置的虚拟机出现性能问题,尤其是数据库服务器的磁盘性能问题
国内主机托管或虚拟主机{ #in-country-co-location-or-virtual-hosting }¶
一些国家成功地利用当地数据中心提供商托管物理服务器(共用)或租用虚拟资源。 这种方法的优点是可以满足数据地理位置方面的要求(例如,所有数据必须存储在国内)。 此外,与大型全球商业供应商相比,政府往往对这些公司有更大的影响力--他们不太可能在延迟支付账单时被切断服务!
这种方法的潜在风险是 - 由于规模经济,本地托管往往比全球云计算公司更昂贵 - 在政府规定使用某家公司作为 "首选供应商 "的情况下,往往会出现性能和客户服务方面的问题
商业云提供商{ #commercial-cloud-providers }¶
- 通用基础设施即服务(LINODE、AWS、AZURE 等)
- 专门的 DHIS2 服务提供商--软件即服务(BAO、BlueSquare、HISP SA 等)
| 方法 | 描述 | 费用 | 技能 | 安全 |
|---|---|---|---|---|
| 在地下室 | 服务器安装在部内,通常是在重新利用的房间内 | 安装费用可能会很高,因为要使房间在电力、空调等方面达到标准。 | 要求具备系统管理、网络管理和数据中心知识等方面的高水平技能 | 物理和网络安全是额外的挑战 |
| 国家政府数据中心 | 卫生部的应用项目托管在一个专门建立的数据中心,作为跨政府服务进行管理 | 卫生部的成本因数据中心的成本回收机制而异。 从零到大大高于商业云计算 | 运行系统所需的技能仅限于系统管理。 取决于数据中心是否具备与网络、虚拟机管理和配置有关的其他技能 | 实施者和数据中心提供商共同关注安全问题 |
| 商业云 1(基础设施即服务) | 卫生部在一家商业云公司开设账户,并支付服务器资源使用费 | 通常是成本最低的选择。 市场上的定价计划差异很大 | 大多数情况下只需要系统管理员技能来设置和运行系统。 管理流程需要到位,以管理预算并确保账单支付。 | 实施者和云提供商共同关注安全问题 |
| 商业云 2(软件即服务) | 卫生部在一家提供 DHIS2 即服务的商业云公司开设了账户 | 成本高于基础设施即服务,但无需支付昂贵的系统管理员工资 | 需要制定管理项目,以管理预算并确保支付账单 | 大多数安全问题由服务提供商管理 |
所需技能{ #required-skillset }¶
DHIS2 是一个管理起来相对复杂的系统。 系统管理团队需要具备以下方面的专业知识和经验: - 乌班图 linux - Apache2 或 nginx 网络代理 - Apache tomcat - Postgresql 数据库 如果内部没有这方面的经验,那么部委最好将部分管理工作外包给当地具有这方面技能的实体,即使这被视为一种过渡性安排。
保养¶
除安装外,正在进行的活动通常包括.....: 1. 根据需要提供分期/测试/培训实例 2. 监控性能并调整软件以适应 3. 管理和测试备份 4. 小版本升级的补丁(一般频率为 4-6 周 5. 规划并执行 DHIS2 实例的重大升级(每年一次) 6. 主要操作系统/数据库服务器升级(每 2-3 年一次)
UIO 可以提供有关整体架构和所有 DHIS2 具体内容的培训,还可以将维护者与 DHIS2 系统管理的全球实践社区联系起来。 请注意,上述技能是有前提要求的。 依靠不具备必要经验的系统管理员是不切实际的,也是不明智的。
软件安装和配置{ #software-installation-and-configuration }¶
UIO 团队提供了许多资源来帮助安装:
- (https://docs.dhis2.org/en/manage/manage.html) 是由 DHIS2 开发人员维护的权威 DHIS2 参考[指南],从后端角度全面介绍 DHIS2 的配置和功能,需要仔细阅读。 有经验的系统管理员可以在其中找到所需的内容,从而设计出一个完整的可用于生产的 DHIS2 安装。 要配置、监控和保护周围环境,还有很多额外的工作要做。
- 理想情况下,安装应该是自动化的,而不是手工制作的艺术品。 我们提供了一些[工具](https://github),至少可以使用 LXD 容器自动完成大部分安装工作。 事实证明,这对许多实施方案都很有用,而且还从上述参考资料和其他地方获得了指导,在默认情况下对良好做法进行了编码。
- 当前的一个 项目 是将上述安装方法现代化,并使用 ansible playbooks 对其进行重新实施,减少对 LXD 的依赖。