linux 2.6.X内核升级gitlab14.8.0以上版本失败

背景:最近由于测试服务器的gitlab版本过于老旧(13.10.3),出于安全考虑需要升级到14.10.*版本,服务器系统为老旧的red hat6.9,内核版本为2.6.*。

本以为会是一个简单的组件升级,没想到却非常周折!!!(难用,无语!)

首先了解到升级需要遵循官方推荐包的升级路径走,如图:

按照网上找的yum源升级教程,备份数据后,一路升上到14.0.12版本,此时gitlab一切正常。故继续升级到14.3.6版本,结果升完之后gitlab-ctl reconfigure报错,根据提示排查,发现是没有进行后台迁移导致的(升级到14.2版本都需要进行后台数据迁移),官方说明如下:

根据,官方文档给的批量手动迁移方法顺利迁移完毕之后gitlab恢复正常!

接着继续升到14.6.2,一切正常!继续,升到14.9.5版本,结果页面502报错!!!怎么一个组件升级这么多问题,吐了!排查日志几次没看到什么有价值的信息,没见到明显的报错信息。网上找方法各种扯蛋说法,最多的是说端口占用,直接把gitlab停止后发现并没有任何程序占用我配置设置的端口,尝试其他说法也无解!

后面反复重新加载配置,重启gitlab,查看gitlab状态(gitlab-ctl status),无意间发现puma和sidekiq这两个组件的pid一直在变,端口也没被占用,说明这两个东西一直没起来!

一通查找,排查还是没找到解决方法!

由于其他人要用gitlab所以只能进行回退到最后一个能运行的版本14.6.2,暂时作罢。

然后,在自己的虚拟机上测试升级,发现从14.6.2一直升到14.10.5版本都没报错,此时已经开始怀疑是系统的原因导致,但是没有证据!我虚拟机是centos 7系统,内核3.10.0

后续在服务器上反复升级,回退gitlab版本进行测试,发现最后一个能运行的版本是14.7.7一旦升级到14.8.0版本立马就重复上述502想象!

后面折腾累了,确认是不行之后,静下来认真排查日志:

查看日志常用命令:

# 查看所有的logs; 按 Ctrl-C 退出
sudo gitlab-ctl tail
# 拉取/var/log/gitlab下子目录的日志(查看拉取或者推送的错误日志)
sudo gitlab-ctl tail gitlab-rails
# 拉取某个指定的日志文件(查看gitlab运行组件报错信息)
sudo gitlab-ctl tail nginx/gitlab_error.log

最后在sudo gitlab-ctl tail gitlab-rails日志中发现有报错信息:

所以想看看这个lib/gitlab/metrics/system.rb文件中变量究竟是什么,为什么报错,结果输入路径没找到这个文件。。

然后去网上搜索,没有看到有人遇到过这个问题,倒是看得了这个文件的官方gitlab地址,进去之后找到139行,发现写着这个:

 

切换到这个文件的14.7版本发现并没有这一行,自14.8版本之后就有这行了,所以基本确定就是这里问题了。

查找后发现clock_gettime是个linux上的函数,他的参数种类有很多CLOCK_BOOTTIME是其中一种,故想知道这个函数运行出来是什么结果,网上找个资料,写了个简单c来运行此函数,C的内容如下:

 vim test.c

#include <time.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc,char** argv)
{
 struct timespec time1 ={0,0};
 clock_gettime(CLOCK_BOOTTIME,&time1);
printf("time1.tv_sec:%ld,time1.tv_nsec:%ld\n\n",time1.tv_sec,time1.tv_nsec);
return 0;


}

 虚拟机运行结果如下:

可见是能正常运行的!

然后在测试服务器上运行:

 

 得到的结果全是0!根据官方的说法查看/proc/uptime和我的函数运行结果进行比对:

虚拟机上的运行结果:

服务器运行结果:

 

发现虚拟机上运行结果接近,而服务器的完全不一样,故实锤就是服务器机子无法运行这个函数导致的问题!!!

找到其他同样是2.6.*内核的服务器执行test.c文件,发现结果完全一致,找到内核为3.10.*的服务器运行结果和我虚拟机运行结果一致。

至此,确定是内核问题导致的,故尝试在3.10.*的服务器部署gitlab14.10.*版本,发现一切正常,问题解决!

整了好几天,真的整吐了,尤其是每一次升级和回退都要十几分钟下载安装,浪费了大量时间,不理解为什么这种内核不兼容的情况官方不写在版本文档上,让用户自己去摸索,浪费生命!

最后想说:老版linux系统,狗用了都撞墙! 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值