【实用经验分享】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的技术支持同学了。

相关文章
|
测试技术
解决Bug应有的心态和解决方法的一些思路、方法和心得
永远要相信程序是不会骗你的,是自己在处理理逻辑中出问题,而在特定的环境中才会出现或者是自己压根就想不到情况下出现。 前几天在处理一个接口任务时,在测试环境跑是一点都没有,但在正式环境却没有将数据拉下来。没有报任何错误,一度怀疑、抱怨! 还好最后找到问题解决了!
97 0
|
前端开发
一次偶然的机会,让我遇见了amis之排错总结(持续更新,因为还在学习)(下)
一次偶然的机会,让我遇见了amis之排错总结(持续更新,因为还在学习)
|
JavaScript 搜索推荐 Java
一次偶然的机会,让我遇见了amis之排错总结(持续更新,因为还在学习)(上)
一次偶然的机会,让我遇见了amis之排错总结(持续更新,因为还在学习)
|
8月前
|
存储 敏捷开发 安全
软件开发有那些陷阱?如何避坑?
软件开发有那些陷阱?如何避坑?
88 4
|
编解码 前端开发 JavaScript
非科班出身的人想要顺利地转型成为编程领域的专业人士的建议
@[TOC](目录) 非科班想要丝滑转码,可以参考下述步骤: # 1、具体方法 1. 了解想要从事的领域:比如前端开发、数据分析、产品经理等。通过互联网进行调查,了解这些领域的职责、技能需求、发展前景等。 2. 学习基础知识:了解领域后,可以通过互联网、在线课程、书籍等途径学习基础知识。例如,如果想成为前端开发者,需要了解 HTML、CSS 和 JavaScript 等编程语言,掌握前端框架 (如 React、Angular 和 Vue 等) 和版本控制工具 (如 Git 等) 的基本使用。 3. 实践项目:掌握基础知识后,可以尝试实践项目,巩固所学知识并提高技能。例如,可以构建一个
|
Cloud Native Go Python
当面试遇到难题:解决棘手问题的三大策略
当面试遇到难题:解决棘手问题的三大策略
199 0
|
前端开发 测试技术 程序员
程序员成长第八篇:做好测试工作
程序员成长第八篇:做好测试工作
222 0
|
JavaScript UED
10月工作经验总结
10月工作经验总结
10月工作经验总结
|
前端开发 JavaScript 网络安全
工作中遇到的问题和一些经验总结
工作中遇到的问题和一些经验总结
工作中遇到的问题和一些经验总结
|
前端开发
一次偶然的机会,让我遇见了amis之排错总结(持续更新,因为还在学习)(中)
一次偶然的机会,让我遇见了amis之排错总结(持续更新,因为还在学习)