Я сделал претендента на Instagram, который должен иметь возможность обрабатывать видеоконверсии (FFMPEG) на другом сервере из-за проблем с процессором.
Оба моих сервера подключены к одной и той же базе данных.
В настоящее время у меня работает локальный сервер Redis, поэтому я могу переводить задачи в фоновый режим, используя конфигурацию Redis по умолчанию/конфигурацию очереди/базу данных.
Все это работает до сих пор, теперь я хочу перейти к следующему шагу и настроить мост для передачи интенсивных задач на выделенный сервер только для выполнения задач по обработке видео.
Подводя итог тому, что я хочу
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'),
],
Что я пытался
Подключение к серверу 2
'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'),
],
Вакансии/ConvertVideoForHLS
public function __construct(video $video)
{
$this->onConnection('videoProcessingRedis');
$this->onQueue('videoRedisQueue');
$this->video = $video;
}
С указанным выше набором попыток я не получаю никаких ошибок, однако я не могу просмотреть задание или даже увидеть, что оно было создано. даже используя очередь php artisan:listen и очередь php artisan:listen videoProcessingRedis, я ничего не вижу, ничего в таблице failed_jobs и ничего в мой supervisor.log, так что я предполагаю, что он как-то связан с тем, что он просто отскакивает от хоста?
Идея 1
Установите сервер Redis SERVER2 как общедоступный.
1. установите параметр привязки в файле /etc/redis/redis.conf
до
bind 127.0.0.1
после
bind 0.0.0.0
- после установки привязки (разрешение всего доступа) я бы добавил ограничение порта на 6379 только с IP-адресом SERVER1 для возможности подключения