srs OriginCluster: 同一条流,在集群模式下,有可能存在于两个源站

tvmytwxo  于 2022-12-31  发布在  其他
关注(0)|答案(2)|浏览(282)

描述(Description)

  1. SRS版本(Version): 4.0
  2. SRS的配置如下(Config):

组一个 2origin, 2edge的集群, 2origin使用statefulsets, 2 edge用 deployment ,edge使用lb暴露1935端口

重现(Replay)

先推上一条流假设 使用的路径为 e1 -> o1
如果再推同一条流, 路径为 e1, 由于到一个机器,则推不上来,符合预期
路径为 e2 -> o1 , o1推不上来,符合预期
疯狂推,终于有一次使用 e2 -> o2 由于 o2 没有到 coworker o1 找流,所以也推上来了。

这个问题是因为涉及到中心状态,所以不解决么?还是认为这是合理的?

解决这个问题的方式也很简单: on_publish到中心服务获取流状态就行了。

或者添加o1 到 o2。。。其他源站找流是否存在的逻辑?

uplii1fm

uplii1fm1#

疯狂推,终于有一次使用 e2 -> o2 由于 o2 没有到 coworker o1 找流,所以也推上来了。

为何会出现o2没有到o1找流?是否有简单的重现路径?

iq0todco

iq0todco2#

为何会出现o2没有到o1找流?是否有简单的重现路径?

推流推到O2,O2没有去coworker O1找这个流是否在的代码逻辑

重现路径就如我所述:

SLB  ---  E1   O1   
         |.                
         |.--E2  O2

配置:

Origin:

cluster {
            origin_cluster  on;
            coworkers       srs-origin-0.srs-origin-service srs-origin-1.srs-origin-service;
        }

Edge:

cluster {
            mode            remote;
            origin          srs-origin-0.srs-origin-service srs-origin-1.srs-origin-service;
        }

疯狂的向SLB推一条流,就能重现.

Edge的origin配置是用于向origin lb的.
origin的 coworker是用于 edge拉origin,返回302的.

并没有推流publish时,origin看一下其他的coworker这流是否存在的逻辑

相关问题