HelixCloud Webinar


Published on

These are the slides of our first Webinar of HelixCloud - our middleware software to enable Video Streaming Cloud Services using Helix Universal Server by RealNetworks

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

HelixCloud Webinar

  1. 1. HelixCloud Webinar December 2012
  2. 2. Who am I David Riccitelli @ziodave http://www.linkedin.com/in/riccitelli http://blog.insideout.io/Co-Founder of InsideOut10, holding ofInteract Egypt, with an active presence inthe European, North African and MiddleEast markets.Active since the 1995 in streaming mediaand Real partner. (more on LinkedIn)
  3. 3. Overview
  4. 4. Mission"To provide affordable, scalable and highly reliable streaming services to customers while minimizing impacts on the core network infrastructure and lowering operational costs"
  5. 5. Features● Account and User Management● Quota Limit● Integrated FTP Server● Slick Web UI● Multi-format Streaming URL● Multiple Roles (Administrator, User, Reporter)● URL Protection (network, geo, token)● Real-Time Reporting● APIs for 3rd Party Integration
  6. 6. Architecture Channel Channel Channel Manager SLTA SLTAWeb UI Manager SLTA Session Manager Manager Web APIs Helix FTP ServerServer Storage INGESTION MANAGEMENT DELIVERY
  7. 7. Web APIsThe Web APIs are the core of Helix CloudAuthenticationAuthorizationLogging RESTReporting APIsAccount & User ManagementFile ManagementChannel Management ...and more
  8. 8. FTP ServerThe FTP Server is tightly integrated withthe Web APIs and UI.The same username can be used for fileupload and for management via the UI.Uploads are inhibited when the storagequota is reached.
  9. 9. Web UIThe Web UI is highly responsive andcustomizable.It is built on top of the Web APIs.It provides different access levels.It features Google Visualization APIs forthe generation of graphs.
  10. 10. Channel ManagerProvides management of channels basedon on-demand contents.Supports multiple sources and servers.Is tightly integrated with Helix SLTAagent.Provides useful feedback of currentlyplaying clip via Web APIs and UI.
  11. 11. Software RequirementsRedHat, CentOS or Ubuntu linuxA database serverJava 6+Apache Tomcat Server 6+Helix Server 14.2+
  12. 12. Hardware RequirementsDepends on the planned capacity. A good start: ● 8 cores ● 16 gbytes of memory ● 200 gbytes of disk space
  13. 13. Platform
  14. 14. Folder Structure: bin + /opt/helixcloud/ + bin/ | - helixcloud-channelmgr | : .The Channel Manager package is installed in the /opt/helixcloud folder which contains differentsubfolders: bin, lib, etc, log, var.The bin subfolder contains runnable files, including start-up scripts that can be added to the /etc/init.dof your system.The Channel Manager includes the helixcloud-channelmgr which is a start-up script that can beinstalled in the /etc/init.d and allows you later to start, stop and check the status of the service byissuing the following commands: /etc/init.d/helixcloud-channelmgr {start|stop|status}
  15. 15. Folder Structure: lib + /opt/helixcloud/ : + lib/ | - helixcloud-channelmgr-1.0-SNAPSHOT.jar : .The log subfolder contains the program files, i.e. the files that contain the actual executable code forthe Channel Manager.The Channel Manager includes the helixcloud-channelmgr-1.0-SNAPSHOT.jar file which is theactually self-contained program and is launched, along with its parameters, using the helixcloud-channelmgr script described in the previous slide.
  16. 16. Folder Structure: opt + /opt/helixcloud/ : + etc/ | - chmgr.properties | - logback.xml : .The etc subfolder contains the configuration files: ● chmgr.properties holds the general configuration parameters for the Channel Manager service. ● logback.xml has the logging settings.
  17. 17. Folder Structure: log + /opt/helixcloud/ : + log/ | - helixcloud.log | - helixcloud-{timestamp}.log | + channels/ | + {account}/{user}/{channel}/ | - slta-{timestamp}.log : .The log subfolder contains the logs for the service.Application logs are written to the helixcloud.log file (and rotated daily to helixcloud-{timestamp}.log). Application logs are also stored into the database if the logging is configured so.The standard output for each SLTA instance is written to {account}/{user}/{channel}/slta-{timestamp}.log
  18. 18. Folder Structure: var + /opt/helixcloud/ : + var/ + channels/ | + {account}/{user}/ | - {channel}.mp4.json + templates/ - channels.xmlThe var subfolder contains two subfolders: ● channels with the data for all the configured channels in json format. ● templates with the configuration files for the SLTA, in our case the configuration file is called channels.xml.
  19. 19. Startup ScriptAPP_HOME=/opt/helixcloudCHMGR_LIB="$APP_HOME/lib/helixcloud-channelmgr-1.0-SNAPSHOT.jar"CHMGR_CFG="$APP_HOME/etc/chmgr.properties"LOGBACK_CFG="$APP_HOME/etc/logback.xml"CHMGR_CMD="java -DAPP_HOME=$APP_HOME -Dlogback.configurationFile=file://$LOGBACK_CFG -Dslta.configuration=file://$CHMGR_CFG -jar $CHMGR_LIB"The startup script defines important variables that point to the location of the library and configurationfiles.The variables are used to build up the Channel Manager command line:java -DAPP_HOME=/opt/helixcloud -Dlogback.configurationFile=file:///opt/helixcloud/etc/logback.xml -Dslta.configuration=file:///opt/helixcloud/etc/chmgr.properties -jar /opt/helixcloud/lib/helixcloud-channelmgr-1.0-SNAPSHOT.jar
  20. 20. Startup Script: installationOn RedHat and CentOS the startup script isinstalled as follows:cd /etc/init.dln -s /opt/helixcloud/bin/helixcloud-channelmgrchmod 755 helixcloud-channelmgrchkconfig --add helixcloud-channelmgrThe the service is started as follows:/etc/init.d/helixcloud-channelmgr start
  21. 21. Application Configurationslta.runner.commandLine=/opt/helix/_realserver- {template} {path}{suffix} {playlist} -fpslta.runner.destinationSuffix=.1slta.runner.template=/opt/helixcloud/var/templates/channel.xmlslta.runner.basePath=/opt/helixcloud/var/media/slta.storage.path=/opt/helixcloud/var/channels/slta.storage.suffix=.jsonslta.log.path=/opt/helixcloud/log/channels/ ● ...commandLine: the full command line to the slta.sh script (it must be the slta.sh script) ● ...arguments: the arguments to be appended to the command line. Arguments include placeholders for dynamic information such as the template, path, suffix and playlist parameters ● ...destinationSuffix: the destination suffix to append to the destination name (useful for redundant configurations) - will replace the {suffix} placeholder ● ...template: the SLTA configuration - will replace the {template} placeholder ● ...basePath: the path to the clips ● ...path: the path to the channels JSON data storage ● ...suffix: the suffix for the channels data file ● ...log.path: the path to the SLTA instances logs.
  22. 22. Logging Configuration<configuration> <appender name="..." class="..."> ... </appender> <logger name="..." level="..." /> <root level="..."> ... </root></configuration>The logging configuration is divided into 3 major groups: ● appender defines where to "write" the log data ● logger sets a verbosity filter according to the source of the log data ● root activates the appendersLogging is provided via the logback framework which provides an extensive documentation at thisweb address: http://logback.qos.ch/manual/index.html
  23. 23. Logging: AppendersTypically the following appenders areconfigured:● stdout: writes the log lines on the standard output (useful if run on a terminal window)● file: writes the log lines to (rolling) files● database/db: writes the log lines as SQL inserts in a logging database/table
  24. 24. Logging: LoggersLoggers are configured to report only warningsand errors from most of the programs.Loggers will report also debug information fromthe program core, unless we decide toconfigure it differently.
  25. 25. Transmitter Configuration <List Name="slta1"> <Var PathPrefix="*"/> <Var PortRange="30001-30100"/> <Var AcquisitionDataInterval="30"/> <Var FECLevel="5"/> <Var SureStreamAware="0"/> <Var BufferlessTransport="1"/> <Var LocalAddress="" /> <Var Address=""/> <Var TTL="16"/> <Var ResendSupported="1"/> <Var Protocol="udp/unicast"/> <List Name="Security"> <Var Type="None"/> </List> </List>
  26. 26. Receiver Configuration
  27. 27. Monitoring ConfigurationThe Channel Manager service listens for APIrequests on port 8081/tcp, therefore this portcan be configured in Nagios to continuouslymonitor the availability of the ChannelManager service.
  28. 28. APIs
  29. 29. API Overview● Middleware APIs: access point for integrators.● Channel Manager APIs: internal communications.
  30. 30. APIs: rolesAdministrators: can operate the fullplatform and perform operations onall the account and users.In our examples, Yoda has "admin" as username and password.Users: can only access their owndata.In our examples, the Ewoks have "user" as username and password.
  31. 31. API: List of all channelscurl -X GET http://admin:admin@localhost/api/1/channels
  32. 32. API: list user channelscurl -X GET http://admin:admin@localhost/api/1/channels/ usercurl -X GET http://user:user@localhost/api/1/ me/channels
  33. 33. API: create a channelcurl -X POST http://admin:admin@localhost/api/1/channels -d @channel1.json -H "Content-Type: application/json" -H "Accept: application/json"{ "userName":"user", "path":"channel1.mp4", "title":"Channel 1"}
  34. 34. API: get details about a channel curl -X GET http://admin:admin@localhost/api/1/channels/ user↵ ?path=channel1.mp4 curl -X GET http://user:user@localhost/api/1/ me/channels↵ ?path=channel1.mp4
  35. 35. API: add a clip to a channelcurl -X POST http://admin:admin@localhost/api/1/channels/ user/↵ clips?path=channel1.mp4&clip=clip1.mp4 ↵ &clip=clip2.mp4curl -X POST http://user:user@localhost/api/1/ me/channels/ ↵ clips?path=channel1.mp4&clip=clip1.mp4 ↵ &clip=clip2.mp4
  36. 36. API: delete a channelcurl -X DELETE http://admin:admin@localhost/api/1/channels/user ↵?path=channel1.mp4
  37. 37. API: update a channelcurl -X PUT http://admin:admin@localhost/api/1/channels -d @channel2.json -H "Content-Type: application/json" -H "Accept: application/json"curl -X PUT http://user:user@localhost/api/1/ me/channels -d @channel2.json -H "Content-Type: application/json" -H "Accept: application/json"
  38. 38. API: start a channelcurl -i -X GET http://admin:admin@localhost/api/1/channels/ user/↵ start?path=channel1.mp4curl -i -X GET http://user:user@localhost/api/1/ me/channels/ ↵ start?path=channel1.mp4
  39. 39. API: stop a channelcurl -i -X GET http://admin:admin@localhost/api/1/channels/ user/↵ stop?path=channel1.mp4curl -i -X GET http://user:user@localhost/api/1/ me/channels/ ↵ stop?path=channel1.mp4
  40. 40. API: restart a channelcurl -i -X GET http://admin:admin@localhost/api/1/channels/ user/↵restart?path=channel1.mp4curl -i -X GET http://user:user@localhost/api/1/ me/channels/ ↵restart?path=channel1.mp4
  41. 41. Thank You! Grazie!Danke schön! !‫ﺷﻜﺮا‬