我已经做了一个instagram竞争者,需要能够处理视频转换(FFMPEG)在不同的服务器上,因为CPU的原因。
我的两个服务器都由同一个数据库连接。
目前,我有一个本地redis服务器在工作,这样我就可以使用默认的redis config/queue config/database将任务推送到后台。
到目前为止,所有这些都在工作,现在我想进入下一步,建立一个桥梁,将密集的任务传递给一个专门的服务器,只为执行视频处理任务。
来总结我想要的
1.从SERVER1调度作业,并将其发送到SERVER2 REDIS QUEUE进行处理。
SERVER1(默认)用于redis的连接(配置/队列)
'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',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
],服务器2队列
'videoRedisQueue' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', 'https://website.ca/'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
],Jobs/ConvertVideoForHLS
public function __construct(video $video)
{
$this->onConnection('videoProcessingRedis');
$this->onQueue('videoRedisQueue');
$this->video = $video;
}使用上面的尝试设置,我不会得到任何错误,但是我无法查看作业,甚至看不到它已经创建。即使使用php构件队列:侦听和php构件队列:听videoProcessingRedis,我看不到任何东西,在failed_jobs表中看不到任何东西,在我的中也看不到任何东西,所以我假设它与主机有什么关系?
构想1
将SERVER2 redis服务器设置为面向公共的
1.在/etc/redis/redis.conf文件上设置绑定选项
在此之前
bind 127.0.0.1之后
bind 0.0.0.0设置绑定后的
G 244

发布于 2021-01-20 17:49:24
在一个Redis队列上使用多个服务器时,需要确保这两个环境的APP_NAME变量具有相同的值。如果这些是不同的,那么工人将看不到工作。
要检查连接是否正常,可以从服务器1运行redis-cli -h {ip-of-server-2}。
https://stackoverflow.com/questions/65502076
复制相似问题