配置高可用的循环复用DNS负载均衡

Xilnx大学计划/XUP ZYNQ ZU开发板 TUL PYNQ™-ZU板,基于Xilinx Zynq UltraScale+ MPSoC,是为Xilinx大学项目设计的,以支持Xilinx PYNQ (Python Productivi-ty for Zynq)开源框架和嵌入式系统开发。 阅读详情

配置高可用的循环复用DNS负载均衡

提供:ZStack社区

前言

如何利用云主机提供商的全球部署来最合理的分布你的应用?这个话题在技术圈充满争议,不过DNS(即,IP转发列表)应该算是一个好方案。特别是,如果你不想在那些高端网络硬件上砸银子,那么用DNS实现高可用可以说是最好的方案了。

本文以DigitalOcean为例,介绍如何使用管理DNS响应的方式来利用云主机提供商在全球的数据中心分布来实现应用的地域分布、高可用、宕机时间最小化(也就是数据丢失最小化)的部署。

传统的应用部署架构

传统上(也是最常见的情况),大部分应用的相关组件都是部署在同一个地域的,这多半是因为:

  • 主机提供商无法提供其他地域的资源
  • 跨地域部署的成本太高
  • 跨地域部署在技术上难以实现

就算你的应用跑在了多台服务器上,多台服务器通过负载均衡(或反向代理)被访问,就算你的数据库也用类似的方式实现了一定的可靠性与数据丢失的保护措施,但也仍然无法避免由于多个层面同时出错而造成偶尔的宕机。

更加可靠的系统架构,是将数据和服务器分布到全球的不同地域(比如旧金山和纽约)。

高可用

一个业务型应用需要保持7天24小时在线,可能的话最好完全没有中断。如果你的服务器都部署在同一个数据中心内,那么如果这个数据中心出了问题,你的业务就无法继续服务了。而另一方面,跨地域部署能够提供更好的稳定性,提升应用的在线服务等级。

用IT系统设计的话来说,这就叫做高可用。

DigitalOcean目前在两个大陆、五个地域设置了数据中心,因此DigitalOcean的用户有这个条件将自己的应用设计成全球部署。

你可以设置一个浮动IP(Floating IP)作为该应用的公共入口,该浮动IP可以即时的被映射到任意一个指定的云主机上,这使得整个基础架构有更好的灵活性和响应能力。有关浮动IP的用法可参考这篇文章。

高可用应用的部署架构

简单来说,高可用应用的部署会将客户端发来的请求发送到不同的数据中心,并从不同的数据中心获得响应结果以返回给客户端。

此类架构的实现有不同的方法,而DNS应该是最简单、最便宜的方法。

一个极简的DNS配置差不多是这样的:

                             ________________
                            |                |
                            |     CLIENT     |
                            |  WEB BROWSER   |
                            |________________|
                                    ||
                                    ||
                             _______\/_______
                            |                |
                            |   DNS SERVER   |
                            |________________|
                                    ||
                                    ||
                            _______/  \_______
                           /                  \
                          /                    \
         ____________________                ____________________
        |                    |              |                    |
        |   SAN FRANCISCO    |              |   SAN FRANCISCO    |
        |____________________|              |____________________|
        |   ______________   |              |   ______________   | 
        |  |              |  |              |  |              |  |
        |  |  WEB SERVER  |  |              |  |  WEB SERVER  |  |
        |  | LOAD BALANCE |  |              |  | LOAD BALANCE |  |
        |  |     PROXY    |  |              |  |     PROXY    |  |
        |  |_____    _____|  |              |  |_____    _____|  |
        |________|  |________|              |________|  |________|
                  ||      __                  __      ||
                  ||<=====||==================||=====>||    
                  \/      \/                  \/      \/
         ____________________                ____________________
        |                    |              |                    |
        |    SAN FRANCISCO   |              |      NEW YORK      |
        |____________________|              |____________________|
        |   ______________   |              |   ______________   |
        |  |              |  |              |  |              |  |
        |  |  APP SERVER  |  |              |  |  APP SERVER  |  |
        |  |______  ______|  |              |  |______  ______|  |
        |   ______||______   |              |   ______||______   |
        |  |              |  |              |  |              |  |
        |  |   DATABASE   |<==================>|   DATABASE   |  |
        |  |______________|  |              |  |______________|  |
        |____________________|              |____________________|

如何使用DNS实现高可用

当用户在浏览器里访问一个域名时,浏览器会呼叫域名服务器(name server)以询问该域名对应的机器IP。这是通过一系列预定义的规则(比如网络协议)来完成的。当浏览器获得这个IP后,它会将访问请求(以及其他一些数据)发送给这个IP背后的机器,并解析获得的响应内容。

DNS可以记录多个IP对应一个域名,因此可以将多个主机列为一个应用的服务器。

如果是上图所示的那种架构,如果你将两个位于不同地域的负载均衡器/反向代理器的IP列在DNS记录中(每一个地域的负载均衡器为该地域下的、跨数据中心的多个应用服务器进行负载均衡),则当一个数据中心不可用时,浏览器会自动去访问DNS记录中列出的下一个IP,直到成功获取网站内容为止。

这样的负载均衡就叫做循环复用DNS负载均衡(Round Robin DNS load-balancing)。

小结

总结一下上面所说的内容:

  1. DNS可以针对同一个域名记录多条内容
  2. DNS可以针对同一个域名返回多个IP
  3. 当浏览器请求页面时,它会依次尝试列表中的IP直到接收响应为止
  4. 这些IP应当指向负载均衡器/反向代理服务器,而不是应用服务器
  5. 接入反向代理的服务器应该位于多个地域
  6. 当一个数据中心不可用、浏览器无法从这里的IP获取响应时,会尝试请求另一个数据中心的IP
  7. 因为两个数据中心同时不可用的几率比较小,所以浏览器有很大几率从第二个负载均衡器获得响应
  8. Web应用服务器应当是无状态的(stateless),以方便负载均衡器进行工作
  9. 数据库服务器应以多副本的方式(replicated)进行配置。

如何部署高可用的应用

注:本教程可适用于任何编程语言(框架)、任何Web服务器引擎的应用。

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

首先,设置两个或多个负载均衡反向代理,它们将负责应用服务器之间的通讯。

  1. 在两个地域启动两个云主机:在DigitalOcean上就是创建两个Droplet,详细可参阅这个教程。

  2. 在每个云主机上设置负载均衡/反向代理:安装配置Nginx、Apache或HAProxy,详见“Nginx作为前端代理”、“在Ubuntu上配置HAProxy负载均衡”二文。

  3. 获取负载均衡器的IP:输入/sbin/ifconfig,找到云主机的IP。比如:inet addr:107.170.40.112

设置DNS记录

DNS A记录(A Records)能够将域名(比如www.digitalocean.com)翻译成机器能看懂的IP地址。

完成了上述两个负载均衡器的配置之后,接下来就是将两个A记录添加到DigitalOcean的DNS服务里,让你的域名指向这两个IP。

  1. 登陆到DigitalOcean的管理界面中,点击左侧的DNS菜单,添加域名以指向负载均衡器的云主机。

  2. 添加新的A记录:点击“Add Record”以添加新的A记录,填入另一个负载均衡器云主机的IP。

设置应用服务器

接下来是应用服务器的设置。

全球分布的实现不仅需要刚才创建的负载均衡服务器,还需要多个应用服务器。我们将创建两个新的云主机作为应用服务器的主机。

注:你也可以在刚才安装负载均衡器的服务器上运行你的应用服务器,然而这不是推荐的做法。

在两个不同的区域创建云主机,比如:

  • NY 1和NY 2各一个;
  • AMS 1和AMS 2各一个;
  • SF 1和NY 2各一个,等等。

创建配置完毕后,在负载均衡器上配置两个应用服务器的代理连接(详细可参考之前介绍的负载均衡器配置文章)。

设置数据库

Web应用多半都是需要数据库的。将应用分布部署在多个服务器上,这其中最大的挑战恐怕就在数据库这块。

针对不同的数据库跨地域多副本的部署方式,有不同的文章介绍,详见:

多副本结构创建完毕后,将应用的数据库连接指向刚才创建的数据库服务器,即可完成。

本文来源自DigitalOcean Community。英文原文:How To Configure DNS Round-Robin Load-Balancing For High-Availability by O.S. Tezer

【C/C++ 性能优化】了解cpu 从而进行C++ 高效编程 在当代软件开发领域,CPU(Central Processing Unit,中央处理器)的性能优化一直是一个核心议题。尤其是对于C++开发者而言,无论是在Linux平台还是其他操作系统中,都需要深刻理解CPU的工作原理以及如何充分利用CPU资源,以确保软件运行的高效性和稳定性。正如计算机科学家Donald Knuth在《计算机程序设计的艺术》中所说:“过早的优化是万恶之源”,然而,这并不意味着我们应该忽视性能优化——相反,我们需要在正确的时间以正确的方式进行优化。 阅读详情

相关推荐

手把手教你用STM32CubeMX和HAL库驱动DW3000:从SPI配置到第一个测距Demo

本文详细介绍了如何使用STM32CubeMX和HAL库驱动DW3000 UWB定位通信模块,从SPI配置到实现厘米级测距Demo的全过程。涵盖硬件连接、SPI通信调试、驱动移植及双向测距(TWR)算法实现,帮助开发者快速掌握UWB高精度定位技术,适用于仓储物流、智能家居等场景。

weixin_27038245的博客 485

DNS循环复用

DNS循环复用 DNS负载均衡是通过循环复用实现的,如果发现主机名的多个地址资源记录,则可用它循环使用包含在查询应答中的主机资源记录。默认情况下,DNS服务器的服务使用循环复用对资源记录进行排序,这些资源记录是在解析为多个映射的主机名应答中返回的。该功能用于对客户机使用 Web 服务器和其他频繁查询的多宿主计算机的负载平衡。要使循环复用正常工作,必须首先在该区域中注册

闲云野鹤专栏 695

高德地图爬虫

高德地图爬虫 工具:Pycharm,win10,Python3.6.4 1.需求分析 这篇爬虫和上一篇百度地图爬虫要求一样,百度地图爬虫我发现有一个auth参数会一直变化,一旦变化则获取的数据是不准确的,所以我上高德地图看了一下,高德地图没有这个反爬机制。但是高德地图大概爬取120个页面就会跳一次验证码,我这里是通过换IP解决这个问题的。 2.数据准备 同样我们需要全国地级市信息,用之前...

123的博客 1万+

详解keepalived搭建高可用的DNS服务器

本文将为您介绍如何在CentOS7上搭建主备DNS服务器。我们将使用Bind作为DNS服务器,并使用Keepalived实现DNS服务器的高可用性。

LZL_LONG的博客 1511

WS2812呼吸灯效果实战:用STM32的PWM+DMA实现流畅渐变(附完整代码)

本文详细介绍了如何使用STM32的PWM+DMA技术实现WS2812呼吸灯效果,提供完整的代码示例和调试技巧。通过PWM波形编码和DMA传输机制,解决了传统IO模拟控制方式的高CPU占用问题,实现了流畅的LED渐变效果,适用于各种嵌入式开发场景。

weixin_30566063的博客 455

LangChain4j + Milvus 从0-1实现会话管理与RAG检索的AIChat超详细教程

本教程将介绍如何使用LangChain4j和Milvus向量数据库构建一个具备流式输出、会话管理、会话隔离和基于文档RAG检索能力的AI机器人。我们将使用阿里百炼模型作为LLM后端,并通过Docker部署Milvus向量数据库。创建Assistant接口,定义聊天服务:LangChain4j 中文文档 | LangChain4j 中文文档wiringMode :这个属性一般两种,一种是自动装配,我们这里选择手动配置。

2301_80014343的博客 1436

【无标题】DNS配置和远程访问

首先准备三台设备,一台作为DNS服务器,一台作为访问客户端,一台作为web服务器。分别命名为test1,test2,test3。具体步骤如下,IP地址根据设备进行调整。使用curl或elinks访问网站。关闭防火墙、关闭selinux。部署站点、关闭防火墙。

2401_84850093的博客 860

PADS VX 蛇形走线的设置方法与绕制

在PCB设计过程中,在等长的设置中是必须用到蛇形走线的,并且DDR模块也会经常使用到。因此掌握蛇形走线的设置方法对我们PCB高速板设计中有很大的帮助。下面介绍蛇形走线的设置方法与绕制。1.单根网络线的蛇形走线的设置:打开PADS router界面,点击“工具”→“选项”(快捷方式“Ctrl+Enter”),弹出“选项”窗口,选择“布线”界面下的“调整”,在“调整”界面,设置蛇形走线,倒角比例可以灵活设置。操作如下图所示:完成蛇形走线的配置后,快捷方式“F3”进行交互式布线时,单击右键选择“添加蛇形走线”,便

tianpu2320959696的博客 3395

高可用dns方案

昨天老毕跟我讨论dns的问题,今天想了想,其实实际在生产环境中用到的dns大体有3种:1.内网调用DNS 一般是每个机房一组,做ms结构,主要功能是供机房内部应用之间调用解析,减少对hosts的依赖,避免硬编码。一般ms结构就可以了,不太会做其他的高可用。2.回源调用dns 和内网调用dns功能差不多,不过这个是跨机房的调用,而且一般会通过view做智能dns解析。比...

weixin_33810302的博客 631

2、TCGA数据处理(差异分析前处理)

注意:1、是R语言中用于读取文本文件并创建数据框的函数。它可以从文本文件中读取数据并将其存储为数据框的形式,每一列代表一个变量,每一行代表一个观察值。2、括号要成对,不能少了;3、file = 'TCGA-LIHC.htseq_counts.tsv'引号可以是单或双引号,建议单;4、逗号主要中英文,都是用英文模式才没错;5、.tsv文件类型必须要有,不能删除,否则读不进来;6、上面代码将TCGA-LIHC.htseq_counts.tsv文件读入并赋值给count1。

PLW_12的博客 2668

用angr找到strcpy的栈溢出漏洞

这篇文章其实是分析angr文档里给出的一个挖漏洞的小例子。 原文链接在此:https://docs.angr.io/examples#beginner-vulnerability-discovery-example-strcpy_find 这是第一个用angr在二进制里找可利用条件的教程。第一个例子是一个非常简单的程序。这个angr脚本会从程序的entry到strcpy找到一条路径。(只有我们能够控制strcpy的参数的时候) 为了找到正确的路径,angr需要去算一个密码参数,算这个密码,angr只要2s

^_^ 1220

自建高可用DNS方案实践

本文主要介绍如何在腾讯云平台下自建高可用DNS环境,来满足企业在云上的内外网域名解析的需求。这里主要介绍两种方案的实现方式,方案一: 基于Centos 系统自带的Bind软件构建智能解析方案;方案二:基于CoreDNS与ETCD来构建CoreDNS高可用方案,在阐述两个方案实现的前,咱们一起回顾下DNS的基础概念及原理。DNS基础概念(一)DNS概述DNS是一个层次化的分布式数据库,其全称为域名系...

架构师小秘圈 2869

【大语言模型 21】语言模型训练目标:MLM vs CLM vs GLM对比分析

本文深入对比分析三种主流语言模型训练目标:掩码语言模型(MLM)、因果语言模型(CLM)和双空白填充(GLM)。通过数学推导、代码实现和实验对比,揭示不同训练目标的工作机制、适用场景和性能差异,为选择合适的预训练策略提供科学指导。

熵数实验室 1177

高可用的循环复用DNS负载均衡

如何利用云主机提供商的全球部署来最合理的分布你的应用?这个话题在技术圈充满争议,不过DNS(即,IP转发列表)应该算是一个好方案。特别是,如果你不想在那些高端网络硬件上砸银子,那么用DNS实现高可用可以说是最好的方案了。本文以DigitalOcean为例,介绍如何使用管理DNS响应的方式来利用云主机提供商在全球的数据中心分布来实现应用的地域分布、高可用、宕机时间最小化(也就是数据丢失最小化)的部署。

weixin_39833509的博客 946

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

循环复用DNS实现多服务器的负载均衡

 http://forum.eviloctal.com/archiver/tid-19804.html文章作者:王琦  孟昭勇[b]摘  要[/b]  分析了目前常用的负载均衡技术,并以四台服务器的负载均衡为例,介绍了利用循环复用DNS实现负载均衡的方法。[b]关键词[/b]  负载均衡      DNS      循环复用         1  概述      企业知名度增加,网站访问量逐渐

1750

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

[轉]通过DNS的负载均衡方案Round-robin DNS

From : http://haka.sharera.com/blog/BlogTopic/5967.htm 循环复用DNS负载均衡技术循环DNS(Round-robin DNS)技术是负载平衡最常用的方法之一。最早的负载均衡技术是通过DNS服务中的随机名字解析来实现的。在DNS服务器中,可以为多个不同的地址配置同一个名字,这个数据被发送给其他名字服务器,而最终查询这个名字的客户机将在解析这个名...

weixin_33888907的博客 1951

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

DNS负载均衡

在我们学习负载均衡知识的时候,首先接触的就是DNS负载均衡相关的内容,那么作为基础内容,我们就来深入学习一下广域多台服务器的负载均衡配置。首先我们来对基础内容进行一下回顾,之后会对相关的配置问题进行举例讲解。 两台以上的服务器进行协同工作必然涉及到负载均衡问题,目前常用的负载均衡技术主要有:NAT负载均衡、反向代理负载均衡及DNS负载。 NAT负载均衡将一个外部IP地址映射为多个内部IP地址,...

qq_33829549的博客 436

windows使用DNS循环复用实现负载均衡

1 概述 企业知名度增加,网站访问量逐渐上升,是每一个网管所盼望的。但同时应用服务器的数据流量和访问量将成倍增加,服务器将不堪重负。 这时,可采用两种方式解决此问题,一是进行硬件升级,购买配置更高、性能更好的服务器,这种方法的优点是简单易行,缺点是投资大, 会造成现有资源的浪费,且下一次业务量的提升还会面临同样问题。另一种方法是采用集群技术,利用两台以上的服务器进行...

weixin_34194551的博客 442

循环复用DNS实现多服务器负载均衡

本文系转载,如需转载请保留文章底部的链接       企业知名度增加,网站访问量逐渐上升,是每一个网管所盼望的。但同时应用服务器的数据流量和访问量将成倍增加,服务器将不堪重负。   1 概述   企业知名度增加,网站访问量逐渐上升,是每一个网管所盼望的。但同时应用服

只为那一份执着 874

win2003sevser的DNS负载均衡配置

DNS负载均衡技术是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。  DNS负载均衡的优点是经济简单易行,并且服务器可以位于internet上任意的位置。但它也存在不少缺点:    为了使本DN

sgear 1671

win2000sevser的DNS负载均衡配置示例

DNS负载均衡技术是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。  DNS负载均衡的优点是经济简单易行,并且服务器可以位于internet上任意的位置。但它也存在不少缺点:  为了使本DNS服

canduecho的专栏 860

通过DNS的负载均衡方案Round-robin DNS[zz]

循环复用DNS负载均衡技术 循环DNS(Round-robinDNS)技术是负载平衡最常用的方法之一。最早的负载均衡技术是通过DNS服务中的随机名字解析来实现...

weixin_30580341的博客 613

循环DNS实现负载平衡

循环DNS(Round-robin DNS)技术是负载平衡最常用的方法之一。最早的负载均衡技术是通过DNS服务中的随机名字解析来实现的。在DNS服务器中,可以为多个不同的地址配置同一个名字,这个数据被发送给其他名字服务器,而最终查询这个名字的客户机将在解析这个名字时随机使用其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,因此不同的客户访问的也就是不同地址的Web服务器,从而达到负

VaJoy童鞋的专栏 2305
上一篇: 如何在Ubuntu 14.04上利用Logstash与Kibana实现日志信息集中化
下一篇: 如何在Ubuntu 14.04上安装具备大数据友好特性的Apache Accumulo NoSQL数据库
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值