如何解决在 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,],
'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:listen 和 PHP 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
- 设置绑定后(允许所有访问)我将在 6379 上添加端口限制,只有 SERVER1 IP 才能连接
解决方法
在 Redis 队列上使用多个服务器时,您需要确保两个环境的 APP_NAME 变量具有相同的值。如果这些不同,那么工作人员将看不到作业。
要检查您的连接是否正常,您可以从服务器 1 运行 redis-cli -h {ip-of-server-2}
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。