Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP AWS ElastiCache连接失败_Php_Laravel_Amazon Web Services_Amazon Elasticache - Fatal编程技术网

PHP AWS ElastiCache连接失败

PHP AWS ElastiCache连接失败,php,laravel,amazon-web-services,amazon-elasticache,Php,Laravel,Amazon Web Services,Amazon Elasticache,最近,我刚刚开始在Laravel应用程序中使用AWS ElastiCache。该应用程序在ELB后面的2个实例上运行,每秒处理约6-10个请求。当我启动应用程序时,一切都进行得很顺利,但随后我开始接收到与应用程序的连接错误,延迟和超时很高。错误消息如下所示: [2016-05-17 07:28:25] production.ERROR: exception 'RuntimeException' with message 'Could not establish Memcached connect

最近,我刚刚开始在Laravel应用程序中使用AWS ElastiCache。该应用程序在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')...
对于我的设置,我正在使用:

  • 拉威尔5.2
  • AWS ElastiCache t2.small
  • php5 memcached模块libmemcached 1.0.18
为了暂时解决我的问题,我在一个单独的EC2实例上安装了memcached,并且没有任何问题

我的问题是,我是否需要使用Elasticache而不是php5 memcached?我的印象是Elasticache是Memcached的替代品,可以毫无问题地使用


谢谢你的帮助

检查您的安全组设置是什么,并将其设置为0.0.0.0/32(不安全-对所有人开放,但这是一种很好的测试方法),然后如果有效,只需将其设置为您可以在此处找到的公共ip地址。

在AWS中使用诸如Elasticache之类的管理服务时,没有什么重要的考虑事项

  • 默认情况下,AWS Elasticache为。只能通过内部IP访问。(但对于公共访问选项,如VPN连接、直接连接、basion主机等,还有一些变通办法。)
  • Elasticache不提供任何安全性,例如密码(这就是为什么使用网络安全组或应用程序安全组来限制它很重要的原因)
  • 关于您的问题,应用程序无法建立到缓存实例的连接,此错误表明问题发生在网络中的某个位置。这个问题很普遍

    而且很可能是由

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

  • EC2实例具有有效路由,或者它们位于同一VPC中,但它被Elasticache SecurityGroup(SG)阻止。要解决这个问题,您需要检查您的EC2专用IP是否在memcache端口的Elasticache SG入站规则中列出<代码>允许IP 172.0.1.1/32到端口11211


  • 如果aws库有效,您是否尝试过它?您好,您找到与此问题相关的内容了吗?拥有类似的@Sauminavaratnam——不幸的是我没有。但在过去几个月里,这个问题几乎不存在。一段时间以来,我一直保持着良好的稳定性和人际关系。我建议在您的服务器上也安装AWS Elasticache PHP客户端。我认为AWS上的防火墙可能会阻止请求,首先尝试使用一个规则,允许服务器elb和memcached上的所有请求进出,如果它正常工作,然后,您可以返回并检查每个防火墙规则,以了解哪个防火墙规则导致问题检查安全组。如果有人仅为一组ip设置了对Elasticache的访问权限,并且该连接未向世界开放(0.0.0.0/32),则您无法在没有隧道的情况下访问该服务。0.0.0.0/32对于任何ip开放来说都是错误的cird。它应该是0.0.0.0/0