内网离线部署redis7.2

狂自私 / 2024-01-30 / 原文

环境说明

镜像系统:CentOS-7-x86_64-Everything-1908.iso

网络:

内网地址:192.168.24.20

无其他网卡

内存:8GB

CPU:1颗4核

硬盘:64GB

安装方式:带GUI的服务器

主机名:data0

另外,内网环境中有一个harbor服务主机,上面有nfs服务、ntpd服务、harbor镜像仓库,此主机可以连接公网,我使用它来准备必要文件,data0主机通过nfs共享获取文件。

基础环境准备

配置服务

cd /etc/yum.repos.d/ &&  tar -cf all.tar *.repo --remove-files

echo "192.168.24.5 harbor" >> /etc/hosts

mkdir /nfs && chmod 777 -Rf /nfs/

echo "harbor:/nfs /nfs nfs defaults 0 0" >> /etc/fstab

mount -t nfs harbor:/nfs /nfs

#设置时间同步

systemctl disable chronyd.service && systemctl stop chronyd.service

timedatectl set-timezone 'Asia/Shanghai'

rm -rf /etc/localtime

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

#设置时间的配置文件

line_number=$(awk '/server 3.centos.pool.ntp.org iburst/{print NR}' /etc/ntp.conf) #这条语句是centos7特制的,其他版本不知道是不是这样

sed -i -e 's/^server/#server/' /etc/ntp.conf

sed -i "$line_number a server harbor iburst" /etc/ntp.conf

line_number=$(awk '/restrict ::1/{print NR}' /etc/ntp.conf)

ntpdate harbor

systemctl start ntpd &&systemctl enable ntpd

 

 

内核升级

cd /nfs/kernerl/ && rpm -ivh kernel-lt-5.4.267-1.el7.elrepo.x86_64.rpm

grub2-set-default 0

#查看内核列表:

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

grub2-mkconfig -o /boot/grub2/grub.cfg

reboot

准备redis相关组件和源码

此步骤在harbor上执行

mkdir /nfs/redis/ && cd /nfs/redis/

#下载最新的稳定版

wget https://download.redis.io/redis-stable.tar.gz

#编译工具

yumdownloader --destdir /nfs/redis/ gcc gcc-c++ kernel-devel

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/cpp-4.8.5-44.el7.x86_64.rpm

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libstdc++-4.8.5-44.el7.x86_64.rpm

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libgcc-4.8.5-44.el7.x86_64.rpm

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libstdc++-devel-4.8.5-44.el7.x86_64.rpm

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libgomp-4.8.5-44.el7.x86_64.rpm

 

mkdir /nfs/python3 && cd /nfs/python3

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

 

mkdir /nfs/zlib/ && cd /nfs/zlib/ && yumdownloader --destdir /nfs/zlib/ zlib*

 

mkdir /nfs/tcl && cd /nfs/tcl

yumdownloader --destdir /nfs/tcl/ tcl*

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/tk-8.5.13-6.el7.x86_64.rpm

wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/postgresql-libs-9.2.24-7.el7_9.x86_64.rpm

编译和安装redis

此步骤在data0上执行.

#安装编译工具

yum localinstall /nfs/redis/*.rpm -y

#编译python3

yum localinstall /nfs/zlib/*.x86_64.rpm

#建议断开ssh重连

mkdir python3.6 && cd /python3.6/

cp /nfs/python3/Python-3.6.8.tgz ./

tar xf Python-3.6.8.tgz

cd Python-3.6.8/

#编译构建

./configure

make

#一般没有明显的提示说失败就是成功了

make install

#有如下提示则成功:

#Successfully installed pip-18.1 setuptools-40.6.2

#安装tcl,用于测试

yum localinstall /nfs/tcl/*.x86_64.rpm

#编译redis

mkdir /redis-stable && tar -xf /nfs/redis/redis-stable.tar.gz -C / && cd /redis-stable

#编译

make

#等待编译结束,没那么快,也没那么慢

#测试

make test

#有如下输出则表示测试通过

\o/ All tests passed without errors!

 

Cleanup: may take some time... OK

make[1]: Leaving directory `/redis-stable/src'

#安装进入系统

make install

自此,安装结束。

FQA

max_latency <= 40

可能在make test 的时候会出现如下警告:

!!! WARNING The following tests failed:

 

*** [err]: Active defrag - AOF loading in tests/unit/memefficiency.tcl

Expected 215 <= 40 (context: type eval line 37 cmd {assert {$max_latency <= 40}} proc ::test)

Cleanup: may take some time... OK

make[1]: *** [test] Error 1

make[1]: Leaving directory `/redis-stable/src'

make: *** [test] Error 2

 

这其实是再说延迟的问题,由于我是在虚拟机中部署的,并且还是X79平台的老设备了,就是会有一定的延迟,可以不管它。如果一定要解决,请修改这个文件的内容:

vi tests/unit/memefficiency.tcl

 

将其修改为大于实际值的值(比如我这儿的实际值为215,我将其修改为300):

 

然后make clean清理。执行make && make test重新编译测试。

$frag >= $expected_frag

*** [err]: Active defrag big keys in tests/unit/memefficiency.tcl

Expected 1.59 >= 1.7 (context: type eval line 73 cmd {assert {$frag >= $expected_frag}} proc ::test)

 

调整预期值:

 

然后make clean清理。执行make && make test重新编译测试。