ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Jumpserver堡垒机生产环境部署实战:从选型到Docker Compose落地

Jumpserver堡垒机生产环境部署实战:从选型到Docker Compose落地 1. 为什么我会选择Jumpserver以及部署前的版本与架构决策先说一下我当时的核心场景公司服务器数量到了二十多台开发、测试、生产环境混在一起SSH密钥没人统一管有人离职了还得挨个服务器删公钥经常漏掉某几台。更头疼的是领导问起来“昨天谁动过那台生产服务器”谁也答不上来。这种状态下上堡垒机已经不是选择题而是迟早要做的必答题。当时市面上的方案其实有几个方向商业堡垒机比如之前热搜里提到的明御堡垒机部署简单、功能齐全但按资产数收费不便宜开源方案里Jumpserver是知名度最高的还有另外一些轻量工具比如Teleport、NPS那类带简单审计能力的跳板机。我在对比之后选了Jumpserver原因有三点第一功能边界完整它不只是“跳板”还自带认证、授权、审计、账号管理这四大块第二社区活跃网上遇到问题能找到大量已经踩过坑的案例——这一点在你部署的时候会深有体会第三它支持组件化部署可以先单机跑起来后面规模大了再拆组件不用一上来就设计一个复杂的分布式架构。版本选择上我需要认真提醒一句。当时Jumpserver稳定版是v2.x系列后来到了v3.0之后组件和目录结构都做了比较大的调整热搜词里有一条“jumpserver升级到3.0后原来的系统账号没了”这问题到现在都有人在踩。如果你现在新部署我会建议直接用官方推荐的当前稳定版本不要因为网上老教程多就去部署v2.x版本。我第一次部署时就是照着旧教程装v2.28后来想升v3发现存量配置迁移还有一些需要注意的地方——这部分我在后面单开一节讲。部署架构上我选择的是标准的单机all-in-one方式Jumpserver核心服务、KoKo组件负责SSH协议接入、Lion组件负责Web终端接入、数据库和Redis全部跑在同一台8C16G的云主机上。这个配置对一百台以内的资产管理规模是完全够用的。官方文档里其实推荐了一个更稳妥的部署路径先用Docker方式把核心服务跑起来再根据自己的需求选择是否额外部署KoKo与Lion组件。但如果你是企业正式环境使用我建议你直接采用docker-compose编排的方式部署因为升级和回滚都方便配置也好管理——具体操作我下一节写。做过一次之后我的体感是Jumpserver架构最值得先搞清楚的是“组件各自负责什么”这件事。不要稀里糊涂把所有服务当成一个黑盒去部署。你搞清楚之后后面排查故障的效率会高很多。Jumpserver的核心组件大致可以分为core核心API服务负责资产、用户、授权、审计等数据的处理和持久化它是整个系统的心脏KoKo负责SSH和SFTP通道的接入用户从终端SSH到堡垒机时实际打交道的是它Lion负责Web端网页终端和VNC协议支持通过浏览器直接操作目标主机Celery Worker处理异步任务比如批量推送系统用户、执行任务等Nginx统一对外入口做反向代理和Web资源服务MySQL RedisMySQL存放业务数据Redis承担缓存和Celery的任务队列。表格列出来更清楚组件职责对应端口关键配置coreAPI服务、鉴权、资产管理8080SECRET_KEY、BOOTSTRAP_TOKENKoKoSSH/SFTP接入组件2222与core通信的TOKENLionWeb终端/VNC接入组件8081依赖core APINginx对外Web入口80/443反向代理至core/LionMySQL业务数据存储3306独立数据库库名Redis缓存与任务队列6379无特殊要求组件之间通过密钥和Token互相通信所以你在配置环境变量时SECRET_KEY和BOOTSTRAP_TOKEN这两个值必须保持一致很多部署失败都是因为这两个值配乱了。2. 生产环境部署全流程从脚本安装到首次登录我在部署时没有使用官方提供的一键安装脚本虽然它能装好但你在后续管理配置时会觉得不够透明而是选择了Docker Compose方式。下面这套流程我是在全新CentOS 7.9服务器上完整跑通的其他发行版差异不大关键是在起Docker之前把系统依赖和防火墙准备好。2.1 系统预配置、Docker环境与Compose文件的准备服务器配置最低建议4C8G磁盘100G以上——因为审计录像和日志会持续增长磁盘给大了免得后面迁移。系统准备好之后先做三件事更新系统源、关闭SELinux或设置为permissive、配置防火墙放行端口。SELinux不关的话Docker挂载目录和容器内进程的权限问题会让你排查到怀疑人生如果你对SELinux策略不熟悉建议直接setenforce 0并修改/etc/selinux/config为SELINUXpermissive然后在防火墙上放行80、443、2222这三个端口firewall-cmd --permanent --add-port80/tcp firewall-cmd --permanent --add-port443/tcp firewall-cmd --permanent --add-port2222/tcp firewall-cmd --reload2222端口是KoKo对外提供SSH接入的端口用户在测试连接时容易忘记这个端口只允许从堡垒机所在网络访问生产环境建议不要直接暴露到公网。如果你有云安全组在安全组层面只放行来源IP。接下来安装Docker和Compose插件。这一步不同系统版本差异比较大我当时用的是官方推荐的方式# 安装docker-ce及docker-compose插件 curl -fsSL https://get.docker.com | bash systemctl enable --now docker # 验证 docker --version docker compose version然后使用官方GitHub仓库里现成的docker-compose.yml作为底座。这个文件官方会持续维护里面的MySQL、Redis、Core、KoKo、Lion镜像版本都是配套发布的不需要自己改动镜像版本否则容易
返回列表