centos7.9 TCP 加速

BBR是谷歌开发的新的TCP加速算法,在网络状况不好的服务器上开启TCP的bbr,可以在无需增加任何硬件投入的情况下实现网络加速,并且客户端无需做任何配置,因此使用起来非常的方便。TCP加速对网络状况较好的内网环境,或者大带宽的境内服务器优化效果不明显,对于境外的VPS则有较好的加速效果。

开启BBR的前提是linux的内核版本要高于4.8(高版本的内核已经默认集成了BBR模块),目前centos7.9默认安装的内核版本是3.10,因此Centos7.9要开启TCP BBR加速首先要升级centos7 的内核。

以下的操作都是在centos7.9操作系统之上的,使用命令cat /etc/redhat-release命令可以查看当前系统的版本信息。

cat /etc/redhat-release

在这里插入图片描述
使用命令uname -ra可以查看当前系统的内核版本信息。

uname -ra

在这里插入图片描述

1.升级Centos7内核

1.1查找版本

因 ELRepo 源都是最新版本,所以旧版本内核只能手动下载。

查找 kernel rpm 历史版本:http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/

1.2下载内核 RPM

共需要下载三个类型 rpm

kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm

kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

cd /home
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

1.3安装内核

rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

在这里插入图片描述

1.4确认已安装内核版本

[root@localhost kernel]# rpm -qa | grep kernel
kernel-devel-3.10.0-1160.102.1.el7.x86_64
kernel-devel-3.10.0-1160.el7.x86_64
kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64
kernel-headers-3.10.0-1160.102.1.el7.x86_64
abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-tools-3.10.0-1160.102.1.el7.x86_64
kernel-3.10.0-1160.102.1.el7.x86_64
kernel-lt-5.4.226-1.el7.elrepo.x86_64
kernel-devel-3.10.0-1160.99.1.el7.x86_64
kernel-tools-libs-3.10.0-1160.102.1.el7.x86_64
kernel-3.10.0-1160.99.1.el7.x86_64

在这里插入图片描述

1.5设置启用新内核

# 查看启动顺序
[root@localhost alfiy]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (3.10.0-1160.105.1.el7.x86_64) 7 (Core)
CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.102.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.99.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-4f159f5c7c9a4d2aa7ea785de06efbaf) 7 (Core)# 设置启动顺序 启动顺序从0排序,比如上面列表中0代表的是CentOS Linux (3.10.0-1160.105.1.el7.x86_64) 7 (Core)
# 1代表的是CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)
[root@localhost ~]# grub2-set-default 1# 重启生效
[root@localhost ~]# reboot

在这里插入图片描述
💁‍♂ 如果grub2.cfg文件为空,则上述命令不会生效,需要执行grub2-mkconfig生成一个新的grub2.cfg文件.

grub2-mkconfig -o /etc/grub2.cfg

然后再执行前面的命令。

2.安装BBR

echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf
sysctl -p

在这里插入图片描述

👿 实测net.core.default_qdisc=cake的效果要比`net.core.default_qdisc=fq的效果好一些,但是cake好像在4.9内核上不支持,在5.4内核上就支持了。

💁‍♂ 其实上述步骤等同于直接修改/etc/sysctl.conf文件,如果多次执行上述命令时,再使用sysctl -p命令检查时会出现重复项,大家重新编辑/etc/sysctl.conf文件把重复项删除掉就可以了。

👿 如果你的系统报net.core.default_qdiscnet.ipv4.tcp_congestion_control不存在时,说明内核目前并不支持后面选项,需要检查确认内核版本。

3.检测

使用lsmod命令可以列出内核自启的模块,具体用法如下。

lsmod | grep bbr

如果出现下图所示内容,说明内核已经启用bbr模块。
在这里插入图片描述
也可以使用sysctl -p命令查看内核是否已经启用BBR,如果命令行打印出下图内容说明内核已经启用了BBR了,使用reboot命令重启服务器就可以了。
在这里插入图片描述

4.创建安装脚本

如果你有多台VPS并且都是相同的发行版本,那么需要重复前面1-3步的过程,是不是感觉有点太麻烦了?好吧,接下来我们将为前面的步骤开发一个简单的安装脚本。

思路如下,先提取前面步骤中所必需的安装命令。在前面1-3步中基本上使用了以下命令。

# 进入一个准备下载rpm包的目录 这里我们使用了家目录
cd /home# 在当前目录下,下载所需的内核安装包
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm# 通过rpm安装器安装下载的包 这里我们只安装了基础包和开发包,head包并没安装,如果有些程序需要head包可以再进入这个目录进行安装
rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm# 设置启用新内核
grub2-set-default 'CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)'# 启用Tcp的bbr加速
echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf# 重启生效
reboot

以上过程就基本上是我们手动安装的过程,由于我们要创建自动安装脚本,所以其中有些安装检查步骤就省略了。依照上面的流程,我们就可以编写自动安装脚本 了。

首先新建一个脚本文件,这里我就以tcp.sh为例。

vim tcp.sh

tcp.sh文件中添加以下内容:

#!/bin/bash# 1. 创建目录
cd /home
mkdir bbr
cd bbr
# 2. 下载内核
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm &
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm &
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm &
wait
# 3. 安装内核
rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm &
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm &
wait
# 4. 设置启动
# 设置启动顺序 
grub2-set-default 'CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)'
wait
# 5. 安装BBR
echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf &
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf &
# sysctl -p
wait
# 6. 重启系统
reboot

保存退出tcp.sh文件,并给tcp.sh文件赋可执行权限。

chmoe +x tcp.sh

然后执行tcp.sh文件。

重启系统后你会发现系统已经使用新的内核,并在内核中启用了bbr了。

💁‍♂ 在脚本文件中,使用了&后台运行命令,以及wait命令,这两个命令的使用能够让脚本顺序执行,也就是说上一步骤执行完成后,再执行下一步的命令。

👿 学会举一反三:上面的脚本都是写死的,所以只能在特定的发行版本上运行,大家还可以在此基础上进行完善,比如写一个判断语句,判断当前的系统的发行版本,判断当前的内核版本,以及一些友好的提示等。

5.一键安装脚本

有心的同学,如果认真实现了前面的4步,我想肯定会有很多收获,可是也有偷懒的同学,好吧下面就给出一个可用的一键安装脚本。

yum -y update && yum install -y wget && bash <(curl -s -L https://raw.githubusercontent.com/alfiy/centos7-bbr-enable/main/tcp.sh)

💁‍♂ 其实我只是把脚本放在了一个网络上可以下载的地方,大家可以沿着这个思路生成自己的一键安装脚本,自己写的脚本适应性可能不是太强,但对自己可能更加有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/311583.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

竞赛保研 基于大数据的股票量化分析与股价预测系统

文章目录 0 前言1 课题背景2 实现效果3 设计原理QTChartsarma模型预测K-means聚类算法算法实现关键问题说明 4 部分核心代码5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的股票量化分析与股价预测系统 该项目较为新颖…

Ubuntu20.04配置

新建用户 sudo adduser username给用户sudo权限 新创建的用户没有root权限&#xff0c;我们执行以下命令给用户sudo权限 sudo usermod -a -G adm username sudo usermod -a -G sudo username删除用户 删除用户及用户所有文件&#xff08;/home/username/路径下的所有文件&a…

C语言实验5:结构体

目录 一、实验要求 二、实验原理 1. 普通结构体 1.1 显示声明结构体变量 1.2 直接声明结构体变量 ​编辑 1.3 typedef在结构体中的作用 2. 结构体的嵌套 3. 结构体数组 4. 指向结构体的指针 4.1 静态分配 4.2 动态分配 三、实验内容 1. 学生数据库 代码 截图 …

【pandas_不重复项计数】

听说WPS没有非重复项计数的功能&#xff0c;而office需要添加到数据模型之后&#xff0c;才可以使用该功能。而用pandas&#xff0c;既可以对重复项计数&#xff0c;又可以对非重复项计数。 # 使用提醒: # 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能 # 2. pack…

【NTN 卫星通信】Oneweb星座以及Oneweb与Starlink比较

1 什么是OneWeb OneWeb于2012年以WorldVu的名义成立&#xff0c;于2020年开始构建其星座。然而&#xff0c;对于这家英国公司来说&#xff0c;这是一个艰难的旅程&#xff0c;OneWeb于2020年3月宣布破产&#xff0c;并认为covid-19大流行是一个主要因素。OneWeb星座当时仅完成…

toto的2023年终总结

第一次写年终总结&#xff0c;其实顺带是把大学四年的学习都给总结了一下&#xff0c;称之为大学总结更为合适吧&#xff1f; 其实把年终总结发在CSDN上有些不适&#xff0c;之前一直想着搭一个自己的博客也因为种种事情一直没有完成&#xff0c; 索性发在这里了&#xff0c;作…

SpringBoot 请求参数

文章目录 一、简单参数实体参数数组集合参数日期参数Json参数路径参数 一、简单参数 原始方式 在原始的web程序中&#xff0c;获取请求参数&#xff0c;需要通过HttpServletRequest 对象手动获取。 SpringBoot方式 1.参数名与形参变量名相同&#xff0c;定义形参即可接收参数。…

负载均衡概述

负载均衡 负载均衡 建立在现有网络结构之上&#xff0c;它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 四层负载均衡 vs 七层负载均衡 四层负载均衡&#xff08;目标地址和端口交换&#xff09;…

安装与部署Hadoop

一、前置安装准备1、机器2、java3、创建hadoop用户 二、安装Hadoop三、环境配置1、workers2、hadoop-env.sh3、core-site.xml4、hdfs-site.xml5、linux中Hadoop环境变量 四、启动hadoop五、验证 一、前置安装准备 1、机器 主机名ip服务node1192.168.233.100NameNode、DataNod…

基于知识图谱的智能辅助需求管理体系介绍

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、背景 需求处理各环节的各参与方人员存在变更&#xff0c;知识背景不同&#xff0c;导致需求提出、分析设计、测试、交付各环节容易出现考虑不完整&#xff0c;从而限制了整个研发过程的效率以及质量的提…

Python编程-面向对象基础与入门到实践一书的内容拓展

Python编程-面向对象基础与入门到实践一书的内容拓展 通过编程&#xff0c;模拟现实生活中的事物编程&#xff0c;叫做面向对象编程&#xff0c;此过程也叫做实例化编程 简单类的创建 class Test():def __init__ (self,id):self.id iddef print_id(self):print(self.id)这里建…

掌握这十几个Python库才是爬虫界的天花板,没有你搞不定的网站!实战案例:Python全网最强电影搜索工具,自动生成播放链接

掌握这十几个Python库才是爬虫界的天花板,没有你搞不定的网站!实战案例:Python全网最强电影搜索工具,自动生成播放链接。 用来爬虫的十几个Python库。只要正确选择适合自己的Python库才能真正提高爬虫效率,到达高效爬虫目的。 1.PyQuery from pyquery import PyQuery as …