在 Laravel 中配置高可用的 Redis 集群
Configuring highly available Redis cluster in Laravel
我正在尝试更新我的 Laravel 应用程序,以便 Queue::push()
将作业推送到 redis 队列集群。设置它的人告诉我,我们的应用程序需要配置主要主机和多个从机的连接详细信息。如果这是设置它的正确方法,我正在努力弄清楚如何配置它。
现成的 redis 配置看起来像...
'redis' => array(
'cluster' => true,
'default' => array(
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
),
),
);
我一直在研究 Laravel 驱动程序,试图弄清楚如何在 Laravel 中配置主设备和从设备,但一直没弄明白。我怎样才能在这里添加奴隶?
还是方向不对?
Laravel的Redis驱动只支持分片的Redis Cluster。如果您需要 HA Redis 系统,则需要使用 Sentinels which means you can use https://github.com/Indatus/laravel-PSRedis
截至 nrk/predis v1.1.0
there is built in support for the Redis Sentinel API。
为了使用此功能,您需要对 Laravel 应用一些细微的配置更改。最简单的方法是使用 Laravel 的 redis 哨兵包之一。这些只是 Laravel 驱动程序的包装器并负责配置。我个人在大型项目中使用的一个:
cooperaj/laravel-redis-sentinel
什么是 Redis Sentinel?
Redis Sentinel 是一项单独的服务,可与 Redis Cluster 一起使用,通过自动故障转移监控高可用性集群的健康状况。
如何使用?
我们 运行 我们在 Kubernetes, that includes a Laravel 5.2 API and React/Node websites running from that API. We have a Redis Sentinel cluster configured similar to this. We also run an Elasticsearch cluster similar to this 中的整个应用程序。
你的硬件是什么?
我们的整个运营/系统层都建立在 Google Container Engine 集群上。
为什么这很重要?
如果您依赖 Redis 进行 Laravel 缓存或队列,则如果 Redis 因任何原因失败,您的应用程序将失败。
使用 Predis 你可以这样尝试:
<?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
],
]
我正在尝试更新我的 Laravel 应用程序,以便 Queue::push()
将作业推送到 redis 队列集群。设置它的人告诉我,我们的应用程序需要配置主要主机和多个从机的连接详细信息。如果这是设置它的正确方法,我正在努力弄清楚如何配置它。
现成的 redis 配置看起来像...
'redis' => array(
'cluster' => true,
'default' => array(
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
),
),
);
我一直在研究 Laravel 驱动程序,试图弄清楚如何在 Laravel 中配置主设备和从设备,但一直没弄明白。我怎样才能在这里添加奴隶?
还是方向不对?
Laravel的Redis驱动只支持分片的Redis Cluster。如果您需要 HA Redis 系统,则需要使用 Sentinels which means you can use https://github.com/Indatus/laravel-PSRedis
截至 nrk/predis v1.1.0
there is built in support for the Redis Sentinel API。
为了使用此功能,您需要对 Laravel 应用一些细微的配置更改。最简单的方法是使用 Laravel 的 redis 哨兵包之一。这些只是 Laravel 驱动程序的包装器并负责配置。我个人在大型项目中使用的一个:
cooperaj/laravel-redis-sentinel
什么是 Redis Sentinel?
Redis Sentinel 是一项单独的服务,可与 Redis Cluster 一起使用,通过自动故障转移监控高可用性集群的健康状况。
如何使用?
我们 运行 我们在 Kubernetes, that includes a Laravel 5.2 API and React/Node websites running from that API. We have a Redis Sentinel cluster configured similar to this. We also run an Elasticsearch cluster similar to this 中的整个应用程序。
你的硬件是什么?
我们的整个运营/系统层都建立在 Google Container Engine 集群上。
为什么这很重要?
如果您依赖 Redis 进行 Laravel 缓存或队列,则如果 Redis 因任何原因失败,您的应用程序将失败。
使用 Predis 你可以这样尝试:
<?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
],
]