mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
For #464, support config for origin cluster.
This commit is contained in:
parent
db6b8cf914
commit
d0fbf44d18
6 changed files with 140 additions and 40 deletions
|
@ -329,20 +329,21 @@ vhost removed.srs.com {
|
||||||
|
|
||||||
# vhost for stream cluster for RTMP/FLV
|
# vhost for stream cluster for RTMP/FLV
|
||||||
vhost cluster.srs.com {
|
vhost cluster.srs.com {
|
||||||
# stream RTMP/FLV cluster config.
|
# The config for cluster.
|
||||||
cluster {
|
cluster {
|
||||||
# the mode of vhost, local or remote.
|
# The cluster mode, local or remote.
|
||||||
# local: vhost is origin vhost, which provides stream source.
|
# local: It's an origin server, serve streams itself.
|
||||||
# remote: vhost is edge vhost, which pull/push to origin.
|
# remote: It's an edge server, fetch or push stream to origin server.
|
||||||
# default: local
|
# default: local
|
||||||
mode remote;
|
mode remote;
|
||||||
# for edge(remote mode), user must specifies the origin server
|
|
||||||
|
# For edge(mode remote), user must specifies the origin server
|
||||||
# format as: <server_name|ip>[:port]
|
# format as: <server_name|ip>[:port]
|
||||||
# @remark user can specifies multiple origin for error backup, by space,
|
# @remark user can specifies multiple origin for error backup, by space,
|
||||||
# for example, 192.168.1.100:1935 192.168.1.101:1935 192.168.1.102:1935
|
# for example, 192.168.1.100:1935 192.168.1.101:1935 192.168.1.102:1935
|
||||||
origin 127.0.0.1:1935 localhost:1935;
|
origin 127.0.0.1:1935 localhost:1935;
|
||||||
|
|
||||||
# for edge, whether open the token traverse mode,
|
# For edge(mode remote), whether open the token traverse mode,
|
||||||
# if token traverse on, all connections of edge will forward to origin to check(auth),
|
# if token traverse on, all connections of edge will forward to origin to check(auth),
|
||||||
# it's very important for the edge to do the token auth.
|
# it's very important for the edge to do the token auth.
|
||||||
# the better way is use http callback to do the token auth by the edge,
|
# the better way is use http callback to do the token auth by the edge,
|
||||||
|
@ -350,19 +351,24 @@ vhost cluster.srs.com {
|
||||||
# default: off
|
# default: off
|
||||||
token_traverse off;
|
token_traverse off;
|
||||||
|
|
||||||
# the vhost to transform for edge,
|
# For edge(mode remote), the vhost to transform for edge,
|
||||||
# to fetch from the specified vhost at origin,
|
# to fetch from the specified vhost at origin,
|
||||||
# if not specified, use the current vhost of edge in origin, the variable [vhost].
|
# if not specified, use the current vhost of edge in origin, the variable [vhost].
|
||||||
# default: [vhost]
|
# default: [vhost]
|
||||||
vhost same.edge.srs.com;
|
vhost same.edge.srs.com;
|
||||||
|
|
||||||
# when upnode(forward to, edge push to, edge pull from) is srs,
|
# For edge(mode remote), when upnode(forward to, edge push to, edge pull from) is srs,
|
||||||
# it's strongly recommend to open the debug_srs_upnode,
|
# it's strongly recommend to open the debug_srs_upnode,
|
||||||
# when connect to upnode, it will take the debug info,
|
# when connect to upnode, it will take the debug info,
|
||||||
# for example, the id, source id, pid.
|
# for example, the id, source id, pid.
|
||||||
# please see: https://github.com/ossrs/srs/wiki/v1_CN_SrsLog
|
# please see: https://github.com/ossrs/srs/wiki/v1_CN_SrsLog
|
||||||
# default: on
|
# default: on
|
||||||
debug_srs_upnode on;
|
debug_srs_upnode on;
|
||||||
|
|
||||||
|
# For origin (mode local) cluster, the co-worker's HTTP APIs.
|
||||||
|
# This origin will connect to co-workers and communicate with them.
|
||||||
|
# please read: https://github.com/ossrs/srs/wiki/v3_EN_OriginCluster
|
||||||
|
coworkers 127.0.0.1:9091 127.0.0.1:9092;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1782,3 +1788,28 @@ vhost stream.transcode.srs.com {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#############################################################################################
|
||||||
|
# The origin cluster section
|
||||||
|
#############################################################################################
|
||||||
|
http_api {
|
||||||
|
enabled on;
|
||||||
|
listen 9090;
|
||||||
|
}
|
||||||
|
vhost a.origin.cluster.srs.com {
|
||||||
|
cluster {
|
||||||
|
mode local;
|
||||||
|
coworkers 127.0.0.1:9091;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
http_api {
|
||||||
|
enabled on;
|
||||||
|
listen 9091;
|
||||||
|
}
|
||||||
|
vhost b.origin.cluster.srs.com {
|
||||||
|
cluster {
|
||||||
|
mode local;
|
||||||
|
coworkers 127.0.0.1:9090;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
19
trunk/conf/origin.cluster.serverA.conf
Normal file
19
trunk/conf/origin.cluster.serverA.conf
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# the config for srs origin-origin cluster
|
||||||
|
# @see https://github.com/ossrs/srs/wiki/v3_EN_OriginCluster
|
||||||
|
# @see full.conf for detail config.
|
||||||
|
|
||||||
|
listen 19350;
|
||||||
|
max_connections 1000;
|
||||||
|
daemon off;
|
||||||
|
srs_log_tank console;
|
||||||
|
pid ./objs/origin.cluster.serverA.pid;
|
||||||
|
http_api {
|
||||||
|
enabled on;
|
||||||
|
listen 9090;
|
||||||
|
}
|
||||||
|
vhost __defaultVhost__ {
|
||||||
|
cluster {
|
||||||
|
mode local;
|
||||||
|
coworkers 127.0.0.1:9091;
|
||||||
|
}
|
||||||
|
}
|
19
trunk/conf/origin.cluster.serverB.conf
Normal file
19
trunk/conf/origin.cluster.serverB.conf
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# the config for srs origin-origin cluster
|
||||||
|
# @see https://github.com/ossrs/srs/wiki/v3_EN_OriginCluster
|
||||||
|
# @see full.conf for detail config.
|
||||||
|
|
||||||
|
listen 19351;
|
||||||
|
max_connections 1000;
|
||||||
|
daemon off;
|
||||||
|
srs_log_tank console;
|
||||||
|
pid ./objs/origin.cluster.serverB.pid;
|
||||||
|
http_api {
|
||||||
|
enabled on;
|
||||||
|
listen 9091;
|
||||||
|
}
|
||||||
|
vhost __defaultVhost__ {
|
||||||
|
cluster {
|
||||||
|
mode local;
|
||||||
|
coworkers 127.0.0.1:9090;
|
||||||
|
}
|
||||||
|
}
|
|
@ -3726,7 +3726,7 @@ srs_error_t SrsConfig::check_normal_config()
|
||||||
} else if (n == "cluster") {
|
} else if (n == "cluster") {
|
||||||
for (int j = 0; j < (int)conf->directives.size(); j++) {
|
for (int j = 0; j < (int)conf->directives.size(); j++) {
|
||||||
string m = conf->at(j)->name;
|
string m = conf->at(j)->name;
|
||||||
if (m != "mode" && m != "origin" && m != "token_traverse" && m != "vhost" && m != "debug_srs_upnode") {
|
if (m != "mode" && m != "origin" && m != "token_traverse" && m != "vhost" && m != "debug_srs_upnode" && m != "coworkers") {
|
||||||
return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "illegal vhost.cluster.%s of %s", m.c_str(), vhost->arg0().c_str());
|
return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "illegal vhost.cluster.%s of %s", m.c_str(), vhost->arg0().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5157,6 +5157,33 @@ string SrsConfig::get_vhost_edge_transform_vhost(string vhost)
|
||||||
return conf->arg0();
|
return conf->arg0();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vector<string> SrsConfig::get_vhost_coworkers(string vhost)
|
||||||
|
{
|
||||||
|
vector<string> coworkers;
|
||||||
|
|
||||||
|
SrsConfDirective* conf = get_vhost(vhost);
|
||||||
|
if (!conf) {
|
||||||
|
return coworkers;
|
||||||
|
}
|
||||||
|
|
||||||
|
conf = conf->get("cluster");
|
||||||
|
if (!conf) {
|
||||||
|
return coworkers;
|
||||||
|
}
|
||||||
|
|
||||||
|
conf = conf->get("coworkers");
|
||||||
|
for (int i = 0; i < (int)conf->directives.size(); i++) {
|
||||||
|
SrsConfDirective* option = conf->directives[i];
|
||||||
|
if (!option) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
coworkers.push_back(option->arg0());
|
||||||
|
}
|
||||||
|
|
||||||
|
return coworkers;
|
||||||
|
}
|
||||||
|
|
||||||
bool SrsConfig::get_security_enabled(string vhost)
|
bool SrsConfig::get_security_enabled(string vhost)
|
||||||
{
|
{
|
||||||
static bool DEFAULT = false;
|
static bool DEFAULT = false;
|
||||||
|
|
|
@ -939,6 +939,11 @@ public:
|
||||||
* @see https://github.com/ossrs/srs/issues/372
|
* @see https://github.com/ossrs/srs/issues/372
|
||||||
*/
|
*/
|
||||||
virtual std::string get_vhost_edge_transform_vhost(std::string vhost);
|
virtual std::string get_vhost_edge_transform_vhost(std::string vhost);
|
||||||
|
/**
|
||||||
|
* Get the co-workers of origin cluster.
|
||||||
|
* @see https://github.com/ossrs/srs/wiki/v3_EN_OriginCluster
|
||||||
|
*/
|
||||||
|
virtual std::vector<std::string> get_vhost_coworkers(std::string vhost);
|
||||||
// vhost security section
|
// vhost security section
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -1255,7 +1260,6 @@ public:
|
||||||
* a window is a set of hds fragments.
|
* a window is a set of hds fragments.
|
||||||
*/
|
*/
|
||||||
virtual double get_hds_window(const std::string &vhost);
|
virtual double get_hds_window(const std::string &vhost);
|
||||||
|
|
||||||
// dvr section
|
// dvr section
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
#define RTMP_SIG_SRS_ROLE "cluster"
|
#define RTMP_SIG_SRS_ROLE "cluster"
|
||||||
#define RTMP_SIG_SRS_URL "https://github.com/ossrs/srs"
|
#define RTMP_SIG_SRS_URL "https://github.com/ossrs/srs"
|
||||||
#define RTMP_SIG_SRS_LICENSE "The MIT License (MIT)"
|
#define RTMP_SIG_SRS_LICENSE "The MIT License (MIT)"
|
||||||
#define RTMP_SIG_SRS_COPYRIGHT "Copyright (c) 2013-2017 " RTMP_SIG_SRS_KEY "(" RTMP_SIG_SRS_AUTHROS ")"
|
#define RTMP_SIG_SRS_COPYRIGHT "Copyright (c) 2013-2018 " RTMP_SIG_SRS_KEY "(" RTMP_SIG_SRS_AUTHROS ")"
|
||||||
#define RTMP_SIG_SRS_PRIMARY RTMP_SIG_SRS_KEY "/" VERSION_STABLE_BRANCH
|
#define RTMP_SIG_SRS_PRIMARY RTMP_SIG_SRS_KEY "/" VERSION_STABLE_BRANCH
|
||||||
#define RTMP_SIG_SRS_HANDSHAKE RTMP_SIG_SRS_KEY "(" RTMP_SIG_SRS_VERSION ")"
|
#define RTMP_SIG_SRS_HANDSHAKE RTMP_SIG_SRS_KEY "(" RTMP_SIG_SRS_VERSION ")"
|
||||||
#define RTMP_SIG_SRS_VERSION SRS_XSTR(VERSION_MAJOR) "." SRS_XSTR(VERSION_MINOR) "." SRS_XSTR(VERSION_REVISION)
|
#define RTMP_SIG_SRS_VERSION SRS_XSTR(VERSION_MAJOR) "." SRS_XSTR(VERSION_MINOR) "." SRS_XSTR(VERSION_REVISION)
|
||||||
|
|
Loading…
Reference in a new issue