ManGe Commander (指挥官)

作者: 李漫

产品所有人: 李漫

主页: commander.mange.work

邮箱: 2912882908@qq.com

一、 版本

  • 发布版本 v0.3
  • 文档版本 v0.3
  • 内部版本 v0.2.20221130

二、 简介

ManGe Commander 是轻量级一站式DevOps平台,是持续部署、持续集成的解决方案,也是服务器管理、操作、监控的解决方案,支持服务器在线终端,同时集成了Docker,Nginx等在线管理,支持快速部署网络代理和网络转发。

定位

  • 运维工具
  • 部署软件
  • 开发相关软件
  • 服务器管理工具
  • 在线管理工具

产品目的

  • 提升运维效率
  • 降低运维成本
  • 学习简单上手快
  • 提升部署效率
  • 精准监控与报警系统
  • 开发相关软件集成提升开发、测试、运维工作效率

三、 架构介绍

功能架构: 采用master/slave机制,master一对多的管理slave,为了高可用master支持集群;

master: 主要功能是提供操作界面(web UI),分发任务到slave,收集并分析slave上报的采集服务器数据进行监控,下发服务器的操作指令,网络地址注册中心等

slave: 主要功能是守护进程,docker操作,系统操作,采集服务器的性能数据,自动维护项目等

master与salve间的通讯: 数据交互使用UDP+TCP 实现的自定义通讯协议, 下载上传文件使用http/s协议

功能架构图:

网关: L4负载均衡,网络转发与代理(连接复用+池化技术+SO_REUSEPORT,中转耗时<1ms,抗高并发); 黑白名单,ip限流;应用场景:水平扩展微服务等等.

网关架构图:

四、 应用场景

  • 服务器监控
  • CI/CD
  • docker管理
  • 服务器可执行文件部署与进程管理
  • 服务器在线操作
  • 网关服务
  • Web TTY
  • [TODO]基于P2P分布式存储
  • [TODO]NAT penetration(内网穿透)
  • [TODO]CDN servers
  • [TODO]Proxy IP servers 管理中心

五、 下载地址

  • master
日期 版本 地址 版本说明 支持平台
20221130 v0.3 http://commander.mange.work/download ManGe Commander 文档 v0.3 unix、linux、macos、windows
20221111 v0.2 http://commander.mange.work/download ManGe Commander 文档 v0.2 unix、linux、macos、windows
20221024 v0.1 http://commander.mange.work/download ManGe Commander 文档 v0.1 unix、linux、macos、windows
  • slave
日期 版本 地址 版本说明 支持平台
20221130 v0.3 http://commander.mange.work/download ManGe Commander 文档 v0.3 unix、linux、macos
20221111 v0.2 http://commander.mange.work/download ManGe Commander 文档 v0.2 unix、linux、macos
20221024 v0.1 http://commander.mange.work/download ManGe Commander 文档 v0.1 lunix、linux、macos

六、 使用说明篇

1. 部署

1.1 部署Master

下载并在Master服务器上执行 ./master 即可

配置文件说明

# http server 端口
httpServer:prod: 18888# udp server 端口
udpServer:prod: 16666# tcp server 端口
tcpServer:prod: 17777# 可执行文件保存路径
exeStoreHousePath: "/media/data/exeStoreHouse"# 项目的可执行文件保存路径
projectPath: "/media/data/projectPath"# JWT  secret & expire
jwt:secret: asdasd786251ashdgjdbdexpire: 86400# 数据持久化保存路径
# data 常规数据持久化
# performance 性能采集持久化
dbPath:data: "/media/data/master_db/data.db"performance: "/media/data/master_db/performance.db"

1.2 部署Slave

例如: 拥有四台服务器, 192.168.0.9, 192.168.0.190, 192.168.0.191, 192.168.0.192

  1. 下载 slave_linux, 分别上传到每个服务器上
root@mange-PC:/home/mange# scp -r 'slave_linux_v0.1.2' 192.168.0.190:/home/
root@192.168.0.190's password:
slave_linux                                                                                        100%   12MB  39.7MB/s   00:00
configs.yaml                                                                                       100%  485   462.0KB/s   00:00
root@mange-PC:/home/mange# scp -r 'slave_linux_v0.1.2' 192.168.0.191:/home/
root@192.168.0.191's password:
slave_linux                                                                                        100%   12MB  39.9MB/s   00:00
configs.yaml                                                                                       100%  485   453.8KB/s   00:00
root@mange-PC:/home/mange# scp -r 'slave_linux_v0.1.2' 192.168.0.192:/home/
root@192.168.0.192's password:
slave_linux                                                                                        100%   12MB  61.5MB/s   00:00
configs.yaml                                                                                       100%  485   543.4KB/s   00:00
root@mange-PC:/home/mange#
  1. 在各个服务器上修改配置 configs.yaml
# master UDP 通讯地址
master:host: 192.168.0.9port: 16666# master HTTP通讯地址
masterHttp: "http://192.168.0.9:18888"# 可执行文件保存路径
exeStoreHousePath: "/home/exeStoreHousePath_Linux/"# 可执行文件日志保存路径
exeStoreHouseLogs: "/home/exeStoreHouseLogs/"# 项目的可执行文件保存路径
projectExeStoreHousePath: "/home/projectExeStoreHousePath_Linux/"# 数据持久化保存路径
dbPath:data: "/home/slave_linux_db/data.db"
  1. 执行 ./slave_linux
看见日志有打印主机信息则启动成功2022-10-19 22:24:35 |Info  |f=slave_linux/handler/host.go:48 | 主机名称 = node1
2022-10-19 22:24:35 |Info  |f=slave_linux/handler/host.go:51 | 系统平台 = linux
2022-10-19 22:24:35 |Info  |f=slave_linux/handler/host.go:54 | 系统版本 os_name+版号 = Linux version 3.10.0-1160.45.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Wed Oct 13 17:20:51 UTC 2021
2022-10-19 22:24:35 |Info  |f=slave_linux/handler/host.go:57 | 系统架构 = amd64
2022-10-19 22:24:35 |Info  |f=slave_linux/handler/host.go:60 | CPU核心数 = 8核
2022-10-19 22:24:35 |Info  |f=slave_linux/handler/host.go:63 | CPU name = Intel(R) Xeon(R) CPU           E5606  @ 2.13GHz
  1. 在master 首页上可见到Slave(服务器的信息)

2. 登录与安全

  • web操作界面安全方案
  1. 定期更新账号密码
  2. 白名单
  3. 暴力登录检验,一个ip只有五次试错机会,超过拉黑ip
  • master 与 slave 通讯安全方案
  1. 非对称加密

首次启用master会到注册界面(账号只注册一次,数据持久在 db文件,重置db文件等用于恢复出厂设置),见图:

登录界面进行登录,采用无状态登录JWT方案,见图:

登录错误超过限制次数, 见图:

登录成功后跳转到首页

3. 主页

首页分为功能图标区域与Slave列表;

【Slave(服务器)数量】 : 显示总服务器数量与在线服务器数量,点击进入【Slave】页面

【项目数量】 : 显示当前已经创建并运行的项目数量,点击进入【项目】页面

【报警数量】 : 显示当前报警的数量,报警来自于各个主机的性能超过监控指标和各个异常的提示,点击进入【监控管理】

【网关数量】 : 显示当前部署的网关数量,这里的网关是“commander“自带的,主要用于网络转发代理负载均衡,是基于L4的,点击进入【网关】

【可执行文件】 : 显示当前可执行文件数量,这里的可执行文件是上传到master的可执行文件,可以对可执行文件进行指定部署,监控,管理,在线修改配置等操作,点击进入【可执行文件管理】

【Docker】 : 该按钮点击可进入【Docker管理】

【使用手册(TODO)】 : 点击访问mange.work的“commander”的社区->在线使用文档

【社区(TODO)】 : 点击访问mange.work的“commander”的社区

【ManGe主页】 : 点击访问mange.work

Slave(服务器) 列表: 显示slave的基本信息,与加载页面时Slave采集的性能值CPU与MEM,还有操作按钮点击直接执行对其含义的功能。

4. Slave

服务器的可视化面板操作界面,可以在线操作和管理服务器,如图:

  • 【进程列表】 : 能查看进程信息与操作进程,如图:

  • 【端口使用列表】 : 能查看端口使用信息与操作占用端口的进程,如图:

  • 【环境变量】 : 能查看环境变量(TODO:在线增删改查系统环境变量),如图:

  • 【Docker管理】 : 进入该服务器的docker管理界面,如果服务未部署则没有任务信息,如图:

  • 【Hosts管理】 : 在线修改hosts文件,如图:

  • 【实时性能监控】 : 可以实时监控服务器性能

5. 记录

任务列表和操作记录, 如图:

6. 项目

项目是"commander"的特色功能,也是最核心的功能。

功能
  1. 部署可执行文件到指定主机
  2. 调度管理基于容器的项目,将镜像部署到多个或指定主机上
  3. 金丝雀发布更新镜像版本
  4. 通过"commander"自带网关功能代理与负载容器
  5. CI/CD
  6. 水平扩展副本,减少副本
  • 项目管理界面, 项目可以理解为k8s的“Deployments”, 如图:

  • 【新建Docker容器项目】 :

    网关转发原则: 网关端口 -> 注册中心(容器随机映射的端口) -> 容器端口

    故:

    【网关服务端口映射】 网关端口:容器端口

    【项目占用端口】 *:容器端口(容器端口映射则是随机)

    如下图,部署一个web服务,创建4个副本,会均匀部署到所有在线的Slave,web服务端口是12300, 创建一个网关代端口是12225部署到192.168.0.9上

  • 部署成功后如下图

  • 访问 192.168.0.9:12225

  • 【查看容器列表】 : 可以看到项目所有容器的信息

  • 现在需要升级镜像到v2版本,点击【更新镜像】,如图

  • 更新成功后,访问 192.168.0.9:12225

  • 【更改副本数量】 : 可以水平扩展容器或减少容器数量,这里的容器分布都是均匀分布到各个Slave(服务器)上,如图

  • 验证可以查看 【查看容器列表】

  • 【查看容器列表】 上可以查看容器日志点击【查看日志】, 如图

  • 【查看容器列表】 上可以实时监控容器性能点击【实时监控性能】, 如图

  • 【查看网关】 点击可以进入【网关管理页面】

7. Docker 管理

能对docker进行远程管理

  • Docker基础信息

  • Docker容器列表

  • Docker镜像列表

  • 部署容器 : 例如部署一个nginx

  • 拉取镜像

  • 容器 - 查看容器详情

  • 容器 - 停止 与 停止并删除 容器

  • 容器 - 查看容器日志

  • 容器 - 查看进程

  • 容器 - 修改容器名称

  • 容器 - 重启容器

  • 容器 - 实时监控容器

  • 镜像 - 查看详情

  • 镜像 - 部署这个镜像

8. 可执行文件管理

顾名思义就是在一个指定的服务器上部署可执行文件

“commander” 规定: 可执行文件进行压缩上传(zip,rar),规定必须含有可执行文件,可含有相关配置文件,相关扩展目录等。

  • 页面

  • 新建可执行文件

  • 进入目录结构

  • 修改配置文件

  • 部署执行

  • 运行列表 - 查看日志

10. 网关管理

"commander"自带网关,主要用于转发,负载, LVS是L4

未来TODO: 创建,管理,黑白名单,手动转发,拦截,防御,安全,内网穿透, p2p桥接 等功能

页面如下:

11. 缓存管理

“commander” 数据持久化是自带嵌入式数据库,无需第三方数据库。

该功能主要提供,持久化数据重置删除

“commander” 数据持久化配置 , master配置文件 configs.yaml

# 数据持久化保存路径
# data 常规数据持久化
# performance 性能采集持久化
dbPath:data: "/media/data/master_db/data.db"performance: "/media/data/master_db/performance.db"

12. 监控管理

对各个Slave(服务器)进行监控与监控指标设置

"commander"的报警通知方案: 在线使用websocket, 离线使用邮件或钉钉

  • 页面

  • 创建监控规则

  • 修改监控规则

点击监控标准列表的【修改】即可

13. 在线终端

可以直接在 commander 建立服务器的 ssh 终端,进行操作服务器

14. 网络代理

网络代理分为 http/s代理创建与删除, socket5代理创建与删除, ssh代理与删除,tcp转发,udp转发 这5个模块

15. 软件部署

软件部署主要功能是一键式部署软件卸载软件,可以部署Docker,Nginx等软件

16. 服务器目录文件管理

可以直接浏览查看服务器的目录与文件,上传文件到服务器,创建目录,解压压缩文件,打包下载整个目录

17. nginx管理

直接对服务器上的nginx进行操作管理,重启,停止,修改配置,查看日志,后期会增加自动nginx运维功能

七、 场景篇

7.1 CI/CD

  1. 创建一个项目, 4个副本,会均匀部署到所有在线的Slave,web服务端口是12300, 创建一个网关代端口是12225部署到192.168.0.9上, 如下图:

  1. 部署成功后如下图

  1. 访问 192.168.0.9:12225

  2. 查看容器列表, 可以看到项目所有容器的信息

  1. 现在需要升级镜像到v2版本,点击【更新镜像】,如图

  1. 更新成功后,访问 192.168.0.9:12225

7.2 服务水平扩展

  1. 更改副本数量, 可以水平扩展容器或减少容器数量,这里的容器分布都是均匀分布到各个Slave(服务器)上,如图

  1. 验证可以查看 【查看容器列表】

7.3 执行爬虫程序

  1. 将爬虫程序编辑成可执行文件
  2. 与配置文件一起打包到压缩文件
  3. 在 【可执行文件管理】页面新建可执行文件

  1. 点击部署执行

  1. 也可以查看日志

  2. 也可以进入目录修改配置文件,再次部署执行

  1. 结果:

7.4 在线终端

  1. 在服务器控制或在主页的服务器列表上有【在线终端】的入口,点击输入ssh连接信息即可进入终端

7.5 在线部署Docker

  1. 在软件部署页面能看到Docker的安装部署,点击安装即可

7.6 在线部署Nginx

  1. 在软件部署页面能看到Nginx的安装部署,点击安装即可

7.7 创建TCP转发

  1. 在网络代理页面,点击创建TCP网络转发

  1. 如下图可见创建成功

  1. 在浏览器上输入这个转发服务的地址

4.网络转发可以修改转发表,常用场景是流量切换

八、 商业篇(20221024拟定)

  1. 目前 ManGe Commander 发布版本都是社区版,项目目前不对外开源,如果后期有收益才会开源;
  2. ManGe Commander 永久支持免费的社区版,项目开源由收益决定;收益方案分为出售与项目维护基金会;
  3. 商业合作联系: 18483663083(李漫);
  4. 商业版以出售技术的形式转让给第三方,但无法破坏社区版永久免费的规定;
  5. 项目基金维护会: 以使用者捐赠的形式捐赠给项目基金维护会,项目基金维护会所有人是李漫(18483663083),基金由李漫待管理,用于项目的维护和迭代;
  6. 未来畅想1: 为了项目持久发展与创新,未来一定会开源,邀请各路开发大佬加入这个项目,做大做强;
  7. 未来畅想2: 由于是有一定收益才会开源,能走到开源这一步说明该项目是具有一定的价值,开源后参与项目维护和迭代的大佬也会得到相应的报酬,才有利于项目的长久发展。
  8. 个人开发项目群
  9. ManGe Commander 社区版交流群

九、 参考

  • k8s
  • docker
  • Jenkins
  • nginx

十、规划

20221201 到 20230110 : 生产环境使用与测试
20230214 : 0.4版本
20230330 : 0.5版本

ManGe Commander 文档 v0.3相关推荐

  1. ManGe Commander 文档 v0.2

    ManGe Commander (指挥官) 主页: commander.mange.work 邮箱: 2912882908@qq.com 交流群: https://mange.work/blog?id ...

  2. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

  3. 三关节机械臂控制需求说明压缩文件中的相关文档说明

    ▌01 机械臂控制需求 先驱威锋公司的小吕(微信号:南天)发送过来机械臂控制需求说明文档,其中包括有: 01机械臂当前需求以及后续开发需求.docx 02机械臂测试说明.docx 03机械臂定位方案2 ...

  4. 【文档】软件版本发布说明

    背景说明:该项目产品是基于一款开源快速开发后台管理系统基础上根据公司业务需要逐步打造一款后台管理系统一站式快速交付平台,实现开箱即用(SAAS),线上交付,对内支持前后端交付,所见即所得.对外赋能支持 ...

  5. kubesphere3.0的安装完整文档

    kubesphere3.0的安装文档 https://www.yuque.com/leifengyang/kubesphere/hxzk3t#SAP5W 基于kubernetes环境安装kubesph ...

  6. php超链接_一个纯PHP库,用于读写文字处理文档

    PHPWord是一个用纯PHP编写的库,它提供了一组用于读写不同文档文件格式的类.当前版本的PHPWord支持Microsoft Office Open XML(OOXML或OpenXML),用于Of ...

  7. AKKA文档(java版)——准备开始

     http://ifeve.com/akka-doc-java-getting-started/ AKKA文档(java版)--准备开始 原文:http://doc.akka.io/docs/ak ...

  8. elasticsearch文档-modules

    2019独角兽企业重金招聘Python工程师标准>>> modules 模块 cluster 原文 基本概念 cluster: 集群,一个集群通常由很多节点(node)组成  nod ...

  9. .NET 中安全高效跨平台的模板引擎 Fluid 使用文档

    Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现.它是 Shopify 主题的主要构成部分,并且被用于加载店铺系统的动态内容.它是一种安全的模板语言,对于非程序员的受众 ...

最新文章

  1. Python:urllib2模块的URLError与HTTPError
  2. cmd orcal 中文乱码
  3. python sql in list
  4. 基于java封装的语言_封装在java中的应用
  5. Cisco交换机实现端口安全与帮定
  6. [LeetCode]--71. Simplify Path
  7. Python学习1----在win系统中搭建Python编程环境
  8. 睡眠者效应(Sleeper Effect):当下被拒绝,但其实已经
  9. 比较好的自学IT的网站
  10. 笔记 -凸函数 /KL距离
  11. c 语言 农历,农历转阴历 c语言
  12. 蠕虫病毒 incaseformat 在国内肆虐,可导致用户数据丢失
  13. 软件定义网络基础(SDN④)
  14. 【Android】【自动填充】自定义AutofillService(二):编写AutofillService代码
  15. 国内外比较出名的聚合路由器都有哪些?
  16. 解决Spyder无法抓取Yahoo!finance财经数据
  17. 2012陕西省互联网大会的一些感受
  18. 【分享 10 个日常使用的脚本】
  19. Exadata(测)
  20. STM32+MCP2515多路CAN总线通信电路板(三路、四路、五路)

热门文章

  1. 3DMAX模型数据入ARCGIS地理数据库
  2. 基于JAVA济南旅游网站计算机毕业设计源码+数据库+lw文档+系统+部署
  3. Android安卓签名打包原理,步骤详细讲解(debug,release区别.V1,V2区别)
  4. 华为watch2gtpro鸿蒙,华为watchGT2pro有哪些优缺点,值得入手吗
  5. 竣达技术丨设备云监控管理平台
  6. 人大金仓常用查询sql
  7. 少侠学代码系列(一)-JS起源
  8. 软件测试常考面试题-软件测试面试宝典(临阵磨刀)
  9. 做流量站,没有资源,除了外链我们还能做什么?
  10. 红米k20pro短接9008_小米、红米全系列短接点拆机进入9008模式刷机图解方法