标签: failover

主从设置中的Apache Solr故障转移支持

我们的开发团队目前正在考虑将我们的搜索系统迁移到Apache Solr,我们非常感谢有关设置的一些建议.我们正在索引大约两亿个数据库行.我们全天增加了大约十万个新行.这些新数据库行必须在收到后的两分钟内进行搜索.

我们不希望索引使搜索者陷入困境,因此我们的想法是在复制设置中让不同的计算机上运行两个Solr服务器.第一个Solr实例将是索引器.它将使用DataImportHandler索引增量并启用自动提交以防止过热的提交率.索引优化将在预定期间进行.第二个Solr实例(从属)将成为主要搜索器,并将其索引存储在RAIDed固态驱动器上.

我们关注的是故障转移.我们的搜索是关键任务.如果主要搜索者因任何原因而失败,我们的搜索服务将自动将查询分流到索引器节点.但索引同样重要.如果索引器死了,我们需要热备故障转移.是否有推荐的方法在Solr复制中自动执行主节点故障转移?我已经开始研究ZooKeeper,但我不确定这是否是最好的方法.

apache backup replication failover solr

13
推荐指数
1
解决办法
6704
查看次数

如何使RabbitMQ队列进行故障转移?

RabbitMQ默认支持群集,但队列不会被复制并绑定到创建它们的节点.我现在正在寻找使RabbitMQ高度可用的方法,而不是他们记录的DRBD解决方案,因为保留整个服务器似乎浪费资源,除了等待活动服务器停机之外什么都不做.

我正在考虑一个有两个队列的设置.发布消息时,我希望RabbitMQ集群将消息发送到两个队列中的任何一个队列,无论哪个队列正在运行.我知道,如果发布者尝试发布到已关闭的队列并且发布者可以再次尝试使用其他队列,那么发布者将会收到错误,但我想知道这是否可以在群集级别自动完成,这样我就不会不必编写客户端代码来处理它.可以这样做吗?

failover amqp rabbitmq

12
推荐指数
3
解决办法
1万
查看次数

使用C#中的StackExchange/Sentinel进行Redis故障转移

我们目前正在使用Redis 2.8.4和StackExchange.Redis(并且喜欢它),但目前还没有针对硬件故障等的任何形式的保护.我正在尝试使解决方案正常工作,我们有主/从和监控但不能完全到达那里,我在搜索后找不到任何真正的指针.

所以目前我们已经做到了这一点:

我们在每个节点上有3个redis服务器和sentinel(由Linux人员设置):devredis01:6383(master)devredis02:6383(slave)devredis03:6383(slave)devredis01:26379(sentinel)devredis02:26379(sentinel)devredis03: 26379(哨兵)

我能够将StackExchange客户端连接到redis服务器并进行写入/读取,并使用Redis Desktop Manager验证是否正在跨所有redis实例复制数据.

我也可以使用不同的ConnectionMultiplexer连接到sentinel服务,查询配置,请求主redis节点,请求奴隶等.

我们还可以终止主redis节点并验证其中一个从服务器是否已升级为主服务器,并且复制到另一个从服务器继续工作.我们可以观察redis连接尝试重新连接到主设备,如果我重新创建ConnectionMultiplexer,我可以再次写入/读取新升级的主设备并从从设备读取.

到现在为止还挺好!

我缺少的是你如何在生产系统中将它们整合在一起?

我应该从sentinel获取redis端点并使用2个ConnectionMultiplexers吗?我究竟需要做些什么来检测节点是否已经关闭?StackExchange可以自动为我执行此操作还是通过事件,以便重新连接我的redis ConnectionMultiplexer?我应该处理ConnectionFailed事件然后重新连接,以便ConnectionMuliplexer找出新主设备是什么?据推测,当我重新连接任何写入的尝试都会丢失?

我希望我不会错过一些非常明显的东西,我只是在努力将它们放在一起.

提前致谢!

c# failover redis sentinel stackexchange.redis

12
推荐指数
2
解决办法
7220
查看次数

使用PGPool-ii在Amazon EC2上部署高可用性Postresql 9.0

我们有一个使用Postgresql 9.0和PGPool-ii的现有Web应用程序.我正在考虑将我们的基础设施迁移到Amazon EC2,并受到以下链接的启发:http://aws.typepad.com/aws/2008/12/running-everything-on-aws-soocialcom.html使用类似的架构.

由于Amazon RDS不支持PGSQL,因此我们将坚持使用PGPool-ii对不同数据库服务器上的查询进行负载均衡,并使它们在彼此之间保持同步.

因此,我们计划部署3个前端Web服务器,其中包含以下内容: - Web服务器+ PHP代码 - PGPool-ii

然后,我们将在仅具有PGSQL的单独Amazon实例上拥有2个数据库服务器.这两个PG服务器将由位于3个前端服务器上的PGPools使用.

我的问题是我不知道这个解决方案是否足够可靠,因为多个PGPool将访问多个PGSQL服务器.大多数PGPool示例演示了一个使用N个底层PGSQL服务器的PGPool.在每个Web服务器上部署PGPool实例是一个很好的实践吗?

如果没有,是否有其他/更好的架构,以避免使用亚马逊SPOF?

非常感谢您的回复.

postgresql failover amazon-ec2 pgpool

11
推荐指数
2
解决办法
7786
查看次数

如果Zookeeper完全失败会怎么样?

我们设置了一个由3个经纪人组成的Kafka/Zookeeper群集.我们有一个生产者,向一个特定的Kafka主题发送消息,以及从该主题中读取的一些消费者群体.这些消费者通过Zookeeper为自己进行领导选举(独立于Kafka).

使用的版本是:

  • 卡夫卡:0.9.0.1
  • Zookeeper:3.4.6(包含在Kafka-Package中)

所有流程均由主管管理.到目前为止,一切正常.我们现在尝试的(出于测试目的)是简单地杀死所有Zookeeper进程并查看会发生什么.

正如我们所料,我们的消费者流程无法再连接到Zookeeper.但出乎意料的是,Kafka Brokers仍然有效.我们的制作人根本没有抱怨,仍然可以写入主题.虽然我不能用卡夫卡/斌/ kafka-topics.sh或类似,因为它们都需要饲养员参数,我仍然可以看到的话题-LOG增长的实际大小.重新启动zookeeper进程后,所有内容再次像以前一样工作.

我们现在想不出来的是......那里到底发生了什么?我们认为,Kafka需要一个有效的Zookeeper-Connection,我们无法在线找到任何有关此行为的解释.

failover apache-kafka apache-zookeeper

11
推荐指数
1
解决办法
3475
查看次数

跨结构故障转移设计,DNS级故障转移?

我对Web应用程序的跨colo故障转移策略很感兴趣,这样如果主站点失败,用户将无缝地降落到另一个colo的故障转移站点.

事物的应用程序方面看起来主要是通过colos和服务之间的主从数据库设置来设计,以便恢复并能够在中流中获取.我正在试图找出将流量从主站点转移到故障转移站点的策略.即使TTL较低,DNS故障转移似乎也会带来相当大的延迟.

假设主colo上的服务器无法访问,您会建议在colos之间快速移动流量的策略是什么?

如果你有其他有趣的经验/关于跨colo故障转移的智慧的话,我也很乐意听到这些.

dns redundancy failover distributed

10
推荐指数
1
解决办法
2772
查看次数

当辅助站点无法访问时,与PHP的MongoDB副本集的连接需要一分钟+

我有一个由5个成员组成的副本集:服务器1上的主服务器+仲裁服务器,服务器2上的辅助服务器+仲裁服务器,服务器3上的隐藏辅助服务器(备份节点).我希望如果一台服务器出现故障或暂时失去连接,此配置将起作用.

但是,当服务器2关闭时(具有辅助+仲裁节点的服务器),我遇到了一个奇怪的问题.与PHP副本集的任何连接都需要一分多钟.我尝试修改连接字符串以从中排除已关闭的服务器(辅助节点),但它没有帮助.

同时通过mongo控制台连接工作得很好.主节点仍然是主节点.PHP错误日志不包含任何错误.

唯一有帮助的是删除服务器上从副本集中删除的节点.

但是,我现在担心配置的故障转移.正如我现在所知,如果具有辅助+仲裁节点的服务器将关闭,整个配置将停止正常工作.有什么办法可以避免吗?无论辅助+仲裁服务器是否可用,我都需要PHP客户端能够连接到主服务器.怎么实现呢?

mongo PHP客户端库的版本是1.6.x,服务器的版本是3.0.

php failover mongodb replicaset

10
推荐指数
1
解决办法
1038
查看次数

兵马俑是如何在这种情况下工作的?

所以假设我有一个N大小的服务器阵列设置如下:

alt text http://www.terracotta.org/web/download/attachments/43909161/ServerArrayMirrorGroup.png

我有一个简单的JavaBean/POJO:

package example;

public class Person {
  private OtherObject obj;

  public void setObj(OtherObject theObj) {
    synchronized (this) {
      obj = theObj;
    }
  }

  public OtherObject getObj() {
    synchronized (this) {
      return obj;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果其中一个客户端在TC根(数据结构)中的Person对象上调用Person.setObj(OtherObject),则该客户端上的synchronized块(在Person.setObj(OtherObject)中)是否保持:

1)在使用该Person.obj属性同步/更新N大小的服务器阵列中的所有N个服务器之前?

要么

2)直到"活动"服务器与更新的Person.obj属性同步?那么阵列中的其他(N-1)服务器是否尽可能同步?

要么

3)我在看的其他一些方法?

java failover terracotta high-availability

9
推荐指数
1
解决办法
1315
查看次数

Postgres 9.0和pgpool复制:单点故障?

我的应用程序使用Postgresql 9.0,由一个或多个与全局数据库交互的站组成:它就像一个普通的客户端服务器应用程序,但为了避免任何额外的硬件,所有站都包括客户端和服务器:主站被提升为行动也作为服务器,以及任何其他作为客户端的行为.这个解决方案允许我进行扩展:用户最初可能需要一个站点,但它可以决定在未来没有无用的独立服务器的情况下扩展到更多.

我试图避免,如果主站倒塌所有其他人停止工作; 要做到这一点,最好的解决方案可能是将主数据库连续复制到一个或多个工作站上未使用的数据库.

搜索我发现pgpool可以用于我的需求,但是从所有示例和教程看,似乎故障点从主数据库移动到运行pgpool的服务器.

我读了一些关于多个pgpool和heartbeat工具的内容,但目前尚不清楚如何做到这一点.

考虑到我的架构,哪里不存在分离和专用服务器,有人可以给我一些提示吗?在故障转移的情况下,似乎pgpool自动执行所有操作,我是否可以认为故障转移情况可以由标准用户处理而无需管理员的干预?

postgresql failover pgpool

9
推荐指数
1
解决办法
5242
查看次数

我如何集群ServiceMix?

我正在寻找一些关于如何集群ServiceMix解决方案的初始指针.基本上我需要的是:

  • 有2个(或更多)ServiceMix实例满足我的路由需求并共享负载
  • 如果一个实例失败,其他实例继续服务
  • 如果失败者恢复生机,它就加入了党

从那以后,搜索信息让我很困惑

我的解决方案可能会有一些使用JMS队列相互通信的bundle.在这种情况下,我应该只有2个独立的ServiceMix实例(彼此不了解).这不是最简单的选择吗?我看到了对故障转移配置的一些支持(http://servicemix.apache.org/docs/4.5.x/users-guide/failover.html),但真正给予的好处是什么(我错过了什么)?此故障转移配置也无助于负载平衡,因为只有一个实例正在为请求提供服务.

failover load-balancing high-availability apache-camel apache-servicemix

9
推荐指数
1
解决办法
4077
查看次数