【问题标题】:Elasticache PHP Redis AWS Moved Exception in LaravelLaravel 中的 Elasticache PHP Redis AWS 移动异常
【发布时间】:2018-03-03 14:50:32
【问题描述】:

我正在使用 laravel 5.2 并具有多服务器自动缩放的架构。我想在一个集中的位置进行会话和缓存。我想使用 AWS elasticache 来做同样的事情。

我已经设置了一个具有以下选项的 elasticache Redis 集群:

参数组:default.redis.3.2.cluster.on 碎片:3 节点总数:9

在 laravel 会话配置中,我将 redis 设置为会话驱动程序。

在设置redis配置的database.php中,我使用了以下内容:

REDIS_HOST=my_aws_elasticache_configuration_endpoint REDIS_PASSWORD=null REDIS_PORT=6379 .

当我尝试使用它时,我收到以下错误:

已移动 13841 some_ip_address_of_aws:6379

我尝试使用本地 redis 并且它工作正常,所以 predis 工作正常。我试图在线检查解决方案,但无法获得解决方案。我相信配置端点正在尝试将 redis 连接重定向到我拥有的 9 个节点中的可用节点 url。但是,我预计 AWS 应该在内部进行而不是抛出异常。谁能帮帮我?

【问题讨论】:

    标签: php amazon-web-services redis laravel-5.2 amazon-elasticache


    【解决方案1】:

    我终于得到了答案,我们需要在数据库设置中开启集群模式并将新的集群选项设置为redis。这就是 database.php 中的 redis 配置的样子:

    'redis' => [
        'client' => 'predis',
        'options' => [
            'cluster' => 'redis',
        ],
        'clusters' => [
            'default' => [
                [
                    'host' => env('REDIS_HOST', 'localhost'),
                    'password' => env('REDIS_PASSWORD', null),
                    'port' => env('REDIS_PORT', 6379),
                    'database' => 0,
                ],
            ],
        ],
    ],
    

    如果你有密码,那么你可以用这个替换选项数组:

     'options' => [
            'cluster' => 'redis',
            'parameters' => ['password' => env('REDIS_PASSWORD', null)],
        ],
    

    【讨论】:

    • 一句忠告:如果您为 Redis 启用 TLS(传输中加密),您还需要在 parameters 数组中包含 'scheme' => env('REDIS_SCHEME', 'tcp')。在您的.env 中将此设置为“tls”。如果您使用的是 AWS Elasticache,则还需要 'ssl' => ['verify_peer' => false]options 数组中。
    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 2020-11-01
    • 2018-12-04
    • 2020-11-20
    • 2018-05-21
    • 2019-09-12
    • 1970-01-01
    • 2017-09-27
    相关资源
    最近更新 更多