具有镜像数据库和文件系统的多个VPS

我最近对VPS集群产生了兴趣,尝试建立一个多VPS设置似乎是一个好主意,我将在下面介绍.它不是真正意义上的生产用途,而是更多的实验,以提高多服务器系统的相关技能和知识.但是由于我缺乏专业知识,我需要一些一般信息.

设置说明

由于我每天处理使用Redis作为数据存储区的Node.js应用程序,因此它将作为设置的基础.我的想法基本上是至少2 VPS设置.每个服务器将运行相同的节点服务(假设两个服务器上同时使用5个不同的服务),每个VPS也运行一个Redis实例,Node实体使用该实例来存储数据.此设置的目的是在两个服务器之间启用数据镜像(如果第一个服务器中的节点服务#1向Redis添加了某些内容,则更改也应反映在第二个服务器中).这也意味着上传文件等应该在两台服务器上进行镜像(从某种意义上说,数据存储和文件系统的变化必须反映在另一台服务器上).

理想情况下,这将实现在服务器之间共享负载的简单负载平衡器,并且在单个服务器发生故障的情况下,其他服务器将继续运行并因此保持节点服务联机.需要镜像更改的速度不高,即使是一分钟的延迟也不重要.但是,如果用户正在主动更新数据,则必须向他显示他刚刚更改的数据(在某种意义上,他必须以某种方式被迫与服务器通信,他更新了数据,因为更改可能没有镜像到其他服务器).

问题

>实现负载平衡的合理方法是什么?我听说
关于使用一些DNS魔术,但不是真的了解它.只需更新DNS
记录太慢,因为它们被缓存在多个地方.我也是
阅读有关使用一个处理平衡的“主代理”服务器的信息
其他服务器之间.这似乎有点风险,因为如果主要
服务器失败,一切都将脱机.
>如何在不同的VPS上镜像部分文件系统
上传的图像等将出现在两台服务器上.有没有
广泛的软件选项,或者是一个检测的简单脚本
上传然后在不同服务器上复制这些文件
正好?
> Redis甚至支持我描述的那种镜像吗?我只是
发现有关主从复制的信息,如果我
正确理解,意味着更新是单向的,在
感觉到主设备可以更新从设备,但从设备无法更新
大师.

谢谢!

解决方法

可以仅对问题1提供帮助.

有几个方法可以实现负载平衡和故障转移(最简单的第一个)

> DNS循环(负载平衡和故障转移)
>动态DNS(故障转移)
>代理(负载平衡和故障转移)
>本地IP故障转移(故障转移)
> BGP Anycast(负载均衡和故障转移)

DNS负载平衡很简单:假设您有两台(或更多)IPs为1.1.1.1和2.2.2.2的服务器.
要设置DNS负载平衡,请为主机名创建DNS记录,例如www.example.com:

www.example.com. A 1.1.1.1
                 A 2.2.2.2

(此外,DNS服务器应配置为以循环模式提供此名称,但它通常是认值).

现在,每个到www.example.com的DNS请求都将以伪随机顺序回复两个地址,因此您的客户端可能会在服务器之间平均分配.

没有必要经常更新记录,一旦设置它永远有效.它还提供了一定程度的故障转移,就好像一台主机停机,浏览器超时然后尝试第二台主机,但可能会有相当大的延迟,用户也不会喜欢它.

动态DNS.可能添加到1.,一旦主机发生故障,动态更新DNS记录并删除对故障主机的引用,但DNS系统中的大量缓存会导致我上面提到的某些时期的性能下降.使用非常低的TTL可以改善情况,但仍然存在客户端操作系统/浏览器中不会考虑TTL的缓存,也有些ISP也不会忽视低TTL.无论如何,底线 – 这是实现平衡和基本故障转移的非常简单且经济实惠的方式.

代理.简单而流行的负载均衡.要消除单点故障,您需要将其与其他方法结合使用.

IP故障转移.作为2.的补充,为了应对代理本身的故障,在“IP故障转移”设置中使用的两个代理 – 基本思想是有一个IP地址通常出现在host1上,但一旦失败,host2检测到它并且IP到来在host2上.寻找linux“heartbeat”项目. (您也可以在没有代理的情况下自行故障转移服务器,但您不会进行平衡).通常,两台PC必须位于同一子网(同一数据中心).

选播.想法是将路由通告到几个物理位置的单个IP地址(实际上是单个子网).您需要自己的/ 24子网,以及配置BGP的能力.任播通常用于DNS服务器.持久性TCP连接存在困难,因此更容易适应UDP和DNS,但有时仍然用于Web.

这是基本的想法.如您所见,每种方法都有局限性和复杂性.如果它不够复杂,你可以建立任何可以想象的上述方法的组合:)

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...