20221111
ManGe Commander 是轻量级一站式DevOps平台,是持续部署、持续集成的解决方案,也是服务器管理、
操作、监控的解决方案,同时集成了Docker管理。
功能架构: 采用master/slave机制,master一对多的管理slave,为了高可用master支持集群;
master: 主要功能是提供操作界面(web UI),分发任务到slave,收集并分析slave上报的采集服务器数据进行监控,下发服务器的操作指令,网络地址注册中心等
slave: 主要功能是守护进程,docker操作,系统操作,采集服务器的性能数据,自动维护项目等
master与salve间的通讯: 数据交互使用UDP+TCP 实现的自定义通讯协议, 下载上传文件使用http/s协议
功能架构图:

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

| 日期 | 版本 | 地址 | 版本说明 | 支持平台 |
|---|---|---|---|---|
| 20221111 | v0.2 | http://commander.mange.work/download | v0.2 见里程碑 | linux/unix, windows, MACOS |
| 20221024 | v0.1 | http://commander.mange.work/download | v0.1 见里程碑 | linux/unix, windows, MACOS |
| 日期 | 版本 | 地址 | 版本说明 | 支持平台 |
|---|---|---|---|---|
| 20221111 | v0.2 | http://commander.mange.work/download | v0.2 见里程碑 | linux/unix, MACOS, windows(doing) |
| 20221024 | v0.1 | http://commander.mange.work/download | v0.1 见里程碑 | linux/unix, MACOS, windows(doing) |
下载并在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: asdasd786251ashdgjdbd
expire: 86400
# 数据持久化保存路径
# data 常规数据持久化
# performance 性能采集持久化
dbPath:
data: "/media/data/master_db/data.db"
performance: "/media/data/master_db/performance.db"
例如: 拥有四台服务器, 192.168.0.9, 192.168.0.190, 192.168.0.191, 192.168.0.192
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#
# master UDP 通讯地址
master:
host: 192.168.0.9
port: 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"
看见日志有打印主机信息则启动成功
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

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

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

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

登录成功后跳转到首页

首页分为功能图标区域与Slave列表;
【Slave(服务器)数量】 : 显示总服务器数量与在线服务器数量,点击进入【Slave】页面
【项目数量】 : 显示当前已经创建并运行的项目数量,点击进入【项目】页面
【报警数量】 : 显示当前报警的数量,报警来自于各个主机的性能超过监控指标和各个异常的提示,点击进入【监控管理】
【网关数量】 : 显示当前部署的网关数量,这里的网关是“commander“自带的,主要用于网络转发代理负载均衡,是基于L4的,点击进入【网关】
【可执行文件】 : 显示当前可执行文件数量,这里的可执行文件是上传到master的可执行文件,可以对可执行文件进行指定部署,监控,管理,在线修改配置等操作,点击进入【可执行文件管理】
【Docker】 : 该按钮点击可进入【Docker管理】
【使用手册(TODO)】 : 点击访问mange.work的“commander”的社区->在线使用文档
【社区(TODO)】 : 点击访问mange.work的“commander”的社区
【ManGe主页】 : 点击访问mange.work
Slave(服务器) 列表: 显示slave的基本信息,与加载页面时Slave采集的性能值CPU与MEM,还有操作按钮点击直接执行对其含义的功能。

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







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

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

【新建Docker容器项目】 :
网关转发原则: 网关端口 -> 注册中心(容器随机映射的端口) -> 容器端口
故:
【网关服务端口映射】 网关端口:容器端口
【项目占用端口】 *:容器端口(容器端口映射则是随机)
如下图,部署一个web服务,创建4个副本,会均匀部署到所有在线的Slave,web服务端口是12300, 创建一个网关代端口是12225部署到192.168.0.9上


访问 192.168.0.9:12225
【查看容器列表】 : 可以看到项目所有容器的信息


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

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



能对docker进行远程管理














容器 - 重启容器
容器 - 实时监控容器



顾名思义就是在一个指定的服务器上部署可执行文件
“commander” 规定: 可执行文件进行压缩上传(zip,rar),规定必须含有可执行文件,可含有相关配置文件,相关扩展目录等。









"commander"自带网关,主要用于转发,负载, LVS是L4
未来TODO: 创建,管理,黑白名单,手动转发,拦截,防御,安全,内网穿透, p2p桥接 等功能
页面如下:

“commander” 数据持久化是自带嵌入式数据库,无需第三方数据库。
该功能主要提供,持久化数据重置删除
“commander” 数据持久化配置 , master配置文件 configs.yaml
# 数据持久化保存路径
# data 常规数据持久化
# performance 性能采集持久化
dbPath:
data: "/media/data/master_db/data.db"
performance: "/media/data/master_db/performance.db"

对各个Slave(服务器)进行监控与监控指标设置
"commander"的报警通知方案: 在线使用websocket, 离线使用邮件或钉钉


点击监控标准列表的【修改】即可
可以直接在 commander 建立服务器的 ssh 终端,进行操作服务器


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

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



访问 192.168.0.9:12225
查看容器列表, 可以看到项目所有容器的信息








也可以查看日志
也可以进入目录修改配置文件,再次部署执行









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