CentOS 使用 YUM 方式升级内核(Kernel) 并开启 BBR 网络加速

TCP BBR来自谷歌几个工程师,主要作用是用来加速,属于单边加速TCP连接(Google TCP BBR介绍:https://blog.csdn.net/dog250/article/details/52830576)(Linux Kernel 4.9中TCP BBR算法的科普解释:https://blog.csdn.net/dog250/article/details/54754784)。 魔改版BBR(BBR POWERED)是在原版BBR基础上改了相关配置参数而成,据说实测效果比BBR和锐速都牛逼。BBR这一套已经被google开源并提交至linux内核,所以只需升级到最新linux内核然后设置相关参数就ok,无需安装其它“多余”的软件。

1、查看centos版本
cat /etc/centos-release
 
2、查看当前内核
uname -r
2.6.32-358.el6.x86_64
 
3.安装ELRepo仓库(关注于硬件的YUM仓库,epel 主要是软件扩展YUM仓库)
# ELRepo官方网站:http://elrepo.org
# kernel-ml官方网站:http://elrepo.org/tiki/kernel-ml
# Linux Kernel 官方网站:https://www.kernel.org/
 
# 导入elrepo软件源的GPG公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
 
#导入elrepo软件源
# centos6.0+版本的,ELRepo for RHEL-6, SL-6 or CentOS-6:
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
 
# centos7.0+版本的,安装 ELRepo for RHEL-7, SL-7 or CentOS-7:
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
 
# 清除缓存
yum clean all
 
# 重建缓存
yum makecache
 
3.安装新内核
# 安装新内核kernel-ml(ml=mainline)
yum --enablerepo=elrepo-kernel install kernel-ml -y
 
# 或者安装新内核kernel-lt(lt=longtime)
yum --enablerepo=elrepo-kernel install kernel-lt -y
----------------------
# 若只想升级特定的内核版本,或者由于不能访问到源地址,也可以用以下方法。
# 先在以下两个网址中找到想要的内核。
# 官方源
http://elrepo.reloumirrors.net/kernel/el7/x86_64/RPMS/
 
# 香港镜像,最新版本会比官网延迟1、2天
http://hkg.mirror.rackspace.com/elrepo/kernel/el7/x86_64/RPMS/
 
# 例如目标版本是: kernel-ml-4.5.2-1.el7.elrepo.x86_64.rpm
# 链接地址为:
http://hkg.mirror.rackspace.com/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.5.2-1.el7.elrepo.x86_64.rpm
 
# 执行以下命令安装
yum install -y http://hkg.mirror.rackspace.com/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.5.2-1.el7.elrepo.x86_64.rpm
----------------------
----------------------
# CentOS 下最新版内核 headers 安装方法(可以不更新)
yum -y install kernel-ml-headers
 
# 或者执行以下命令:(可以不更新)
yum --enablerepo=elrepo-kernel -y install kernel-ml-headers
 
# 根据 CentOS 版本的不同,此时一般会出现类似于以下的错误提示:
Error: kernel-ml-headers conflicts with kernel-headers-2.6.32-696.20.1.el6.x86_64
Error: kernel-ml-headers conflicts with kernel-headers-3.10.0-693.17.1.el7.x86_64
 
# 因此需要先卸载原版内核 headers ,然后再安装最新版内核 headers。执行命令:
yum remove kernel-headers
----------------------
# 查看已安装内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
 
# 输出结果类似以下内容:
# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (4.16.2-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux 7 Rescue 5a67985d75d94c9fa703a4a0773fd2d7 (3.10.0-693.21.1.el7.x86_64)
2 : CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)
3 : CentOS Linux (4.10.4-1.el7.elrepo.x86_64) 7 (Core)
4 : CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
5 : CentOS Linux (0-rescue-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 7 (Core)
 
# 把新内核(4.16.2-1.el7.elrepo.x86_64)设置为默认
# 0 为内核前序号
grub2-set-default 0
 
---------------------
vi /etc/default/grub
# 修改成 GRUB_DEFAULT=0
 
# 重新编译内核启动文件,以后升级完内核也要执行一次
grub2-mkconfig -o /boot/grub2/grub.cfg
 
# CentOS 6 的话,执行命令:
 
sed -i 's/^default=.*/default=0/g' /boot/grub/grub.conf
 
# CentOS 7 的话,执行命令:
 
grub2-set-default 0
---------------------
# 重启主机
reboot
 
# 查看当前内核版本
uname -r
# 返回信息如下:
4.16.2-1.el7.elrepo.x86_64
 
-------------------------
 
4.启用BBR
# 升级完内核,自动按最新内核启动,修改以下文件
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
#保存生效
sysctl -p
 
#查看内核是否已开启BBR
sysctl net.ipv4.tcp_available_congestion_control
 
#查看BBR是否启动
lsmod | grep bbr
 
# 删除旧内核
rpm -qa | grep kernel
yum autoremove kernel-3.10.0-327.13.1.el7.x86_64

————————-
关于IPV6开启BBR
IPV6 在BBR开启后默认支持。

原文

Both sysctl (net.ipv4.tcp_allowed_congestion_control and net.ipv4.tcp_available_congestion_control) and /proc entries (/proc/sys/net/ipv4/tcp_congestion_control) applies to every IPv4 and IPv6 TCP connections.
———————

# 如果是 Debian/Ubuntu 系统,则需要手动下载最新版内核来安装升级。
# 去这里下载最新版的内核 deb 安装包。
# 如果系统是 64 位,则下载 amd64 的 linux-image 中含有 generic 这个 deb 包;
# 如果系统是 32 位,则下载 i386 的 linux-image 中含有 generic 这个 deb 包;
# 安装的命令如下(以最新版的 64 位 4.12.4 举例而已,请替换为下载好的 deb 包):

dpkg -i linux-image-4.12.4-041204-generic_4.12.4-041204.201707271932_amd64.deb

# 安装完成后,再执行命令:
/usr/sbin/update-grub

# 最后,重启 VPS 即可。
————————-

特别说明
如果你使用的是 Google Cloud Platform (GCP)更换内核,有时会遇到重启后,整个磁盘变为只读的情况。只需执行以下命令即可恢复:

mount -o remount rw /

———————————-
BBR是可以与锐速媲美的加速方案,无奈BBR必须在Linux内核4.9以上版本才能支持,而OpenVZ突破这个限制的办法,就是最近非常火爆的LKL(Linux Kernel Library)了!还有个叫UML –用户态 Linux 内核,一个可以在不重启电脑、不影响正常使用的情况下进行内核编程调试的工具。

其实lkl和rinetd都是用lkl,区别是lkl脚本用haproxy转发,rinetd脚本用rinetd转发。lkl需开启TUN/TAP,是基于端口段的转发加速;rinetd不需要TUN/TAP,是基于一个个端口的转发加速。

lkl的要求ldd版本2.14以上,有些渣主机商的版本很低

LKL 相比 uml 好处还是不少的,只需要转发端口,无论是 ssr 都是装在母鸡上,和你平时使用无差,而 UML 需要在 UML 系统里安装。 LKL 的占用资源也少。不过据说 LKL 的加速效果没有 UML 好。LKL只负责转发端口,不管是 SS&SSR 都是装在母鸡上,和你平常使用无差,而UML需要在UML系统里部署。LKL的占用资源也更少。但是听说LKL的加快结果没有UML好。

LKL 使用前置需求,只适用 openvz

LKL 要求 ldd 的版本至少在 2.14 ,目前我测试下来,如果不想折腾建议直接安装 CentOS7 , Debian8 和 Ubuntu16
安装包只使用 64bit 的系统。
默认的端口转发只转发了 9000-9999 的端口,如果你不想费心修改,请把 ssr 等应用的端口设在这个范围
LKL使用前置要求

1、LKL要求ldd的版本最少在2.14,目前伏笔VPS测试下来,如果不想折腾提议直接部署CentOS7,Debian8和Ubuntu16。

2、部署包只使用64bit的系统。

3、原始的端口转发只转发了9000-9999的端口,如果你不想费神修正,请把55r等应用的端口设在这个范畴。

4、只适用openvz,后台需开启TUN/TAP。

安装 LKL 一键包命令

wget –no-check-certificate https://github.com/91yun/uml/raw/master/lkl/install.sh && bash install.sh

部署LKL

1、LKL一键包command

wget –no-check-certificate https://github.com/91yun/uml/raw/master/lkl/install.sh && bash install.sh

注意,必须 root 运行

2. 如何判断是否安装成功
ping 10.0.0.2
如果 10.0.0.2 能 ping 通说明成功, ping 不通说明失败

3.如果修改转发端口
1.修改/root/lkl/run.sh,查找9000-9999,改成你想要的端口段
2.修改/root/lkl/haproxy.cfg查找9000-9999,改成你想要的端口段
3.重启vps

使用 BBR 的前提是自己的服务器 是KVM框架的,我的Bandwagon 服务器原来用 Shadowsocks 传输速度大约在 10-20k/s 看Youtube视频都卡不行,开启 BBR

后 速度稳定在 100+/s 太棒了。
1. 更新内核

wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh

2. 启用BBR

echo “net.core.default_qdisc=fq” >> /etc/sysctl.conf
echo “net.ipv4.tcp_congestion_control=bbr” >> /etc/sysctl.conf
sysctl -p #保存生效

sysctl net.ipv4.tcp_available_congestion_control #查看内核是否已开启BBR
lsmod | grep bbr #查看BBR是否启动
———————

欢迎投稿、分享转载,转载请保留如下信息:格物躬行博客[https://www.go2do.net]

本文由 [go2do] 原创,本文链接: https://www.go2do.net/linux/how-use-bbr-yum-update-kernel-centos.html



You may also like...

发表评论

电子邮件地址不会被公开。

本页共执行136次数据库查询,耗时0.325秒,使用内存 1.77 MB