首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel中配置高可用Redis集群

在Laravel中配置高可用Redis集群
EN

Stack Overflow用户
提问于 2015-02-04 06:06:26
回答 3查看 10.2K关注 0票数 4

我正在尝试更新我的Laravel应用程序,以便Queue::push()将作业推送到redis队列集群。设置的人告诉我,我们的应用程序需要配置主要主服务器和几个从服务器的连接细节。如果这是设置它的正确方法,我正在努力弄清楚如何配置它。

开箱即用的redis配置看起来像...

代码语言:javascript
复制
'redis' => array(
    'cluster' => true,
    'default' => array(
            'host' => '127.0.0.1',
            'port' => 6379,
            'database' => 0,
        ),
    ),
);

我一直在深入研究Laravel驱动程序,试图弄清楚如何在Laravel中配置主机和从机,但一直没有弄清楚。如何在这里添加slaves?

或者这是错误的方向?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-17 06:30:09

nrk/predis v1.1.0开始,内置了对Redis Sentinel应用编程接口的支持。

为了利用此功能,您需要对Laravel应用一些轻微的配置更改。最简单的方法是使用Laravel的redis前哨程序包之一。这些只是Laravel驱动程序的包装器,并负责配置。我个人在一个大型项目中使用的一个:

cooperaj/laravel-redis-sentinel

什么是哨兵?

Redis Sentinel是一个独立的服务,它与Redis Cluster一起工作,通过自动故障转移来监控其高可用性集群的运行状况。

如何使用它?

我们在Kubernetes中运行整个应用程序,包括Laravel 5.2API和从该API运行的React/Node网站。我们有一个配置类似于this的Redis Sentinel集群。我们还运行了一个类似于this的Elasticsearch集群。

你们的硬件是什么?

我们的整个操作/系统层都构建在一个Google Container Engine集群上。

为什么这很重要?

如果您的Laravel缓存或队列依赖于Redis,那么如果Redis由于任何原因而失败,那么您的应用程序将会失败。

票数 7
EN

Stack Overflow用户

发布于 2015-03-13 03:46:51

Laravel的Redis驱动只支持分片的Redis Cluster。如果你需要一个HA Redis系统,你需要使用Sentinels,这意味着你可以使用https://github.com/Indatus/laravel-PSRedis

票数 5
EN

Stack Overflow用户

发布于 2018-11-27 18:57:46

使用Predis,您可以像这样尝试:

代码语言:javascript
复制
<?php
# file: config/database.php

return [

    // (...)

    'redis' => [
        'client' => 'predis',
        'cluster' => true,
        'options' => [
            'replication' => true,
        ],
        'default' => [
            'scheme' => 'tcp',
            'host' => 'localhost',
            'password' => null,
            'port' => 6379,
            'alias' => 'master',
            'database' => 0,
        ],
        'slave-001' => [
            'scheme' => 'tcp',
            'host' => 'slave1host',
            'port' => 6379,
            'alias' => 'slave-001',
            'database' => 0,
        ],
        'slave-002' => [
            'scheme' => 'tcp',
            'host' => 'slave2host',
            'port' => 6379,
            'alias' => 'slave-002',
            'database' => 0,
        ],
        // add more slaves if needed
    ],
]
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28309671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档