- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在针对 AWS 上的 Elasticache 集群运行 Predis,该集群有一个写入主机和两个读取主机副本。 Predis 主从复制配置大致如下..
self::$client = new Predis\Client(
[
'tcp://' . REDIS_MASTER . '?alias=master',
'tcp://' . REDIS_SLAVE01 . '?alias=slave-01',
'tcp://' . REDIS_SLAVE02 . '?alias=slave-02'
],
['replication' => true]
);
我正在配置自动故障转移恢复。 Elasticache 通过提升一个只读从属节点和更新主节点主机名的 dns 记录来支持主节点故障恢复。在发生故障的情况下,Predis 应该不会使用上述配置,因为 master 的主机名不会改变。
但是,使用上面的配置,我会遇到问题。我会有效地从三节点集群转变为两节点集群,直到人为干预(或编写了一些英雄代码)。
为了阐明我的观点..失败前..
REDIS_MASTER -> node1
REDIS_SLAVE01 -> node2
REDIS_SLAVE01 -> node3
失败后...(节点 1 失败,节点 2 得到提升)
REDIS_MASTER -> node2
REDIS_SLAVE01 -> node2
REDIS_SLAVE01 -> node3
这在有限的时间内没问题,但理想情况下我希望它能自行解决。
恢复完成后,elasticache 会将 node1 恢复为只读副本。我希望它一可用就开始作为只读副本工作。
我在想我可以通过像这样配置 Predis 来解决这个问题..
self::$client = new Predis\Client(
[
'tcp://' . REDIS_MASTER . '?alias=master',
'tcp://' . REDIS_SLAVE01 . '?alias=slave-01',
'tcp://' . REDIS_SLAVE02 . '?alias=slave-02',
'tcp://' . REDIS_SLAVE03 . '?alias=slave-03'
],
['replication' => true]
);
...其中 REDIS_SLAVE03 指向与 REDIS_MASTER 相同的底层实例,但主机名在故障事件中不会更改。实际上,所有节点在任何时候都充当读取从属节点,并且在 Predis 不知情的情况下转移写入主节点的“指针”。
那么几个问题...
1) 当从站变得无响应时,Predis 的行为是什么?它会忽略该配置并将读取路由到其他响应从属设备吗?
2) 主 Redis 实例是否会获得双倍的读取操作? (想必答案是肯定的)
3) 这种方法是否存在我遗漏的缺陷?
4) 更好的主意?
感谢任何和所有建议。
最佳答案
这整个想法是有缺陷的。通过读取端点引用副本可以解决问题,因为 aws 也会在恢复过程中更新这些名称的 dns。
关于php - Predis + Elasticache 自动故障转移配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31439147/
以下来自http://php.net/manual/en/memcache.ini.php#ini.memcache.hash-strategy session.save_path string De
我想根据“集群”的名称动态配置我的 API 服务器。 所以我正在使用 AmazonElastiCacheClient 来发现集群名称,并且需要提取具有特定名称的集群的端点。 问题是我可以找到它,但似乎
在 terraform/cloudformation 文档中,有两种不同的资源可用于创建 ElastiCache Redis 实例: aws_elasticache_cluster ( https:/
我正在努力解决 http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html将 Spring Cache 集成到我们的 AWS 应用程序中
我之前使用它通过 cloudformation 成功启动了一个 redis 实例: "RedisCache": { "Type": "AWS::ElastiCache:
我正在尝试从我的应用程序连接到 aws elasticache。 我知道端点和端口,但出于某种原因我无法连接到它。 我使用了这个 npm 包: https://www.npmjs.com/packag
我一直在寻找 elasticache 作为我们 EC2 redis 部署的替代品。但是我在我们的部署中有 1 个主服务器和 11 个副本的硬性要求,而 elasticache 只允许 5 个副本。有没
我们计划使用 ElastiCache (Redis) 而不是我们自己的 redis 集群。但是,“维护窗口”设置会产生一些问题, 如果我使用 multi-az 复制集群,elasticache 是否会
前言 我们平时工作中,缓存服务这个词出现频率不低,Redis、Memcached 是我们经常用到的缓存服务。 运维人员、测试人员、研发人员、实施人员,是否都有过对集群服务搭建、部署及管理的烦恼,常常捣
我想从节点端点的角度理解故障转移案例https://forums.aws.amazon.com/ , 案例的 IP 地址 主节点故障转移和副本得到提升 副本故障转移 配置为禁用集群模式:只有 1 个分
我有一个grails应用程序,该应用程序始终使用memcached存储请求结果。 在请求中,存储在缓存中的结果很小(100kb)可以很好地处理50K个请求,但是在一种情况下,如果结果大约为800kb,
我正在尝试使用 Boto3 和 Python 获取 ElastiCache 标签。在boto3中,有一个函数叫做list_tags_for_resource()。但是,我面临的问题是,如何找到资源名称
我正在针对 AWS 上的 Elasticache 集群运行 Predis,该集群有一个写入主机和两个读取主机副本。 Predis 主从复制配置大致如下.. self::$client = new Pr
我正在使用 Redis 读取一些键/值数据(数据需要持久化,虽然它几乎不会随时间变化,只会有一个初始数据上传)。目前,我只是在本地环境中安装了Redis来实现读取数据的逻辑。 但是,我还需要考虑部署应
带有 redis 的 AWS ElastiCache 服务器有从非常小到非常大的多 cpu 机器的一切。但是redis是单线程的。任何人都知道亚马逊正在做什么以使其使用所有核心?我假设他们会这样做,否
最近我刚开始将 AWS ElastiCache 用于 Laravel 应用程序。该应用程序在 ELB 后面的 2 个实例上运行,每秒处理大约 6-10 个请求。当我启动该应用程序时一切正常,但随后我开
我很困惑。 AWS 对我这样做了。大量的文档,但我找不到任何能够以简单的方式告诉我简单内容的内容。 我们正在考虑为我们的应用程序使用 Elasticcache 和 Redis。我们需要准备好大规模扩展
我正在尝试运行 describe_cache_clusters使用 boto3 在 Python 上执行命令。当我的 ElastiCache 集群只有一个节点时,此命令有效,但当有多个节点时,它不起作
我在新加坡的 2 个可用区使用 AWS 负载平衡和多个 Web 服务器。 我现在正在寻找跨两个可用区部署 elasticache 节点,并想知道是否存在由 Web 服务器访问不同可用区的 elasti
ElasticCache 为您提供了一个配置端点和一个单独的节点端点。 两者之间的真正区别是什么?以及您将使用一个与另一个的用例? 我假设配置端点可以指向一组节点端点,但我不太明白。一个用例示例真的可
我是一名优秀的程序员,十分优秀!