zoukankan      html  css  js  c++  java
  • CENTOS 7母机或KVM架构VPS升级换内核开启BBR加速 纯手工安装BBR

    TCP BBR是前不久谷歌开源的一项拥塞控制算法,可以更高效的利用公网网络带宽,提高联网效率和速度,建议有条件的服务器都安装一下,不过如果大家都装,那互相抢来抢去估计到时候就效果不明显了,不过目前这个还是挺少人用的就是了。

    网上抄来一段介绍,大家可以看看

    大多数人用的是 TCP Cubic (Linux) / Compound TCP (Windows),而在有一定丢包率的情况下,TCP BBR 更加激进,会抢占了更多的公网带宽

    此次 Google 提交到 Linux 主线并发表在 ACM queue 期刊上的 TCP BBR 拥塞控制算法,继承了 Google “先在生产环境部署,再开源和发论文” 的研究传统。TCP BBR 已经在 Youtube 服务器和 Google 跨数据中心的内部广域网(B4)上部署。

    TCP BBR 致力于解决两个问题:

    1、在有一定丢包率的网络链路上充分利用带宽。

    2、降低网络链路上的 buffer 占用率,从而降低延迟。

    TCP 拥塞控制的目标是最大化利用网络上瓶颈链路的带宽。一条网络链路就像一条水管,要想用满这条水管,最好的办法就是给这根水管灌满水,也就是:

    水管内的水的数量 = 水管的容积 = 水管粗细 × 水管长度

    换成网络的名词,也就是:网络内尚未被确认收到的数据包数量 = 网络链路上能容纳的数据包数量 = 链路带宽 × 往返延迟

    TCP 维护一个发送窗口,估计当前网络链路上能容纳的数据包数量,希望在有数据可发的情况下,回来一个确认包就发出一个数据包,总是保持发送窗口那么多个包在网络中流动。

    其实可以简单的理解,这就是一个加速算法,可以加快你服务器访问速度,充分利用带宽资源。与锐速相同的是都是单边加速无须客户端且效果很好,与锐速不同是它可以免费使用,不存在破解的问题。

    Linux Kernel 4.9 (含后续版本)已经集成了该算法,所以我们其实要做的就是将系统内核更换更新到最新即可。

    因为操作中涉及服务器后台操作,所以一切都是在SSH中进行,另外因为涉及到内核改写,因此如果你不是独立服务器或者KVM架构的VPS可能不能成功,OPENVZ的是不行的噢(当然OpenVZ架构的VPS其实也是有变通方法可以用上BBR,就是有点麻烦,详见https://www.bnxb.com/linuxserver/27274.html)。

    进入操作之前先把系统里面的软件升级到最新版

    yum更新系统版本:

    yum update

    首先,我们为系统增加elrepo源(国内VPS,类似腾讯云,阿里云,百度云如果安装源失败,可以从第二步注意事项那边开始执行):

    以ROOT权限登陆SSH,然后执行下面命令

    cat > /etc/yum.repos.d/elrepo.repo << EOF

    然后根据你CENTOS版本复制下面命令全部黏贴,然后回车

    CENTOS6:

    [elrepo-kernel]
    name=ELRepo.org Community Enterprise Linux Kernel Repository - el6
    baseurl=http://elrepo.org/linux/kernel/el6/x86_64/$basearch/
    http://mirrors.coreix.net/elrepo/kernel/el6/x86_64/$basearch/
    http://jur-linux.org/download/elrepo/kernel/el6/x86_64/$basearch/
    http://repos.lax-noc.com/elrepo/kernel/el6/x86_64/$basearch/
    http://mirror.ventraip.net.au/elrepo/kernel/el6/x86_64/$basearch/
    enabled=1
    gpgcheck=0
    EOF

    CENTOS7:

    [elrepo-kernel]
    name=ELRepo.org Community Enterprise Linux Kernel Repository - el7
    baseurl=http://elrepo.org/linux/kernel/el7/x86_64/$basearch/
    http://mirrors.coreix.net/elrepo/kernel/el7/x86_64/$basearch/
    http://jur-linux.org/download/elrepo/kernel/el7/x86_64/$basearch/
    http://repos.lax-noc.com/elrepo/kernel/el7/x86_64/$basearch/
    http://mirror.ventraip.net.au/elrepo/kernel/el7/x86_64/$basearch/
    enabled=1
    gpgcheck=0
    EOF

     

     

    第二步,安装替换最新内核及grub2

    yum -y install kernel-ml grub2

    注意事项:国内的阿里云和腾讯云因为国内网络的问题不能用上面步骤执行,需要用下面步骤,您如果是国外服务器也可以不用用上面步骤,直接从这里开始执行,效果一样

    CENTOS7安装elrepo并升级内核:

    下载最新内核并安装

    [root@BnxbComserver ~]#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    [root@BnxbComserver ~]#rpm -Uvh http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-4.20.6-1.el7.elrepo.x86_64.rpm

    CENTOS6安装elrepo并升级内核:

    下载最新内核并安装

    [root@BnxbComserver ~]#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    [root@BnxbComserver ~]#rpm -Uvh http://elrepo.org/linux/kernel/el6/x86_64/RPMS/kernel-ml-4.19.8-1.el6.elrepo.x86_64.rpm

    最新的RMP包可以到http://elrepo.org/linux/kernel/el7/x86_64/RPMS/查看(上面的旧包都会被删掉,因此一定要去查看替换成新的)

    第三步:查看最新内核是否安装成功

    ls -l /boot/vmlinuz*

    看到上面的结果,最后一条已经是4.10.5了,只要是4.9及以后的版本都是支持BR。

    那么下面我们可以开始替换CentOS 7内核了:

    第四步:更改grub

    (以下用root进行操作)

    CENTOS6输入以下命令查看grub启动列表:

    awk -F' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

    或者

    egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d '

    会出现类似的列表:

    0 : CentOS Linux (4.10.5-1.el7.elrepo.x86_64) 7 (Core)
    1 : CentOS Linux 7 Rescue f0e606d25a164f39aa306b052f38bc33 (3.10.0-327.36.3.el7.x86_64)
    2 : CentOS Linux (3.10.0-327.36.3.el7.x86_64) 7 (Core)
    3 : CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
    4 : CentOS Linux (0-rescue-9720ffe2dea246599e9e8048162adebf) 7 (Core)

    上面的查看grub不是必须的步骤,可以直接输入以下命令更新缺省内核

    grub2-set-default 0

    注意选择4.10.5版本新内核前面的数字,这里是0所以输入0

    另外有可能grub2部分源中不存在,上面安装会失败,可以手动改一下GRUB启动列表

    vi /boot/grub/grub.conf

    将default=1改成default=0

    blob.png

    centos7输入下面命令

    cat /boot/grub2/grub.cfg |grep menuentry

    注意一下我们新增的内核名称,然后稍微修改下下面的代码设置默认启动的内核

    grub2-set-default "CentOS Linux (4.20.6-1.el7.elrepo.x86_64) 7 (Core)"

    重启系统

    reboot

    重启后SSH会断开,我们需要稍微等待些许时间,即可再次连接上,然后查看内核:

    uname -a

    不出意外,应该已经是最新的4.10.5了

    接下来赶紧开启BBR吧

    cat >>/etc/sysctl.conf << EOF

    黏贴下面内容,点右键全部自动输入,然后回车

    net.core.default_qdisc=fq
    net.ipv4.tcp_congestion_control=bbr
    EOF

    再继续查看内核参数:

    sysctl -p

    看看有没有一行net.ipv4.tcp_congestion_control = bbr

    最后保险起见,复核一下BBR是否生效:

    sysctl net.ipv4.tcp_available_congestion_control

    看看有没有一行:net.ipv4.tcp_available_congestion_control = reno cubic bbr

    lsmod | grep bbr

    看看有没有一行tcp_bbr *****  *

    也就是都如图所示

    看到的反馈说明,BBR模块已经开始运作了!感受下Google带来的黑科技吧!

    注意:系统内的ipv6项并没有tcp_congestion_control一说,v4和v6用的是一样的(原文引用: IPv6 has no global variables such as tcp_*. tcp_* settings under ipv4/ also
    apply to IPv6.)

    另外因为这样相当于安装了新版内核,但是旧版内核也还在,如果不需要用到,其实是可以删掉旧版内核的,方法如下:

    先查询系统已安装的内核 

    rpm -qa | grep kernel 

    yum remove -y 旧内核的名字就好了

  • 相关阅读:
    绿色版的Linux.NET——“Jws.Mono”
    警惕!高版本VS发布时预编译导致Mono中Razor找不到视图
    用迭代实现无限级分类
    如何让我们的PHP在Jexus中跑起来
    Linux.NET实战手记—自己动手改泥鳅(下)
    umei-spider
    selenium-爬取小说
    filter() 函数
    字典,元组,列表,字符串互相转换
    Python实用黑科技——解包元素(2)
  • 原文地址:https://www.cnblogs.com/yanglang/p/12112240.html
Copyright © 2011-2022 走看看