AWS ElastiCache是用于Redis的服务

为什么?

由于在AWS Elastic Beanstalk上自动化了环境配置,因此我想在多个服务器之间共享会话。

一般情况下,在服务器上运行的Redis或Memcached,只要知道彼此的IP,就可以在服务器之间共享数据。但是,需要在自动扩展时查找新增的EC2实例的IP,然后通知每台服务器,以添加集群。

这样的动作会不会在集群连接时出问题?还有考虑这个也真麻烦。
算了,就用ElastiCache吧!

创建缓存集群

スクリーンショット 2014-04-25 12.56.13.png

立即开始吧!

スクリーンショット 2014-04-25 12.58.36.png

我们分别输入吧。
我们将使用比memcached更强大的redis。
据说由于这种强大性,即使使用相同的实例类型,redis可用的内存量仍较少。
这是我在某处看到的,但尚未经过验证。

我已将节点类型设置如下。考虑到规格,价格可能会更划算。
参考:费用清单

    ハイメモリ エクストララージ キャッシュノード(cache.m2.xlarge)

16.7GB 内存
6.5 ECU(3.25 ECU × 2 虚拟核心)
64位平台
高速 I/O 性能

因为SNS上有由EB生成的通知,所以我进行了设置。
主要是接收有关故障和维护的通知。

当看到”S3 Snapshot Location”这一项目时,
心中想着:”难道它支持将快照自动上传至S3并进行备份和永久保存!?”
结果发现原来是用于导入初始数据的用途…
不过,只要在实例端指定S3存储桶并在此处进行设置,那在扩展或维护时就可以进行暖启动嘛~
虽然我打算在启动后再进行设置,但还是轻轻地按下了”下一步”按钮。

スクリーンショット 2014-04-25 13.58.46.png

当设置了安全组谜题时,维护窗口是什么?其他文章中都轻松地选择了“无特别偏好”并直接跳过,但我会认真地进行调查。

参考:亚马逊ElastiCache常见问题

Q: 什么是维护窗口?在软件维护时能否使用缓存节点?

Amazon ElastiCache 的维护窗口是指在需要或被要求的事件中,对软件进行补丁应用时控制的机会。如果”维护”事件计划在特定的一周内进行,客户可以在他们指定的60分钟维护窗口的某个时刻内开始并完成。

如果计划进行软件补丁应用,可能会在维护窗口期间导致缓存节点有一些停机时间。请参阅”缓存引擎版本管理”以获取更多详细信息。补丁应用可以由用户请求,例如缓存软件升级或者在我们确定存在安全漏洞时根据需要进行(例如在系统或缓存软件中识别到的安全漏洞)。此类补丁应用通常不会频繁发生(通常每几个月一次)。此外,除了在客户维护窗口中使用很小的部分外,通常不需要使用其他维护窗口。如果在创建缓存集群时没有指定所需的每周维护窗口,则会分配60分钟的默认值。如果想要更改维护执行的时间,请使用AWS管理控制台更改数据库实例、或使用ModifyCacheCluster API 进行更改。可以为每个缓存集群选择单独不同的维护窗口时间。

哦,这种情况下要使用”窗口”这个词吗?可能是指服务窗口的意思吧。
如果服务有维护期限,最好事先设定好维护时间表。
我先暂时设定在星期三的00:00。

下一步!嗯?启用自动备份……这样吗?

スクリーンショット 2014-04-25 14.17.36.png

在听到备份这个词时,我抑制住了想要立即设置的冲动。

我:「但是…会很贵吧?备份占用内存之类的会消耗的吧?」

Amazon:「对于每个活动的Redis用ElastiCache集群,Amazon ElastiCache 提供一个免费的存储空间用于一个快照。额外的存储空间将根据快照使用的容量,以每月0.085美元/GB(在所有地区都是相同价格)收费。此外,使用快照进行数据传输是免费的。」

我:点击购买。

只要

制作快照会对性能有什么影响?

在创建快照期间,节点的延迟可能会增加,但只是短时间的。快照使用了Redis内置的BGSAVE,并受到其强度和限制的影响。具体而言,Redis进程会分支,父进程会继续响应请求,而子进程则保存数据到磁盘后结束。这个分支会导致在生成快照期间内存使用量增加。如果此内存使用量超过缓存节点的可用内存容量,将会触发交换,导致节点变得更慢。因此,建议在一个读取副本中生成快照,而不是在主节点上。另外,建议配置保留内存参数以尽量减少交换的使用量。有关更多详细信息,请参阅此处。

因此请小心提醒。
保留时期是

保持期間指的是自動快照的保存時間。例如,如果将保持期間设置为5,那么今天创建的快照将保留5天,直到被删除。如果选择复制并手动保存一个或多个自动快照,即使超过了保持期間,它们也不会被删除。

请就保存数据的优先级进行讨论。

以上構築完成后,购买预留实例果然更便宜呢!
缓存集群 => 节点选项卡,然后会显示已启动的集群节点,
请确认节点的终端。

试试用EC2

让我们在节点的定期安全组上打开一个洞。
默认配置是仅允许6379端口从自己的EC2上登录。

好像默认的yum存储库里没有,可能要从epel上获取


# yum install -y redis --enablerepo=epel


只需要一种选择:

因为已经安装了一个名为 redis-cli 的命令行工具,


$ redis-cli -h [ElastiCache Endpoint]
redis Endpoint:6379> _

如果能够连接成功的话就可以了。


# ステータス確認
> info
redis_version:2.8.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:37f1586c49770bbe
redis_mode:standalone
os:Amazon ElastiCache
arch_bits:64
multiplexing_api:epoll
gcc_version:0.0.0
process_id:1
run_id:8bcc1b7d554db514ebddf51fc46cdc2052ef380e
tcp_port:6379
uptime_in_seconds:7223
uptime_in_days:0
hz:10
lru_clock:1429074
config_file:/etc/redis.conf

...いろいろ出る

# 1秒毎にタイムスタンプをsetしてヘルスチェック的な動き
> monitor

# Get Set
> set hoge fuga
OK
> get hoge
"fuga"

好的。

操作指令列表

各种语言的客户端清单

Redis 客户端

用这个选项,跨语言的数据交流也变得轻松愉快。

bannerAds