gpt4 book ai didi

PHP AWS ElastiCache 连接失败

转载 作者:可可西里 更新时间:2023-10-31 22:52:09 25 4
gpt4 key购买 nike

最近我刚开始将 AWS ElastiCache 用于 Laravel 应用程序。该应用程序在 ELB 后面的 2 个实例上运行,每秒处理大约 6-10 个请求。当我启动该应用程序时一切正常,但随后我开始收到具有高延迟和超时的应用程序连接错误。错误信息如下:

[2016-05-17 07:28:25] production.ERROR: exception 'RuntimeException' with message 'Could not establish Memcached connection.' in /srv/ensemble/laravel/vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php:38 Stack trace: 
#0/srv/ensemble/laravel/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php(164): Illuminate\Cache\MemcachedConnector->connect(Array)
#1 /srv/ensemble/laravel/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php(102): Illuminate\Cache\CacheManager->createMemcachedDriver(Array) #2 /srv/ensemble/laravel/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php(77): Illuminate\Cache\CacheManager->resolve('memcached')...

对于我正在使用的设置:

  • Laravel 5.2
  • AWS ElastiCache t2.small
  • php5-memcached 模块 libmemcached 1.0.18

为了暂时解决我的问题,我在一个单独的 EC2 实例上安装了 memcached,没有遇到任何问题。

我的问题是,我需要使用 AWS ElastiCache PHP Client 吗?而不是 php5-memcached 来使用 Elasticache?我的印象是 Elasticache 是 Memcached 的替代品,可以毫无问题地使用。

谢谢你的帮助!

最佳答案

在 AWS 中使用 Elasticache 等管理服务时,几乎没有什么重要的考虑因素。

  1. 默认情况下,AWS Elasticache 是 not publicly accessible .只能通过内部 IP 访问。 (但对于公共(public)访问选项,如 VPN 连接、直接连接、基础主机等,有变通办法)
  2. Elasticache 不提供安全性,例如密码(这就是为什么使用网络 Nacl 或应用程序以后的安全组来限制它很重要的原因)

关于您的问题,应用程序无法与缓存实例建立连接,此错误表明问题出现在网络中的某处。这个问题很常见。

而且很可能是由于

  1. EC2 实例没有可用于访问 elasticache 端点的路由。如果您从不同的 VPC(不同于您的应用程序 EC2 使用的 VPC)配置 Elasticache,则会出现此问题。要解决此问题,您要么将缓存移动到 EC2 所在的同一 VPC,要么您需要对等 2 个 VPC 并创建本地路由以建立连接。

  2. EC2 实例具有有效路由,或者它们位于同一 VPC 中,但被 Elasticache SecurityGroup(SG) 阻止。要解决此问题,您需要检查您的 EC2 私有(private) IP 是否列在具有内存缓存端口的 Elasticache SG 入站规则中。 允许 IP 172.0.1.1/32 到端口 11211

enter image description here

关于PHP AWS ElastiCache 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37306112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com