【实用经验分享】JumpServer部署教训:避免自信陷阱,谨慎行事

本文涉及的产品
.cn 域名,1个 12个月
简介: 本文是关于使用JumpServer作为堡垒机进行服务器运维管理的经验分享。作者讲述了选择JumpServer的背景、从2.5.0版本升级到2.9.2版本的过程,以及在大厦断电后重新部署服务时遇到的挑战。文章详细描述了解决nginx和https配置问题的方法,并强调了在部署过程中保持谨慎、利用官方文档以及社区支持的重要性。最后,作者提到了数据迁移的问题,指出虽然旧数据无法直接融合到新版本中,但通过手动重新添加,能够顺利完成数据迁移。

一、使用jumpserver的背景

两年前,为了统一管理本地和阿里云服务器资产,边学边练的选择了jumpserver堡垒机作为公司服务器运维管理工具,原因很简单:第一它是开源免费的,尽管它有企业版,但是免费的已经足够满足任何小公司了,哪怕是等保过级都没问题,第二是因为它的架构是python+Django+各种组件,恰巧呢本人也是python学者,所以部署起来也比较得心应手。(主要是兼职了公司运维,涨工资总要有点成绩!)

二、jumpserver2.5.0版本

一开始呢,版本不低,页面呢,也相当清新脱俗,主要是很省心,一键部署到位。

在这里插入图片描述

特色优势⚓︎
开源:零门槛,线上快速获取和安装;
分布式:轻松支持大规模并发访问;
无插件:仅需浏览器,极致的 Web Terminal 使用体验;
多云支持:一套系统,同时管理不同云上面的资产;
云端存储:审计录像云端存储,永不丢失;
多租户:一套系统,多个子公司和部门同时使用;
多应用支持:数据库,Windows远程应用,Kubernetes。

2.1、升级jumpserver2.9.2

在安装目录setuptools下执行:./jmsctl.sh upgrade v2.9.2 即可完成升级

在这里插入图片描述

然而,我更喜欢的是scripts目录下的脚本,里面有一键部署py3、mysql、redis、nginx等环境shell脚本;简直是大爱了,因为这些脚本是可以带走用到任何公司、任何服务器的,一键部署真的很省心(就是偷懒罢了,手动狗头~)

在这里插入图片描述

三、大厦断电

都怪自己作妖,把原来scripts目录下的脚本洗劫一空,导致大厦断电后,服务无法重启,jumpserver堡垒机就此瘫痪,不得已需要重新部署,当然可以选择手动和自动部署,目前自动会默认最新版本,而手动安装步骤略显繁琐,毅然决然的选择一键部署,然后这次自动安装还遇到了不少问题,多花费了3天时间来解决https问题。

  • 问题一:访问域名,很久都没有加载出来,在后台部署生产时,想看日志直接泪奔 - - !
这个很大可能是jumpserver部署内部出现错误,然后再是本地使用了natapp域名穿透问题,没有很好的调试通过;
  • 问题二:访问服务器,提示websocket问题;文档上说是ws配置问题
    在这里插入图片描述
3.1、解决nginx/https问题,还需要从文档入手

在这里插入图片描述

  • 如果需要自定义 Nginx 配置文件, 可以参考此处
# Todo: May be can auto discovery
upstream http_server {
#  sticky name=jms_route; # 这个不懂什么意思,但是要想访问https就需要注释掉,因为启动jms_lb容器直接报错
  server web:80;
  # server HOST2:80;  # 多节点
}

server {
  listen 80;
  server_name demo.jumpserver.org;  # 自行修改成你自己的域名
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl http2;
  server_name demo.jumpserver.org;      # 自行修改成你自己的域名
  server_tokens off;
  ssl_certificate cert/server.crt;      # 修改 server.crt 为你的证书 (pem, crt 格式均可), 不要改路径 certs/
  ssl_certificate_key cert/server.key;  # 修改 server.crt 为你的证书密钥文件, 不要改路径 certs/
  ssl_session_timeout 1d;
  ssl_session_cache shared:MozSSL:10m;
  ssl_session_tickets off;
  ssl_protocols TLSv1.1 TLSv1.2;

  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;
  add_header Strict-Transport-Security "max-age=63072000" always;

  client_max_body_size 5000m;  # 上传文件大小限制

  location / {
    proxy_pass http://http_server;
    proxy_buffering off;
    proxy_request_buffering off;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_set_header X-Forwarded-For $remote_addr;

    proxy_ignore_client_abort on;
    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 6000;
  }
}
  • 这里需要特别提醒,在生成jumpserver配置的时候,尤其是启动了https,那么/opt/jumpserver/config/nginx/下的conf配置文件是映射到容器jms_lb的/etc/nginx/conf.d目录下的default.conf;所以需要停止jms_lb容器,再修改宿主机的lb配置,重启jms_lb容器就好了。

四、终于是把服务器给搭建起来了

从一开始反复的卸载部署jumpserver堡垒机,始终无法正确的在外部使用https访问堡垒机,然后一直纠结nginx,然而最大的问题就是jumpserver捆绑了ng,其实就是jms_web同一个镜像起了两个容器,其中还有core这个核心组件;不过话说回来,这次经验教训,不要心浮气躁,是问题最终都会得到解决,但是也不要忽略别人的帮助文档,不然凭自己一个人想要吃透一个相对较大的项目,还是很费力的。

五、那原来的数据怎么办呢?

尽管原来的数据都留下来了,但实在无法与新版本的数据结构相融合;所以只能在新环境重新手动添加了,好在有了第一次的经验,而且服务器也不算很多,维护起来也很方便,所以整体耗时不大。只是有点对不起jumpserver的技术支持同学了。

相关文章
|
6月前
|
设计模式 算法 程序员
程序员为何需要反复修改Bug?探寻代码编写中的挑战与现实
作为开发者,我们在日常开发过程中,往往会遇到反复修改bug的情况,而且不能一次性把代码写的完美无瑕,其实开发项目是一项复杂而富有挑战性的任务,即使经验丰富的程序员也难以在一次性编写完美无瑕地完成代码,我个人觉得一次性写好代码是不可能完成的事情。虽然在设计之初已经尽力思考全面,并在实际操作中力求精确,但程序员仍然需要花费大量时间和精力来调试和修复Bug。那么本文就来分享程序员需要反复修改Bug的原因,以及在开发中所面临的复杂性与挑战。
167 1
程序员为何需要反复修改Bug?探寻代码编写中的挑战与现实
|
6月前
|
存储 敏捷开发 安全
软件开发有那些陷阱?如何避坑?
软件开发有那些陷阱?如何避坑?
66 4
|
前端开发 测试技术 程序员
程序员成长第八篇:做好测试工作
程序员成长第八篇:做好测试工作
216 0
|
数据管理 项目管理
谈谈实施数据治理时常犯的10大错误
我所见过的最大的错误就是企业没有将文化变革纳为数据治理举措的一部分。到目前为止,这个错误是最大和最常见的错误,它最终可能导致数据治理计划的彻底失败。
|
监控 测试技术
软件测试面试题:软件配置管理工作开展的情况和认识?
软件测试面试题:软件配置管理工作开展的情况和认识?
95 0
|
设计模式 Serverless 领域建模
实战经验 | 怎样才能提升代码质量?
提升代码质量的三个有效方法:领域建模、设计原则、设计模式。
实战经验 | 怎样才能提升代码质量?
|
人工智能 项目管理 UED
50年软件经验收获的64个教训
1970年,我在大学上了第一门编程课(当然是FORTRAN)。在过去的半个世纪中,我花了很多时间从事软件工作:需求,设计,用户体验,编程,测试,项目管理,编写文档, 过程改进领导,撰写7本书和许多文章,进行咨询和培训。 当然,在这过程中还存在一些附带问题,例如获得有机化学博士学位(我的论文的三分之一是计算机代码)并担任研究科学家几年。 但基本上我是一个软件专家。 在过去的这段时间里,我积累了许多有关软件业务的见解。 在这里,我提供其中的64课。 也许您会发现它们像我一样有帮助。
269 0
|
存储 SQL 运维