Difference between revisions of "AceStream 3.0/en"

From Ace Stream Wiki
Jump to: navigation, search
(Новая страница: «You can download alpha-version here: * Ubuntu 12 amd64: http://dl.acestream.org/ubuntu/12/acestream_3.0.0-a1_ubuntu_12_amd64.tar.gz Alpha-version can be installed o…»)
 
Line 1: Line 1:
You can download alpha-version here:
+
==Where to download==
* Ubuntu 12 amd64: http://dl.acestream.org/ubuntu/12/acestream_3.0.0-a1_ubuntu_12_amd64.tar.gz
+
You can download the latest alpha-versions of the engine here:
 +
* Ubuntu 12 amd64: http://dl.acestream.org/ubuntu/12/acestream_3.0.0-a5_ubuntu_12_amd64.tar.gz
 +
* CentOS 6 amd64: http://dl.acestream.org/centos/6/acestream_3.0.0-a5_centos_6_amd64.tar.gz
  
Alpha-version can be installed on the same server where any current version is installed without removing it.
+
==Changelog==
 +
''3.0.0-a5''
 +
*start nodes are added
  
To install alpha-version you need:
+
''3.0.0-a2''
* download an archive for your OS
+
*support nodes are added
* extract archive in any folder (for example, /opt/acestream/engine_new)
+
*options for configuration of private nodes and schemes of distribution of traffic between support nodes and a source are added
* run file acestreamengine in the extracted folder with parameter --lib-path /path/to/acestream_libraries. Example:
+
 
 +
''3.0.0-a1''
 +
*the first alpha-version
 +
 
 +
==Как запустить без удаления старой версии==
 +
Альфа-версия может быть запущена на сервере одновременно с любой релизной версией.
 +
 
 +
Для запуска необходимо:
 +
* скачать архив для нужной ОС
 +
* распаковать архив в любую папку (например, в /opt/acestream/engine_new)
 +
* запустить файл acestreamengine в распакованной папке с параметром --lib-path /path/to/acestream_libraries. Пример:
 
  <tt>/opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new</tt>
 
  <tt>/opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new</tt>
  
The parameter --lib-path sets the path to Ace Stream libraries. The default path is /usr/share/acestream. If there is a current (release) version of the engine installed on the server then it will run without setting --lib-path (because libraries from the default path /usr/share/acestream will be used). To be sure which version you have run you can check version from the command line. For example, if engine 2.1.6 is installed then without setting --lib-path the result will be like this:
+
Параметр --lib-path задает путь к библиотекам Ace Stream. По умолчанию используется путь /usr/share/acestream. Если на сервере уже установлена релизная версия движка, то без указания параметра --lib-path будет запущена она. Чтобы точно знать, какая версия движка запустилась, можно проверить версию из командной строки. Например, если уже установлена версия 2.1.6, то без указания --lib-path результат будет такой:
 
  <tt># /opt/acestream/engine_new/acestreamengine --version
 
  <tt># /opt/acestream/engine_new/acestreamengine --version
 
  version: 2.1.6 revision: 293</tt>
 
  version: 2.1.6 revision: 293</tt>
  
To run alpha-version you need to set --lib-path:
+
С указанием --lib-path запустится новая версия:
 
  <tt># /opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new --version
 
  <tt># /opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new --version
 
  version: 3.0.0-a1 revision: 565</tt>
 
  version: 3.0.0-a1 revision: 565</tt>
  
There are some changes in command line parameters in the alpha-version.
+
=== Запуск на CentOS ===
 +
На CentOS есть некоторые особенности запуска движка.
 +
 
 +
Стандартная библиотека openssl на CentOS не поддерживает некоторый необходимый для движка функционал. В связи с этим в комплекте с движком для CentOS идет пересобранная библиотека openssl и модуль python-m2crypto, являющийся надстройкой над openssl. Эти библиотеки находятся в папке usr в архиве с движком. Для их использования необходимо скопировать папки lib64 и local из папки usr в соответствующие папки в /usr. Если на сервере уже установлен движок предыдущей версии, то эти библиотеки уже есть в вашей системе и их копировать не нужно.
 +
 
 +
Для запуска движка под CentOS вместо acestreamengine используется скрипт start.sh в папке с движком.
 +
 
 +
Этот скрипт устанавливает переменную среды LD_LIBRARY_PATH=/usr/local/ssl/lib перед запуском движка, чтобы использовалась пересобранная версия библиотеки openssl.
  
New parameters:
+
Также этот скрипт автоматически передает движку путь к библиотекам через параметр --lib-path, поэтому указывать его дополнительно не нужно.
*--live-cache-type - cache type: disk - save cache on the disk in the folder set by --cache-dir parameter, memory - save cache in the RAM (by default: disk)
 
*--live-cache-size - the maximum cache size in bytes (be default: 209715200 bytes (200 Mb))
 
  
These parameters are temporarely unsupported in the alpha-version:
+
==Изменения в параметрах запуска==
 +
В новой версии есть некоторые отличия по параметрам запуска.
 +
 
 +
===Новые флаги для запуска движка в разных режимах===
 +
*--stream-source-node (вместо --stream-source)
 +
*--stream-support-node (вместо --stream-node)
 +
 
 +
===Новые параметры для настройки кеша===
 +
*--live-cache-type (string) - тип кеша: disk - хранить кеш на диске в папке, указанной параметром --cache-dir, memory - хранить кеш в оперативной памяти (по умолчанию: disk)
 +
*--live-cache-size (integer) - максимальный размер кеша в байтах (по умолчанию: 209715200 байт (200 Мб))
 +
 
 +
===Новые параметры для конфигурации инфраструктуры узлов поддержки===
 +
*--private-node (0 or 1) - если указать 1, то узел будет приватным (по умолчанию 0)
 +
*--download-from (string) - добавить адрес к списку узлов, с которых данному узлу разрешено получать данные. Адрес должен задаваться в формате ipv4_address:port. Этот параметр может встречаться несколько раз.
 +
*--upload-to (string) - добавить адрес к списку узлов, которым данному узлу разрешено отдавать данные. Адрес должен задаваться в формате ipv4_address:port. Этот параметр может встречаться несколько раз.
 +
*--monitor-node-ip (string) - ipv4 адрес мониторинг-сервера
 +
 
 +
===Новые параметры для запуска источника===
 +
*--metatracker (string) - добавить адрес метатрекера в транспортный файл
 +
 
 +
===Эти параметры уже не используются===
 +
*--stream-source (изменен на --stream-source-node)
 +
*--stream-node (изменен на --stream-support-node)
 +
*--add-authorized-peers (список авторизированных пиров больше не добавляется в транспортный файл)
 +
*--private-source (заменен на --private-node)
 
*--support-node
 
*--support-node
*--add-authorized-peers
+
*--source-node
 +
*--allow-source-download
 +
*--allow-support-download
 +
*--allow-peers-download
 +
 
 +
==Новый функционал==
 +
 
 +
===Настройка узлов поддержки===
 +
В новой версии узлам поддержки необходимо явным образом указывать, с каких узлов они должны скачивать данные. Для этого используется параметр <tt>--download-from</tt>. Список узлов, с которых разрешено скачивание, может быть изменен без перезапуска узла поддержки через веб-интерфейс узла (см. ниже). Например, если по адресу 192.168.1.2:7764 запущен узел-источник и мы хотим запустить узел поддержки, который будет качать данные только с источника, то команда для запуска узла поддержки будет выглядеть так:
 +
<nowiki>acestreamengine \
 +
--stream-support-node \
 +
--url http://192.168.1.2/transport/test.acelive \
 +
--port 8631 \
 +
--download-from "192.168.1.2:7764"</nowiki>
 +
 
 +
===Приватные узлы===
 +
Приватный узел отдает данные только узлам, которые явным образом добавлены в его список разрешенных. Для того, чтобы сделать узел приватным, нужно запустить его с параметром <tt>--private-node 1</tt>. Для добавления адреса в список разрешенных на отдачу используется параметр <tt>--upload-to</tt>. Приватным может быть как узел-источник, так узел поддержки. Приватный узел отбивает входящие соединения со всех адресов, кроме указанных параметрами <tt>--download-from</tt>, <tt>--upload-to</tt> и <tt>--monitor-node-ip</tt>. Для фильтрации используется только ip-адрес (порт не используется). Параметр <tt>--monitor-node-ip</tt> задает ip-адрес сервера мониторинга и используется в том случае, если нужно обеспечить мониторинг приватного узла (без указание этого параметра приватный узел будет отбивать все запросы от сервера мониторинга).
 +
 
 +
Пример запуска приватного источника, который будет отдавать данные только узлу поддержки из предыдущего примера:
 +
<nowiki>acestreamengine \
 +
  --stream-source-node \
 +
  --port 7764 \
 +
  --source "http://brodilo.tv/channel.php" \
 +
  --name "test" \
 +
  --title "test" \
 +
  --bitrate 350000 \
 +
  --publish-dir /var/www/transport \
 +
  --cache-dir /var/cache/acestream \
 +
  --private-node 1 \
 +
  --upload-to "192.168.1.3:8631"</nowiki>
 +
 
 +
===Стартовые узлы===
 +
Стартовый узел предназначен для обеспечения максимально быстрого старта трансляции у пользователей.
 +
 
 +
Особенность работы стартового узла - постоянная ротация соединений. При получении новых входящих соединений стартовый узел разрывает соединения с узлами, которые подключились ранее и уже скачали определенный объем данных.
 +
 
 +
Для запуска движка в режиме стартового узла используется параметр <tt>--stream-startup-node</tt>.
 +
 
 +
Стартовый узел принимает такой же набор параметров, как и узел поддержки.
 +
<!--
 +
Стартовый узел принимает такой же набор параметров, как и узел поддержки, плюс некоторые дополнительные параметры:
 +
*''<tt>--startup-node-max-connections (integer)</tt>'' - максимальное количество узлов, с которым стартовый узел держит постоянные соединения (если к узлу подключится больше других узлов, чем указано в этом параметре, лишние соединения будут разорваны).
 +
*''<tt>--startup-node-cleanup-interval (integer)</tt>'' - интервал очистки лишних соединений в секундах (по умолчанию: 1).
 +
*''<tt>--startup-node-upload-buffer (integer)</tt>'' - минимальный буфер в секундах, который будет отдан каждому подсоединившемуся узлу перед тем, как его можно будет отключить
 +
*''<tt>--startup-node-time-limit (integer)</tt>'' - максимальная длительность соединения в секундах, после достижения которой соединение может быть разорвано, даже если узел еще не получил необходмый объем данных.
 +
-->
 +
 
 +
Пример запуска стартового узла:
 +
<nowiki>acestreamengine \
 +
--stream-startup-node \
 +
--url http://192.168.1.2/transport/test.acelive \
 +
--port 8632 \
 +
--download-from "192.168.1.2:7764"</nowiki>
 +
 
 +
===Метатрекеры===
 +
 
 +
Метатрекер - это сервер, который сообщает узлам о доступных трекерах и стартовых узлах.
 +
 
 +
URL метатрекера задается на источнике при создании трансляции и записывается в транспортный файл.
 +
 
 +
Метатрекеры позволяют динамически добавлять трекеры и/или стартовые узлы для трансляции без необходимости перезапуска трансляции и пересоздания транспортного файла.
 +
 
 +
Пример запуска источника с метатрекером:
 +
<nowiki>acestreamengine \
 +
  --stream-source-node \
 +
  --port 7764 \
 +
  --source "http://brodilo.tv/channel.php" \
 +
  --metatracker "http://example.org/metatracker.php"
 +
  --name "test" \
 +
  --title "test" \
 +
  --bitrate 350000 \
 +
  --publish-dir /var/www/transport \
 +
  --cache-dir /var/cache/acestream \
 +
  --private-node 1 \
 +
  --upload-to "192.168.1.3:8631"</nowiki>
 +
 
 +
Метатрекер принимает запросы по протоколу HTTP и выдает ответ в формате JSON, поэтому метатрекер может быть реализован на базе любого веб-сервера.
 +
 
 +
Каждый узел при запуске трансляции отправляет на метатрекер HTTP GET запрос с параметром <tt>infohash</tt> (хеш трансляции в виде hex-строки). Пример запроса на метатрекер:
 +
<nowiki>http://example.org/metatracker.php?infohash=a94a8fe5ccb19ba61c4c0873d391e987982fbbd3</nowiki>
 +
 
 +
Формат ответа:
 +
<nowiki>{
 +
    "trackers": ["tracker_url_1", "tracker_url_2", ...],
 +
    "startup_nodes": ["node1_address", "node2_address", ...],
 +
    "interval": UPDATE_INTERVAL_IN_SECONDS
 +
}</nowiki>
 +
 
 +
где
 +
*tracker_url_1, tracker_url_2 - URL трекеров
 +
*node1_address, node2_address - адреса стартовых узлов в виде строк в формате ip:port (например, 192.168.1.2:8632)
 +
*UPDATE_INTERVAL_IN_SECONDS - интервал обновления в секундах (как часто каждый клиент должен повторно обращаться на метатрекер)
 +
 
 +
Пример ответа:
 +
<nowiki>{
 +
    "trackers":["udp:\/\/tracker.example.org:2710\/announce"],
 +
    "startup_nodes":["192.168.1.2:8632"],
 +
    "interval":3600
 +
}</nowiki>
 +
 
 +
Пример серверного кода метатрекера на PHP:
 +
<nowiki><?php
 +
$infohash = isset($_GET['infohash']) ? $_GET['infohash'] : '';
 +
 
 +
$trackers = array(
 +
    'udp://tracker.example.org:2710/announce',
 +
);
 +
 
 +
$startup_nodes = array(
 +
    '192.168.1.2:8632',
 +
);
 +
 
 +
$data = array(
 +
    'trackers'      => $trackers,
 +
    'startup_nodes' => $startup_nodes,
 +
    'interval'      => 30,
 +
);
 +
 
 +
header('Content-Type: application/json');
 +
echo json_encode($data);</nowiki>
 +
 
 +
===Веб-интерфейс узла===
 +
 
 +
====Мониторинг====
 +
скоро будет
 +
 
 +
====Управление====
 +
скоро будет

Revision as of 11:45, 15 January 2014

Where to download

You can download the latest alpha-versions of the engine here:

Changelog

3.0.0-a5

  • start nodes are added

3.0.0-a2

  • support nodes are added
  • options for configuration of private nodes and schemes of distribution of traffic between support nodes and a source are added

3.0.0-a1

  • the first alpha-version

Как запустить без удаления старой версии

Альфа-версия может быть запущена на сервере одновременно с любой релизной версией.

Для запуска необходимо:

  • скачать архив для нужной ОС
  • распаковать архив в любую папку (например, в /opt/acestream/engine_new)
  • запустить файл acestreamengine в распакованной папке с параметром --lib-path /path/to/acestream_libraries. Пример:
/opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new

Параметр --lib-path задает путь к библиотекам Ace Stream. По умолчанию используется путь /usr/share/acestream. Если на сервере уже установлена релизная версия движка, то без указания параметра --lib-path будет запущена она. Чтобы точно знать, какая версия движка запустилась, можно проверить версию из командной строки. Например, если уже установлена версия 2.1.6, то без указания --lib-path результат будет такой:

# /opt/acestream/engine_new/acestreamengine --version
version: 2.1.6 revision: 293

С указанием --lib-path запустится новая версия:

# /opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new --version
version: 3.0.0-a1 revision: 565

Запуск на CentOS

На CentOS есть некоторые особенности запуска движка.

Стандартная библиотека openssl на CentOS не поддерживает некоторый необходимый для движка функционал. В связи с этим в комплекте с движком для CentOS идет пересобранная библиотека openssl и модуль python-m2crypto, являющийся надстройкой над openssl. Эти библиотеки находятся в папке usr в архиве с движком. Для их использования необходимо скопировать папки lib64 и local из папки usr в соответствующие папки в /usr. Если на сервере уже установлен движок предыдущей версии, то эти библиотеки уже есть в вашей системе и их копировать не нужно.

Для запуска движка под CentOS вместо acestreamengine используется скрипт start.sh в папке с движком.

Этот скрипт устанавливает переменную среды LD_LIBRARY_PATH=/usr/local/ssl/lib перед запуском движка, чтобы использовалась пересобранная версия библиотеки openssl.

Также этот скрипт автоматически передает движку путь к библиотекам через параметр --lib-path, поэтому указывать его дополнительно не нужно.

Изменения в параметрах запуска

В новой версии есть некоторые отличия по параметрам запуска.

Новые флаги для запуска движка в разных режимах

  • --stream-source-node (вместо --stream-source)
  • --stream-support-node (вместо --stream-node)

Новые параметры для настройки кеша

  • --live-cache-type (string) - тип кеша: disk - хранить кеш на диске в папке, указанной параметром --cache-dir, memory - хранить кеш в оперативной памяти (по умолчанию: disk)
  • --live-cache-size (integer) - максимальный размер кеша в байтах (по умолчанию: 209715200 байт (200 Мб))

Новые параметры для конфигурации инфраструктуры узлов поддержки

  • --private-node (0 or 1) - если указать 1, то узел будет приватным (по умолчанию 0)
  • --download-from (string) - добавить адрес к списку узлов, с которых данному узлу разрешено получать данные. Адрес должен задаваться в формате ipv4_address:port. Этот параметр может встречаться несколько раз.
  • --upload-to (string) - добавить адрес к списку узлов, которым данному узлу разрешено отдавать данные. Адрес должен задаваться в формате ipv4_address:port. Этот параметр может встречаться несколько раз.
  • --monitor-node-ip (string) - ipv4 адрес мониторинг-сервера

Новые параметры для запуска источника

  • --metatracker (string) - добавить адрес метатрекера в транспортный файл

Эти параметры уже не используются

  • --stream-source (изменен на --stream-source-node)
  • --stream-node (изменен на --stream-support-node)
  • --add-authorized-peers (список авторизированных пиров больше не добавляется в транспортный файл)
  • --private-source (заменен на --private-node)
  • --support-node
  • --source-node
  • --allow-source-download
  • --allow-support-download
  • --allow-peers-download

Новый функционал

Настройка узлов поддержки

В новой версии узлам поддержки необходимо явным образом указывать, с каких узлов они должны скачивать данные. Для этого используется параметр --download-from. Список узлов, с которых разрешено скачивание, может быть изменен без перезапуска узла поддержки через веб-интерфейс узла (см. ниже). Например, если по адресу 192.168.1.2:7764 запущен узел-источник и мы хотим запустить узел поддержки, который будет качать данные только с источника, то команда для запуска узла поддержки будет выглядеть так:

acestreamengine \
 --stream-support-node \
 --url http://192.168.1.2/transport/test.acelive \
 --port 8631 \
 --download-from "192.168.1.2:7764"

Приватные узлы

Приватный узел отдает данные только узлам, которые явным образом добавлены в его список разрешенных. Для того, чтобы сделать узел приватным, нужно запустить его с параметром --private-node 1. Для добавления адреса в список разрешенных на отдачу используется параметр --upload-to. Приватным может быть как узел-источник, так узел поддержки. Приватный узел отбивает входящие соединения со всех адресов, кроме указанных параметрами --download-from, --upload-to и --monitor-node-ip. Для фильтрации используется только ip-адрес (порт не используется). Параметр --monitor-node-ip задает ip-адрес сервера мониторинга и используется в том случае, если нужно обеспечить мониторинг приватного узла (без указание этого параметра приватный узел будет отбивать все запросы от сервера мониторинга).

Пример запуска приватного источника, который будет отдавать данные только узлу поддержки из предыдущего примера:

acestreamengine \
  --stream-source-node \
  --port 7764 \
  --source "http://brodilo.tv/channel.php" \
  --name "test" \
  --title "test" \
  --bitrate 350000 \
  --publish-dir /var/www/transport \
  --cache-dir /var/cache/acestream \
  --private-node 1 \
  --upload-to "192.168.1.3:8631"

Стартовые узлы

Стартовый узел предназначен для обеспечения максимально быстрого старта трансляции у пользователей.

Особенность работы стартового узла - постоянная ротация соединений. При получении новых входящих соединений стартовый узел разрывает соединения с узлами, которые подключились ранее и уже скачали определенный объем данных.

Для запуска движка в режиме стартового узла используется параметр --stream-startup-node.

Стартовый узел принимает такой же набор параметров, как и узел поддержки.

Пример запуска стартового узла:

acestreamengine \
 --stream-startup-node \
 --url http://192.168.1.2/transport/test.acelive \
 --port 8632 \
 --download-from "192.168.1.2:7764"

Метатрекеры

Метатрекер - это сервер, который сообщает узлам о доступных трекерах и стартовых узлах.

URL метатрекера задается на источнике при создании трансляции и записывается в транспортный файл.

Метатрекеры позволяют динамически добавлять трекеры и/или стартовые узлы для трансляции без необходимости перезапуска трансляции и пересоздания транспортного файла.

Пример запуска источника с метатрекером:

acestreamengine \
  --stream-source-node \
  --port 7764 \
  --source "http://brodilo.tv/channel.php" \
  --metatracker "http://example.org/metatracker.php"
  --name "test" \
  --title "test" \
  --bitrate 350000 \
  --publish-dir /var/www/transport \
  --cache-dir /var/cache/acestream \
  --private-node 1 \
  --upload-to "192.168.1.3:8631"

Метатрекер принимает запросы по протоколу HTTP и выдает ответ в формате JSON, поэтому метатрекер может быть реализован на базе любого веб-сервера.

Каждый узел при запуске трансляции отправляет на метатрекер HTTP GET запрос с параметром infohash (хеш трансляции в виде hex-строки). Пример запроса на метатрекер:

http://example.org/metatracker.php?infohash=a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

Формат ответа:

{
    "trackers": ["tracker_url_1", "tracker_url_2", ...],
    "startup_nodes": ["node1_address", "node2_address", ...],
    "interval": UPDATE_INTERVAL_IN_SECONDS
}

где

  • tracker_url_1, tracker_url_2 - URL трекеров
  • node1_address, node2_address - адреса стартовых узлов в виде строк в формате ip:port (например, 192.168.1.2:8632)
  • UPDATE_INTERVAL_IN_SECONDS - интервал обновления в секундах (как часто каждый клиент должен повторно обращаться на метатрекер)

Пример ответа:

{
    "trackers":["udp:\/\/tracker.example.org:2710\/announce"],
    "startup_nodes":["192.168.1.2:8632"],
    "interval":3600
}

Пример серверного кода метатрекера на PHP:

<?php
$infohash = isset($_GET['infohash']) ? $_GET['infohash'] : '';

$trackers = array(
    'udp://tracker.example.org:2710/announce',
);

$startup_nodes = array(
    '192.168.1.2:8632',
);

$data = array(
    'trackers'      => $trackers,
    'startup_nodes' => $startup_nodes,
    'interval'      => 30,
);

header('Content-Type: application/json');
echo json_encode($data);

Веб-интерфейс узла

Мониторинг

скоро будет

Управление

скоро будет