微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 laravel 中连接到远程 REDIS 服务器

如何解决在 laravel 中连接到远程 REDIS 服务器

由于 cpu 原因,我制作了一个 instagram 竞争者,它需要能够在不同的服务器上处理视频转换 (FFMPEG)。

我的两台服务器都由同一个数据库连接。

目前我有一个本地 redis 服务器在工作,这样我就可以使用认的 redis 配置/队列配置/数据库将任务推送到后台

到目前为止,所有一切都在工作,现在我想进入下一步并设置一个桥接器,将密集型任务传递给专门用于执行视频处理任务的服务器。




总结我想要的

1.从SERVER1分派作业并发送到SERVER2 REdis QUEUE进行处理




用于 redis 的 SERVER1(认)连接(配置/队列)

'redis' => [
        'driver' => 'redis','connection' => 'default','queue' => env('REdis_QUEUE','default'),'retry_after' => 90,'block_for' => null,],

SERVER1(认)队列(配置/数据库

'default' => [
        'url' => env('REdis_URL'),'host' => env('REdis_HOST','127.0.0.1'),'password' => env('REdis_PASSWORD',null),'port' => env('REdis_PORT','6379'),'database' => env('REdis_DB','0'),

我的尝试

SERVER2 连接

'videoProcessingRedis' => [
        'driver' => 'redis','connection' => 'videoRedisQueue',

服务器 2 队列

'videoRedisQueue' => [
        'url' => env('REdis_URL'),'https://website.ca/'),

工作/ConvertVideoForHLS

 public function __construct(video $video)
{
    $this->onConnection('videoProcessingRedis');
    $this->onQueue('videoRedisQueue');
    $this->video = $video;
}

通过上述尝试集,我没有收到任何错误,但是我无法查看该作业,甚至无法看到它已创建。即使使用 PHP artisan queue:listenPHP artisan queue:listen videoProcessingRedis 我也看不到任何东西,Failed_jobs 表中什么也没有我的 supervisor.log 所以我假设它与它只是从主机反弹有关?

想法 1

SERVER2 Redis 服务器设置为面向公众

1.在/etc/redis/redis.conf文件中设置绑定选项

之前

bind 127.0.0.1

之后

bind 0.0.0.0
  1. 设置绑定后(允许所有访问)我将在 6379添加端口限制,只有 SERVER1 IP 才能连接

Port restrictions on 6379

解决方法

在 Redis 队列上使用多个服务器时,您需要确保两个环境的 APP_NAME 变量具有相同的值。如果这些不同,那么工作人员将看不到作业。

要检查您的连接是否正常,您可以从服务器 1 运行 redis-cli -h {ip-of-server-2}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。