技术博文 · 2021-04-20 0

jumpserver 由1.4.8更新到2.9.0,中间遇到的问题

jumpserver 1.4.8升级到2.8.3中间遇到的问题

先上一官方文档的连接地址:https://docs.jumpserver.org/zh/master/install/upgrade/upgrade/

根据官方文档进行升级操作发现提示问题

image-20210416185302244

[root@jumpserver jumpserver-installer-v2.9.0]# ./jmsctl.sh start
Creating jms_core ... done
Creating jms_guacamole ... done
Creating jms_lina      ... done
Creating jms_luna      ... done
Creating jms_koko      ... done
Creating jms_celery    ... done
Creating jms_nginx     ... done
[root@jumpserver jumpserver-installer-v2.9.0]# ./jmsctl.sh restore_db /opt/jumpserver.sql
开始还原数据库: /opt/jumpserver.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1049 (42000): Unknown database 'jumpserver'
read unix @->/var/run/docker.sock: read: connection reset by peer
[ERROR] 数据库恢复失败. 请检查数据库文件是否完整, 或尝试手动恢复!
[root@jumpserver jumpserver-installer-v2.9.0]# ./jmsctl.sh restore_db /opt/jumpserver.sql
开始还原数据库: /opt/jumpserver.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[SUCCESS] 数据库恢复成功!
[root@jumpserver jumpserver-installer-v2.9.0]# ./jmsctl.sh restart
Stopping jms_core ... done
Stopping jms_koko ... done
Stopping jms_guacamole ... done
Stopping jms_lina ... done
Stopping jms_luna ... done
Stopping jms_nginx ... done
Stopping jms_celery ... done
Removing jms_core ... done
Removing jms_koko ... done
Removing jms_guacamole ... done
Removing jms_lina ... done
Removing jms_luna ... done
Removing jms_nginx ... done
Removing jms_celery ... done


Creating jms_core ... done

ERROR: for koko  Container "4dbd3e047e42" is unhealthy.

ERROR: for nginx  Container "4dbd3e047e42" is unhealthy.

ERROR: for celery  Container "4dbd3e047e42" is unhealthy.

ERROR: for lina  Container "4dbd3e047e42" is unhealthy.

ERROR: for guacamole  Container "4dbd3e047e42" is unhealthy.

ERROR: for luna  Container "4dbd3e047e42" is unhealthy.
ERROR: Encountered errors while bringing up the project.
[root@jumpserver jumpserver-installer-v2.9.0]# 

问题背景:新到一家公司,他们使用的jumpserver的版本比较老了

image-20210416184150627

根据之前的新闻和使用习惯,以及为后续统一服务器管理等操作,想把版本升级到最新。

该文档写于2021年4月16日

第一次升级的时候是2021年4月14日,那个时候最新版本还是2.8.3,现在已经是2.9.0了。可见jumpserver的更新迭代速度之快。好了废话不多说。讲一下这次升级中间遇到的问题

image-20210416110427330

image-20210416184528686

这个问题最主要的就是在同步表结构的时候速度有点慢

我需要同步的数据库导出的文件大小为957M,同步耗时差不多35分钟左右。据jumpserver的内部人员介绍,说是顺丰那边的升级,当时使用了一整天来做db的同步更新。所以在这里需要有点耐心~

一定要等到出现如下信息的时候再去启动服务

image-20210416184918749

 

首先升级的时候发现上面的问题,然后就各种查资料,其实官方的文档上面都已经给出来了,但是没有仔细认真的阅读。

找了另外一台电脑安装了vm 然后起了一个centos7.9,安装完jumpserver 2.8.3启动的时候提示

[root@localhost jumpserver-installer-v2.8.3]# ./jmsctl.sh start
Creating jms_mysql ... done
Creating jms_redis ... done

ERROR: for core  Container "f43dfd58d697" is unhealthy.
ERROR: Encountered errors while bringing up the project.

这个提示是因为服务器的内存配置没有满足最低要求。需要2c8G的最低服务器配置

 

从1.4.8升级到1.5.4的版本可以参考

https://jumpserver.readthedocs.io/zh/1.4.8/upgrade.html

 

中间遇到问题的时候去google查询答案,到https://github.com/jumpserver/jumpserver/issues 去搜索的时候发现了有个哥们说了一下这个。

image-20210416174207251

然后立马加了jumpserver的微信群 https://docs.jumpserver.org/zh/master/about/contact/

image-20210419173049528

群里面简单描述了一下自己遇到的问题,大神立马给了回复。相当感人~,这里推一下他的微信。

image-20210419173236790

 

image-20210419174035146

image-20210419174049112

image-20210419174103642

直接上手给我远程演示了。

在演示的过程中发现了其中用了一个mysql_upgrade的命令,目前来看这个可能是因为mysql版本跨度的问题。默认是将mysql5.6的数据导入mysql5.7的数据应该没啥问题。

最后还一个尴尬的问题是,我本机开了浏览器的代理,最后通过nginx做反向代理的时候发现一直接提示404,之前一直怀疑是不是nginx哪里配置除了问题,加了日志,发现请求根本没有过来,后面通过浏览器F12排查到是应为请求走了代理。

image-20210419174454449

image-20210419174505476

如果出现系统用户登陆不了的问题,说明是配置文件里面的sercret和token没有修改为原来的。

2.6.0之后的版本配置文件为/opt/jumpserver/config/config.txt 所以一定要注意。

使用nginx作为代理入口,配置ssl证书,可以参考:

server {
    listen 80;
    server_name jumpserver.XXX.com _;  # 自行修改成你的域名
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name          jumpserver.XXX.com;  # 自行修改成你的域名
    ssl_certificate      /opt/nginx/sslkey/XXX.com.crt;  # 自行设置证书
    ssl_certificate_key  /opt/nginx/sslkey/XXX.com.key;  # 自行设置证书
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_protocols TLSv1.1 TLSv1.2;
    add_header Strict-Transport-Security "max-age=63072000" always;
    client_max_body_size 4096m;  # 录像及文件上传大小限制
    location / {
        # 这里的 ip 是后端 JumpServer nginx 的 ip
        proxy_pass http://10.122.2.185:8080;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    error_log /opt/nginx/logs/jumpervr2.9.0_error.log;
    access_log /opt/nginx/logs/jumpervr2.9.0_access.log;
}

俗话曰:能管好1000台服务器,不一定能管理好10个人。机器是死的人是活的。但是管理的思想和理念应该是相通的。