lvs+srs(dr模型)

  • 时间:
  • 浏览:2
  • 来源:大发排列3_大发排列3官方

            vhost __defaultVhost__ {

route add 192.168.2.111 dev eth0:0

2.亲戚亲戚有人处理了1的现象报告 ,有刚刚 这又带来了新的现象报告 :director和real server全部后要vip,有刚刚 在同一网段中,统统 vip请求到来的前一天,网关会广播请求,统统 不管是director还是realserver亲戚亲戚有人后要收到请求,假设亲戚亲戚有人director先收到了,它是为甚进行负载均衡调度的呢?

service srs restart  

            srs_log_file        ./objs/edge.log;

            srs_log_file        ./objs/edge.log;

                mode            remote;

            ONBOOT=yes

         为甚这里还要用到呢?前一天vip包是director第另一一一十个 响应的,统统 网关的arp表保留的是director的mac,假设rs,eth0配的真实ip,eth1配的vip,那末,当收到director改写mac的vip请求包后,它响应并从eth0回送包(亲戚亲戚有人不应该让eth1接受到包,有刚刚 又回到2),前一天此时填的是eth1,也就是 我vip所在的mac,那末网关发现你是什么 是vip的新mac就会更新arp表,从而造成vip抢占(你是什么 是别人的说法,我不太认同,前一天就算用eth0的mac也会被更新,一样抢占,待我找到靠谱的答案再更新此现象报告 )

    echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

real2    ip:192.168.2.138(srs源端服务器ip2)

net.ipv4.ip_forward = 1 (lvs转发包,统统 你是什么 要为1,开启转发功能)

为了实验方便,默认都关闭iptables和selinux

            BROADCAST=127.255.255.255

            举个例子,假设本机上另一一一十个 网口,eth0上绑定的ip为1.1.1.1,eth1上绑定的是2.2.2.2,那末设置arp_ignore为1后,当eth0收到2.2.2.2的arp请求报文后我不要 响应,同理eth1收到1.1.1.1的arp请求报文我不要 响应(eth0:0子网卡不选择可不都还要,待测试)

    在dr模式下,director、real server和vip全部后要同一网段中,这就带来了十几次 现象报告 :

目的:

            IPADDR=192.168.2.111

vi  /etc/sysctl.conf

vi  /usr/local/srs/conf/edge.conf 内容如下:

推流测试:

            NETMASK=255.255.255.0

                origin          192.168.2.138:1935  192.168.2.127:1935;  (经测试,当192.168.2.138和192.168.2.127占据 不同流的前一天,

srs  ip:192.168.2.221 (此为srs边缘服务器ip)

3.那末,亲戚亲戚有人又为甚确保director第另一一一十个 收到呢?在同一网段中,每台服务器后要收到vip请求广播包,亲戚亲戚有人为甚保证rs既能响应什么请求又不首先响应?这就要用到arp_ignore和arp_announce前一天hidden interface的功能。

lvs dr模式原理简介:

http://blog.csdn.net/reblue520/article/details/50857078 (lvs负载均衡)

架构:

real1    ip:192.168.2.127(srs源端服务器ip1)

vi ifcfg-eth0:0 内容如下:

本文转自biao007h51CTO博客,原文链接:http://blog.51cto.com/linzb/1926694 ,如需转载请自行联系原作者

通过lvs推流到多个流服务器以缓解服务器压力,利用边缘服务器的功能都还要访问到所有流,又都还要节约传输效率,前一天是直播,统统 推过来的流全部后要不同ip的,统统 都还要利用lvs hash ip的功能将同一流的包转发到同一流服务器,那末 就处理了流的存放现象报告 。

cp ifcfg-lo  ifcfg-lo:0

/usr/local/src/srs/trunk/objs/ffmpeg/bin/ffmpeg  -re -i test.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.2.111/live/livestream1

            HWADDR=00:0C:29:5B:58:99

real1:

    利用ip是不行的,前一天用realserver的真实ip,那末就会回到1的现象报告 上去,统统 那末用vip作为目的ip。事实上,dr模式下,lvs是根据mac地址来进行负载均衡调度的,前一天每台的mac地址全部后要同,统统 那末对应mac的rs(realserver简写,懒得打)会收到请求,有刚刚 前一天买车人虽然有vip,统统 能响应请求。 

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

/usr/local/src/srs/trunk/objs/ffmpeg/bin/ffmpeg  -re -i test2.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.2.111/live/livestream2

vi  /usr/local/srs/conf/edge.conf 

direct 的配置:

    统统 ,每个real server里面都绑定了vip,当收到vip来的请求包的前一天,real server 用vip作为源地址回复。

            NETMASK=255.255.255.255

            ONBOOT=yes

director ip:192.168.2.119(lvs调度器服务器ip)

yum install ipvsadm  -y (lvs是通过ipvsadm你是什么 软件包管理的,就类似于于于netfiter和iptables的关系)

cd  /etc/sysconfig/network-scripts/

         亲戚亲戚有人的案例使用的是第一种常见的法子 :设置arp_ignore 为1,你是什么 参数的作用是只回答目标IP地址是来访网络接口本地地址的ARP查询请求

ipvsadm  -a  -t 192.168.2.111:1935 -r 192.168.2.127:1935 -m

cd  /etc/sysconfig/network-scripts/

vi ifcfg-lo:0 内容如下:

http://www.linuxvirtualserver.org/VS-DRouting.html (lvs dr模式)

配置和real1一样,略

route add -host 192.168.2.111 dev lo:0  #加这条是为了保证本机响应包的源ip为vip不变

            pid                 objs/edge.pid;

            vhost __defaultVhost__ {

        service srs restart

ipvsadm  -a  -t 192.168.2.111:1935 -r 192.168.2.138:1935 -m  (打上去后端服务器)

            IPADDR=192.168.2.111

            BROADCAST=192.168.2.111

cp ifcfg-eth0  ifcfg-eth0:0

service network  restart

http://www.cnblogs.com/lgfeng/archive/2012/10/16/2726508.html (arp_ignore和arp_announce)

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

            listen              1935;

virtual  ip:192.168.2.111(调度用的虚拟ip)

            NAME=loopback

            max_connections     50;

            DEVICE=eth0:0

            pid                 objs/edge.pid;

参考:

通过rtmp://192.168.2.221/live/livestream1和rtmp://192.168.2.221/live/livestream2 查看确认视频可正常播放

            }                                 用你是什么 配置边缘服务器都还要访问两台服务器上的所有流)              

    在dr模式下,rs的配置是一些特殊的。比较常见的一种是把vip绑定到lo口上,前一天大多数linux内核版本我不要 响应回环口ip的arp报文请求,统统 当收到vip广播请求报文的前一天,rs我不要 响应。前一天director是把vip绑定到某个非回环口上的,统统 director都还要第另一一一十个 收到并响应vip请求报文。 另一种常见的做法是,rs把vip绑定到某个什么都那末使用中的接口上,有刚刚 利用hidden interface的功能禁掉此接口的arp响应,前一天那末arp响应,统统 你是什么 端口还要不使用,有刚刚 影响正常通信。 

1.在此模式下,vip接收到的请求那末简单地通过转发给real server,前一天当请求过来的前一天,前一天简单地转发,前一天三台都能连外网,统统 转发的前一天real server会直接回复给请求方,而请求方收到ip,发现全部后要买车人请求的会丢弃。

https://my.oschina.net/fengjihu/blog/416883 (srs集群模式)

service network  restart

            GATEWAY=192.168.2.1

ipvsadm -Ln (你是什么 命令都还要查看ipvs当前的情形)

            }

            listen              1935;

 有刚刚 ,设置arp_announce为2,你是什么 的作用是使用出口网口的mac作为源mac。

http://www.linuxvirtualserver.org/docs/arp.html (lvs arp现象报告 )

            max_connections     50;

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

real2:

sysctl -p

            BOOTPROTO=static

            DEVICE=lo:0

ipvsadm  -A -t 192.168.2.111:1935 -s sh (打上去服务,-s指定调度算法,sh是source_hash的意思,根据来源ip调度到同一台服务器)

srs 边缘服务器的配置:

    举个例子,假设本机有eth0:1.1.1.1,eth1:2.2.2.2 ,假设本机收到了1.1.1.1的请求包,却从eth1口发送包,那末数据帧的源mac应该是写eth0的mac还是eth1的mac?  正常情形下是写eth1的,有刚刚 linux比较特殊,默认是写eth0的,设为2,是让它默认写eth1的。