srs集群


前言

单机srs直播服务器因单机能力不足,在生产环境常常使用到集群模式,在本次模拟搭建srs集群时,采用docker进行集群,因为博主没有购买云服务器,加上朋友的云服务内存小,无法支撑集群搭建,所以本次采用dockerDesktop在windows上进行docker使用。


一、DockerDesktop

该软件将docker作为软件运行在windows系统,当然安装时需要用户对windows系统进行一些设置,具体安装可以上网搜索,这里不做阐述。

二、集群方式

1.制作含srs的centos镜像

在上次对srs单机部署时,直接在centos系统上安装srs,在trunk目录下指定conf文件进行启动。本次,从潜入深的方式进行。采用docker搭建多个centos系统安装srs,通过指定 源,边缘服务器的方式进行多个单机srs集群。(注:官方有通过dockercompose进行集群,博主目前并未学会,只能采用笨办法)

//拉取centos镜像
docker pull centos
//启动容器,指定srs需要用到的端口 --privileged为特权模式  /usr/sbin/init 初始化容器一些命令
docker run -d  -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 80:80 -p 8000:8000/udp   --privileged=true <imageId> /usr/sbin/init

//进入容器
docker exec -it <containerid> /bin/bash

安装编译环境

# 安装编译环境
yum -y install gcc gcc-c++
# 安装编译环境
yum install -y patch
# 安装编译环境
yum install -y unzip
# 安装编译环境
yum -y install gcc automake autoconf libtool make
# 安装 git
yum install -y git

拉取源码

# 创建 git 数据目录
mkdir -p /home/git
 
# 访问 git 数据目录
cd /home/git
 
# 从码云拉代码
git clone https://gitee.com/winlinvip/srs.oschina.git srs && ls
 
# 查看码云代码
cd srs/trunk && ls
 
# 切换到官方 git
git remote set-url origin https://github.com/ossrs/srs.git && ls
 
# 更新代码
git pull
 
# 切换到 Develop 分支
git checkout develop && ls
 
# 如果要查看所有发布的git版本可以使用
git tag

编译

和单机版本的srs编译一样吗,启动测试

制作镜像

//1.退出docker容器
exit
//2.提交部署有srs 的centos系统为新的镜像
docker commit <containerid> <imageName>

2.启动4台srs服务器

通过修改多个centos中的srs的conf下的文件来进行集群配置,本次启动两个为源站服务器,两个为边缘服务器。(源站服务器定义为推流服务器,边缘服务器为拉流服务器,在生产环境下,一般推流用户会少于拉流用户。所以源站服务器会多于边缘服务器。同时源站服务器和边缘服务器因为不同的功能,开放不同的端口)

nameip端口映射docker命令
orini1172.17.0.11935 - 1935docker run -d -p 1935:1935 --privileged=true xxxxxx /usr.sbin/init
orini2172.17.0.21936 - 1935docker run -d -p 1936:1935 --privileged=true xxxxxx /usr.sbin/init
edge1172.17.0.38080- 8080 1985-1985 1937-1935docker run -d -p 1985:1985 -p 8080:8080 -p 1937:1935 --privileged=true xxxxx /usr/sbin/init
edge2172.17.0.48081- 8080 1986-1985 1938-1935docker run -d -p 1986:1985 -p 8081:8080 -p 1938:1935 --privileged=true xxxxx /usr/sbin/init

注意端口指定,因为部署到同一台服务器上,所以srs映射出来的端口要做修改,xxxxx为提交的镜像id。
注意,ip写为172.17.0.x是docker自动分配的,但是ip地址分配和各个服务启动的先后顺序有关,从小到大进行分配。所以在生产环境中需要将docker ip进行静态化处理。


3.修改配置文件

假设所有的服务器ip为上面表格表中的ip

1.修改orgin1配置文件

而实际的ip需要进行查看hosts文件或者ifconfig查看

//查看本台服务器ip
cat /etc/hosts
//修改srs配置文件,本次使用rtc2rtmp.conf文件作为启动文件
# 因为要集群webrtc协议,所以要修改的是rtc2rtmp.conf文件
cd /home/git/srs/trunk/conf
vi rtc2rtmp.conf
 
# vhost __defaultVhost__里头新增如下配置
cluster {
        #集群的模式,对于源站集群,值应该是local。
        mode            local;
        #是否开启源站集群
        origin_cluster  on;
        #源站集群中的其他源站的HTTP API地址 如果其他源站有多个,中间用空格隔开,比如:172.17.0.2:9090 172.17.1.2:9090
        coworkers       172.17.0.2:9090; //如果另外的源站服务器为172.17.0.2,9090为http_api端口
    }

2.修改orgin2配置文件

//查看本台服务器ip
cat /etc/hosts
//修改srs配置文件,本次使用rtc2rtmp.conf文件作为启动文件
# 因为要集群webrtc协议,所以要修改的是rtc2rtmp.conf文件
cd /home/git/srs/trunk/conf
vi rtc2rtmp.conf
 
# vhost __defaultVhost__里头新增如下配置
cluster {
        #集群的模式,对于源站集群,值应该是local。
        mode            local;
        #是否开启源站集群
        origin_cluster  on;
        #源站集群中的其他源站的HTTP API地址 如果其他源站有多个,中间用空格隔开,比如:172.17.0.2:9090 172.17.1.2:9090
        coworkers       172.17.0.1:9090; //如果另外的源站服务器为172.17.0.1,9090为http_api端口
    }

3.修改 edge1 配置文件

边缘站需要配置源站的信息,因为边缘站负责拉流,那么拉流要从哪里拉流,这个就是边缘站需要配置的内容。因为源站有集群,所以边缘站需要的流可能来自其中任意一个源站,因此需要给边缘站配置所有的源站节点信息:

# 因为要集群webrtc协议,所以要修改的是rtc2rtmp.conf文件
cd /home/git/srs/trunk/conf
vi rtc2rtmp.conf
 
# vhost __defaultVhost__里头新增如下配置
cluster {
        #集群的模式,对于边缘集群,值应该是remote。
        mode            remote;
        #源站集群中所有源站流地址
        origin          172.17.0.1:1935 172.17.0.2:1935;
    }

4.修改 edge2 配置文件

# 因为要集群webrtc协议,所以要修改的是rtc2rtmp.conf文件
cd /home/git/srs/trunk/conf
vi rtc2rtmp.conf
 
# vhost __defaultVhost__里头新增如下配置
cluster {
        #集群的模式,对于边缘集群,值应该是remote。
        mode            remote;
        #源站集群中所有源站流地址
        origin          172.17.0.1:1935 172.17.0.2:1935;
    }

3.测试

1.推流测试

打开obs工具,进行服务器推流

//对origin1和origin2分别推流
rtmp://localhost:1935/live/1
rtmp://localhost:1936/live/2

如果obs没有出错就成功

1.拉流测试

下载vlc播放器(因为ffmpeg拉流容器写错)
输入url拉流
如果打印未爆红就没问题

rtmp://localhost:1937/live/1
rtmp://localhost:1938/live/1
rtmp://localhost:1938/live/2
rtmp://localhost:1938/live/1

同样也使用flv和hls协议,但是对于webrtc协议,目前srs并不支持

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值