标签: high-availability

协调集群中服务器之间的单个定期任务的执行

(在清楚描述情况时,我将尽量使这个问题简短。如果缺少任何内容,请发表评论。)

情况

  • 我正在同一数据中心中运行具有三台服务器的集群
  • 为了简化部署,每个服务器运行完全相同的应用程序代码

目标

  • 要由一台服务器每分钟运行一个任务(称为任务X)。

在这些条件下

  • 群集保持分布式并且高度可用
  • 每个服务器保持运行相同的应用程序代码。换句话说,没有诸如“将代码A部署到主服务器并将代码B部署到所有辅助服务器之类的事情。

我不希望区分服务器类型的原因是为了保持高可用性(避免所谓的主服务器宕机),冗余(分布式负载),并避免在需要部署其他服务器的地方创建复杂的部署过程应用程序到不同类型的服务器。

为什么这么难?如果我要添加每5分钟执行一次此任务的代码,则每个服务器都将执行该代码,因为每个服务器都运行相同的应用程序代码。因此,他们需要能够协调每个滴答期间哪个服务器将运行相同的服务器。

我可以使用诸如Apache Kafka或的分布式消息传递机制Redis。如果使用这种机制来协调任务,那么这种“算法”将如何工作?

我向其他人提出了这个问题,他的回答是使用任务队列。但是,这似乎并不能解决问题,因为问题仍然存在:哪个服务器要将任务添加到任务队列中?如果所有服务器都将任务添加到队列中,则将导致重复条目。此外,哪个服务器将执行队列中的下一个任务?所有这些都需要通过集群内的协调来确定,而不必区分不同类型的服务器。

high-availability distribution cluster-computing task-queue

5
推荐指数
1
解决办法
503
查看次数

确保Windows Azure网站的高可用性

即使在数据中心问题的情况下,部署Windows Azure网站以确保最大可用性的正确方法是什么?

由于在过去6小时内影响西欧网站的持续"部分服务中断",我在写作时面临服务中断.

如果我的Web端点可能会死在我的客户身上,那么设置冗余数据库实例(以及真正的冗余)是没有意义的.我已经证实,在这种情况下,增加实例数并不能真正提高Azure网站的健壮性.

有什么建议?

high-availability azure azure-web-sites

5
推荐指数
2
解决办法
1082
查看次数

运行具有高可用性的 Hadoop 集群的最低系统要求

根据我对 hadoop 中高可用性的理解,我们需要一个名称节点和一个备用节点、网络共享存储空间(在两个名称节点之间共享)、至少 2 个数据节点来运行 hadoop 集群。

  1. 我们可以在运行名称节点的同一台机器上运行 dataNode 服务器吗?

  2. Yarn 可以在运行 NameNode 或 dataNode 服务器的机器上运行吗?

请建议我是否缺少生产 hadoop 环境所需的任何其他服务。

名称节点的系统要求应该是什么,因为它只处理元数据(CPU 密集型的 I/O 密集型)。我们正在处理的数据主要是 I/O 密集型的。

hadoop high-availability hdfs hadoop2

5
推荐指数
1
解决办法
8782
查看次数

AWS 替代 DNS 故障转移?

我最近开始阅读和使用 AWS。我对可以使用该平台实现的不同高可用性架构特别感兴趣。具体来说,我正在寻找一个可靠的穷人解决方案,可以使用最少的服务器来实现。

到目前为止,我对主要 HA 问题的解决方案感到满意:负载平衡、冗余、自动恢复、可扩展性......

我唯一的症结是故障转移解决方案。

使用 ELB 可能看起来很棒,但 ELB 实际上在幕后使用 DNS 平衡。请参阅AWS 的弹性负载均衡器是否存在单点故障?. 同样来自 Netflix 博客文章:Netflix 从 AWS 中断中学到的教训

这是因为 ELB 是一个两层负载均衡方案。第一层包括基本的基于 DNS 的循环负载平衡。这将客户端带到云中的 ELB 端点,该端点位于您的 ELB 配置为使用的区域之一中。

现在,我了解到 DNS 故障转移并不是一个理想的解决方案,正如其他人指出的那样,主要是因为不可预测的 DNS 缓存。参见示例:为什么不推荐 DNS 故障转移?.

除了 ELB,在我看来,大多数 AWS HA 架构都依赖于使用路由 53 的 DNS 故障转移。

最后,浮动 IP/弹性 IP (EIP) 策略出现在极少数文章中,例如利用多个 IP 地址进行虚拟 IP 地址故障转移,我很难弄清楚这是否是一个生产系统的可行解决方案。此外,我遇到的所有示例都使用一组主动-被动实例实现了这一点。为每个主动者都拥有一个被动者来实现这一目标似乎是一种浪费。

有鉴于此,我想问您什么是执行故障转移的更快更可靠的方法?

更具体地说,请讨论如何在不使用 DNS的情况下对以下 2 个设置执行故障转移:

  1. 2 个双活 EC2 实例位于单独的 AZ 中。主动-主动,因为这是一个预算设置,如果我们负担不起一个实例闲置。

  2. 1 个 …

failover high-availability amazon-web-services amazon-elb amazon-route53

5
推荐指数
1
解决办法
2477
查看次数

单一,应用程序范围和集群环境中的计时器

我使用带有infinispan s3ping的Wildfly 10在Amazon Web Service上设置了一个集群环境.一切正常.但是单例,应用程序范围对象和计时器分别在每个节点上工作.

我必须在整个集群而不是单个节点上进行这些工作.

实现这一目标的最佳方法是什么?如果可能的话,你能给我一个起点或一个好的教程吗?

singleton high-availability timer wildfly wildfly-10

5
推荐指数
0
解决办法
202
查看次数

服务器发送事件(SSE)群集连接处理

在工作中,我们目前正在构建一个支持的网络应用SSE
我们都是相对较新的人SSE,因此我们要处理很多(新手)问题:

断开连接

当客户端关闭浏览器时,我们最终会断开连接。我认为有些人称其为鬼连接。 我们如何在服务器端检测到此类连接?我们要从通知列表中删除这些客户端。

限制连接数

我知道每个' SSE-connection'都活着application server。当我关闭开发服务器时,我直接在浏览器调试器上注意到连接消失了。 我们不应该设置一些连接上限吗? The application server连接将耗尽一些时间...
此外,某些服务器为每个请求专用一个线程。这样可能导致线程耗尽的问题...

应用程序或Web服务器

应该SSE-broadcasting由一个application server(大多数请求与业务相关)来管理整个事务,还是应该由一个web server专门用于处理事务的事务来管理整个事务SSE-event?目前,所有业务请求和SSE事件均由处理Jboss application server

集群环境

如何在主动/主动模式(= master-master)中在实例之间随机路由请求的群集环境中管理SSE?

如果您有更多有用的信息(以及需要注意的注意事项),请随时分享!

java jboss high-availability server-sent-events

5
推荐指数
1
解决办法
1244
查看次数

Spring Batch 在集群环境中正确重启未完成的作业

我使用以下逻辑在单节点 Spring Batch 应用程序上重新启动未完成的作业:

public void restartUncompletedJobs() {

    try {
        jobRegistry.register(new ReferenceJobFactory(documetPipelineJob));

        List<String> jobs = jobExplorer.getJobNames();
        for (String job : jobs) {
            Set<JobExecution> runningJobs = jobExplorer.findRunningJobExecutions(job);

            for (JobExecution runningJob : runningJobs) {
                runningJob.setStatus(BatchStatus.FAILED);
                runningJob.setEndTime(new Date());
                jobRepository.update(runningJob);
                jobOperator.restart(runningJob.getId());
            }
        }
    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我正试图让它在双节点集群上工作。每个节点上的两个应用程序都将指向共享的 PostgreSQL 数据库。

让我们考虑以下示例:我有 2 个作业实例 -jobInstance1正在运行node1jobInstance2正在运行node2Node1jobInstance1执行过程中由于某种原因重新启动。后node1重新启动春季批处理应用程序尝试重新启动与上面给出逻辑未完成任务-它看到有2个未完成的作业实例-jobInstance1jobInstance2(这是正常运行的node2),并尝试重新启动它们。这种方式改为重新启动 only jobInstance1- 它将重新启动jobInstance1 …

high-availability spring-batch spring-boot

5
推荐指数
0
解决办法
1319
查看次数

Kubernetes上的Apache Flink-如果Jobmanager崩溃则恢复工作

我想在kubernetes上运行一个flink作业,使用(持久)状态后端,看来崩溃的任务管理器似乎没有问题,因为如果我理解正确的话,他们可以询问作业管理器他们需要从哪个检查点恢复。

崩溃的工作经理似乎更加困难。在这个翻转的6页上,我阅读了Zookeeper,以便能够知道工作经理需要使用哪些检查点进行恢复和领导选举。

看到kubernetes会在崩溃时重新启动jobmanager,是否有办法让新的jobmanager恢复作业而不需要设置Zookeeper集群?

我们正在查看的当前解决方案是:当kubernetes想杀死jobmanager时(例如,因为它想将其移动到另一个vm),然后创建一个保存点,但这仅适用于正常关机。

编辑:http : //apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Flink-HA-with-Kubernetes-without-Zookeeper-td15033.html似乎很有趣,但没有关注-上

high-availability kubernetes apache-flink flink-streaming

5
推荐指数
1
解决办法
1064
查看次数

领导人选举:Etcd vs Zookeeper vs Hazelcast

我们正在选择最佳选项,以实现由多个(例如3个)实例组成的服务(用Java编写)的领导者选举,以实现高可用性。我们的目标是在任何给定时间仅激活一个实例。

非常高兴听到您对以下选项的意见:

1)Hazelcast。使用“法定人数”和一把锁,我们可以实施领导者选举。但是,我们可能会遇到裂脑问题,一段时间内可能会出现两名领导人。另外,似乎Hazelcast不支持SSL。

2)Zookeeper。我们可以在Zookeeper集成(在我们的每个服务实例上运行ZK节点)的顶部实现领导者选举。Zookeeper是否比Hazelcast提供更好的一致性保证?它也遭受脑​​裂问题困扰吗?

3)等 我们可以使用Jetcd库,它似乎是最现代,最强大的技术。在一致性方面真的比Zookeeper好吗?

谢谢。

high-availability consistency hazelcast etcd apache-zookeeper

5
推荐指数
1
解决办法
1270
查看次数

Kubernetes 中的主动-被动 Jenkins 设置

我们计划使用 kubernetes 在容器平台中设置高可用 Jenkins 设置。我们正在考虑在待机模式下设置一个活动主站和另一个主站。Jenkins 数据量将存储在两个主容器之间共享的全局存储中。

如果活动主站不可用,则请求应故障转移到其他主站。从站应该只与活动的主站通信。

我们如何在 kubernetes 中以主动/被动模式完成 Jenkins HA 设置。请提供您的建议。

我们希望实现如下图所示的链接

https://endocode.com/img/blog/jenkins-ha-setup_concept.png

high-availability jenkins kubernetes active-passive

5
推荐指数
1
解决办法
1526
查看次数