如何配置 DNS 轮询负载均衡以实现高可用性

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 如何配置 DNS 轮询负载均衡以实现高可用性

简介


尽管这是一种更具争议性的技术,但利用和管理 DNS 响应(即返回的 IP 地址列表)来地理分布您的应用程序,以利用您的提供商的全球存在是一个很好的方法。除非您愿意在硬件和基础设施成本上花费一小笔财富,否则使用 DNS 来实现高可用性可能是一个很好的选择。

在本文中,我们将看到如何利用 DigitalOcean 的全球云服务器/数据中心基础设施所提供的一些真正出色和独特的可能性,通过管理 DNS 响应来实现地理分布、高可用的应用程序设置,以实现最小的停机时间(因此最小的数据丢失)。

术语表


1. 传统应用部署结构


2. 高可用性


  1. 高可用性应用部署结构
  2. 如何利用 DNS 实现高可用性
  3. 总结

3. 如何部署高可用性应用


  1. 设置负载均衡器/反向代理
  2. 设置 DNS 记录
  3. 设置应用服务器
  4. 设置数据库

传统应用部署结构


传统和最常见的应用部署依赖于所有相关组件位于同一位置的设置,原因有很多,比如:

  • 提供商缺乏手段;
  • 高成本,和/或;
  • 复杂的工程工作。

即使应用程序是由多台位于负载均衡器(或反向代理)后面的机器提供服务,即使数据库也设置了可靠性以防止数据丢失,这种安排也容易出现不同级别的错误,有时会导致停机时间。

为了防止这种情况,必须依赖并使用更可靠的系统架构。其中数据和服务器在不同地区(例如旧金山和纽约)全球分布。

高可用性


如果您的应用程序就是您的业务,您需要保持其在可能的情况下全天候可访问,几乎没有任何中断。不幸的是,在一个地点横向扩展到许多服务器并不总是解决方案,因为会出现意外的数据中心问题。

然而,在不同地理中心全球分布您的虚拟服务器可以为您提供所需的稳定性,从而使应用程序的正常运行时间尽可能高。

在 IT 系统设计方面,这种结构被称为高可用性

由于 DigitalOcean 在两个大洲的五个不同位置都有存在,您也可以全球分布您的应用程序堆栈。

高可用性应用部署结构


简而言之,高可用性应用部署结构取决于从不同数据中心向客户端交付和响应。

尽管有许多可能的方法可以获得这种结构,但可能最简单和最经济的方法是利用 DNS 的工作原理。

一个基本的示例设置可以考虑如下:

如何使用 DNS 实现高可用性


当用户输入网站的域名时,通过一组定义好的规则(即协议),Web 浏览器会拨号到域名服务器,并询问托管该网站的机器的地址。一旦收到 IP 地址,它就会将请求发送到该计算机,同时附带一些额外的数据,并呈现响应。

由于 DNS 允许保留多个记录(甚至是相同类型的记录),因此可以将多个主机列为服务器。

因此,如上图所示,如果您在 DNS 服务器中列出了 2 个位于不同位置的负载均衡器/反向代理的 IP 地址,每个负载均衡器都设置为在至少两个不同的数据中心之间平衡负载,如果其中一个数据中心不可访问,客户端的 Web 浏览器将尝试 DNS 服务器返回的下一个 IP 地址记录,并重复获取网站的过程。

这种负载均衡称为轮询 DNS 负载均衡。

总结


乍一看,事情可能看起来有点复杂。让我们使用逐步说明来总结它们:

  1. DNS 可以为相同的域名保存多个记录。
  2. DNS 可以返回相同域名的 IP 地址列表。
  3. 当 Web 浏览器请求网站时,它将依次尝试这些 IP 地址,直到获得响应。
  4. 这些 IP 地址应该指向负载均衡器/反向代理而不是应用服务器。
  5. 这些反向代理需要在多个位置平衡多个服务器的负载。
  6. 如果一个数据中心宕机,Web 浏览器无法从 IP 地址(即负载均衡器)获取响应,它将尝试访问另一个地址。
  7. 由于两个数据中心同时不可访问的可能性非常小,第二个负载均衡器将返回响应。
  8. Web 应用服务器应该是无状态的,以便使负载均衡器的工作更加容易。
  9. 数据库服务器应该以复制的方式设置。

如何部署高可用性应用


注意: 本教程与编程语言或 Web 服务器类型无关。遵循这些说明,无论您选择的框架、Web 或 HTTP 服务器如何,都可以实现高可用性。

设置负载均衡器/反向代理


实现高可用性的第一步是设置两个或更多个负载均衡反向代理,它们将在应用服务器之间进行通信。

  1. 在两个位置实例化两个云服务器:
    创建两个 DigitalOcean droplets。
    例如:文章:如何创建 DO 云服务器
  2. 在每个 droplet 上设置负载均衡器/反向代理:
    安装和配置 Nginx、Apache 或 HAProxy。
    例如:文章:Nginx 作为前端代理,Ubuntu 上的 HAProxy 负载均衡
  3. 获取负载均衡器的 IP 地址:
    输入 /sbin/ifconfig 并找出 droplets 的 IP 地址。
    例如:inet addr:107.170.40.112

设置 DNS 记录


DNS A 记录将域名(例如 www.digitalocean.com)转换为可访问的 IP 地址。

一旦您完成了在每个 droplet 上配置负载均衡反向代理的步骤,下一步是通过 DigitalOcean 的 DNS 服务添加 2 个 A 记录,将您的域名指向 IP 地址。

  1. 登录到您的 DigitalOcean 控制面板:
    单击左侧菜单上的 DNS,并添加一个新的域名,将其指向上一步中的负载均衡器 droplet。
  2. 添加新的 A 记录:
    一旦您进入下一步,点击上方的“添加记录”,创建一个新的 A 记录,使用另一个负载均衡器 droplet 的 IP 地址。

设置应用服务器


下一步是设置应用服务器。

为了使全球分发起作用,就像您创建的第一个负载均衡服务器一样,您需要在两个新的 droplet 上托管您的应用服务器。

注意: 您也可以在与负载均衡器相同的机器上运行每个应用服务器;但是,这并不被推荐。

在两个位置部署或复制您的应用服务器 droplet。例如:

  • NY 1NY 2
  • AMS 1AMS 2
  • SF 1NY 2 等。

回到第一步,并按照负载均衡器设置文章的说明,将它们配置为代理传入连接到这两个应用服务器 droplet。

设置数据库


很难想象一个没有数据库的 Web 应用程序。在将应用程序分布到多个服务器上时,最困难的部分可能是处理数据库。

根据您选择的数据库服务器,创建一个跨多个位置的重复配置。

参见:

  • 对于 MySQL 主/从复制:

如何在 MySQL 中设置主从复制

  • 对于 MySQL 主/主复制:

如何设置 MySQL 主-主复制

  • 对于 PostgreSQL 主/从复制:

如何在 PostgreSQL 上设置主从复制

完成创建复制数据库结构后,将您的应用程序指向使用它们的地址,如在教程中与 DB 服务器交互的方式。


目录
相关文章
|
1月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
|
8月前
|
存储 缓存 网络协议
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
|
6月前
|
域名解析 应用服务中间件 Shell
使用nps配置内网穿透加域名解析
使用nps配置内网穿透加域名解析
763 77
|
6月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
243 11
|
8月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
9月前
|
域名解析 网络协议 Ubuntu
DHCP与DNS的配置
通过这些步骤,您可以在Linux环境下成功配置和验证DHCP和DNS服务。希望这些内容对您的学习和工作有所帮助。
790 27
|
9月前
|
Java 数据库 开发者
详细介绍SpringBoot启动流程及配置类解析原理
通过对 Spring Boot 启动流程及配置类解析原理的深入分析,我们可以看到 Spring Boot 在启动时的灵活性和可扩展性。理解这些机制不仅有助于开发者更好地使用 Spring Boot 进行应用开发,还能够在面对问题时,迅速定位和解决问题。希望本文能为您在 Spring Boot 开发过程中提供有效的指导和帮助。
1086 12
|
11月前
|
弹性计算 负载均衡 网络协议
配置SLB监听器
配置SLB监听器
550 63
|
11月前
|
域名解析 弹性计算 监控
slb测试基本配置检查
slb测试基本配置检查
300 60
|
9月前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。

推荐镜像

更多
  • DNS