All Projects → rustcc → TTstack

rustcc / TTstack

Licence: MIT license
A private-cloud solution for SMEs !

Programming Languages

rust
11053 projects
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to TTstack

Runtime
Kata Containers version 1.x runtime (for version 2.x see https://github.com/kata-containers/kata-containers).
Stars: ✭ 2,103 (+3723.64%)
Mutual labels:  container, kvm, qemu
docker-routeros
Mikrotik RouterOS inside Docker container
Stars: ✭ 225 (+309.09%)
Mutual labels:  container, qemu
Kafl
A fuzzer for full VM kernel/driver targets
Stars: ✭ 204 (+270.91%)
Mutual labels:  kvm, qemu
Cc Oci Runtime
OCI (Open Containers Initiative) compatible runtime for Intel® Architecture
Stars: ✭ 418 (+660%)
Mutual labels:  container, kvm
Terrible
An Ansible playbook that apply the principle of the Infrastructure as Code on a QEMU/KVM environment.
Stars: ✭ 161 (+192.73%)
Mutual labels:  kvm, qemu
Node Libvirt
libvirt bindings for google v8 javascript engine (nodejs addon)
Stars: ✭ 162 (+194.55%)
Mutual labels:  kvm, qemu
Multipass
Multipass orchestrates virtual Ubuntu instances
Stars: ✭ 3,978 (+7132.73%)
Mutual labels:  container, qemu
Osx Kvm
Run macOS on QEMU/KVM. With OpenCore + Big Sur + Monterey support now! Only commercial (paid) support is available now to avoid spammy issues. No Mac system is required.
Stars: ✭ 12,926 (+23401.82%)
Mutual labels:  kvm, qemu
Dockerpi
A Virtualised Raspberry Pi inside a Docker image
Stars: ✭ 1,064 (+1834.55%)
Mutual labels:  container, qemu
Docker Osx
Run Mac in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X!
Stars: ✭ 20,774 (+37670.91%)
Mutual labels:  container, kvm
Quickemu
The amazing Quickemu; as seen on YouTube
Stars: ✭ 158 (+187.27%)
Mutual labels:  kvm, qemu
virtblkiosim
Virtual Linux block device driver for simulating and performing I/O.
Stars: ✭ 30 (-45.45%)
Mutual labels:  kvm, qemu
Grub2 Theme Preview
🌇 Preview a full GRUB 2.x theme (or just a background image) using KVM / QEMU
Stars: ✭ 153 (+178.18%)
Mutual labels:  kvm, qemu
Packer Build
Packer Automated VM Image and Vagrant Box Builds
Stars: ✭ 199 (+261.82%)
Mutual labels:  kvm, qemu
Qemu Images
A collection of disk images and virtual machines that can be used by the QEMU emulator
Stars: ✭ 145 (+163.64%)
Mutual labels:  kvm, qemu
ProxmoxVE PHP API
ProxmoxVE PHP API
Stars: ✭ 78 (+41.82%)
Mutual labels:  container, qemu
Ignite
Ignite a Firecracker microVM
Stars: ✭ 1,954 (+3452.73%)
Mutual labels:  kvm, firecracker
Cv4pve Autosnap
Automatic snapshot tool for Proxmox VE
Stars: ✭ 123 (+123.64%)
Mutual labels:  kvm, qemu
Runtime
OCI (Open Containers Initiative) compatible runtime using Virtual Machines
Stars: ✭ 588 (+969.09%)
Mutual labels:  container, kvm
Tools
Combination of different utilities, have fun!
Stars: ✭ 166 (+201.82%)
Mutual labels:  kvm, qemu

tt

pipeline status coverage report

A light-weight 'private cloud solution' for SMEs, it can bring huge help and commercial value to start-up companies.

面向中小型企业的轻量级私有云平台, 可快速生成各种虚拟机环境, 为产品兼容性验证和自动化测试等场景提供高效的基础环境.

中小企业的效率悖论

初创的中小企业, 技术实力薄弱, 很多生产手段都停留在刀耕火种的蛮荒时代.

这就形成了一个悖论:

原理上来讲, 初创公司要赶超大型公司, 必须要赢在效率; 确实, 在"人"的主观效率上, 如"管理流程"等方面, 大多数初创公司因为业务场景简单, 都能做到这一点;但"技术流程"上, 却是落后地一塌糊涂, 其结果当然是惨不忍睹, 尤如二战中的波兰骑兵, 高扬着马刀(原始工具)冲向德国人的坦克(现代工具), 不管马背上的骑士如何迅捷("人"的效率高), 都干不过坐在坦克("工具"的效率高)中的德国兵.

同时, 由于初创公司资金短缺, 很少有第三方的公司愿意去开拓这一块市场(无利可图); 而初创公司本身, 又没有足够的资源去自己解决, 这样就进入一个恶性循环, 永远处在"头痛医头, 脚痛医脚"的低效状态 , 直到公司倒闭, 或出现某个牛人以一己之力改变现状.

本项目以简洁易用为宗旨, 志在解决这个"无人问津"的悖论:

  • 专门面向中小企业设计, 分布式架构, 可扩展, 可伸缩
  • 充分利用硬件资源: 通过云平台统一调度所有硬件资源, 大幅提升资源利用率和灵活性
  • 极低的系统架设和维护成本: 运维人员通常只需半小时即可搭建起一套完整的 TT 私有云平台
  • 极低的学习和使用成本: 终端用户通常只需十分钟即可熟练使用 TT 客户端创建需要的虚拟环境
  • 省钱, 是的! 很省钱! 你无需耗费巨资养活一个专门的云团队(OpenStack/K8S 专业人员的身价通常都很高)
  • 公有云真的很便宜? 很便利? 很安全? 用过的都知道答案
  • ...

主要用途

  1. 广泛的平台兼容性验证
    • 可在如下两个方向上做任意的交叉组合
      1. Linux、BSD、Windows、MacOS 等各种 OS 类别与版本
      2. AMD64、X86、AArch64、ARM、MIPS、RISC-V、SPARC 等各种硬件平台
  2. 与 DevOps 系统配合, 实现自动化的 CI\CD 功能
  3. 用作原生编译平台
    • 直接申请全量的原生 OS 环境, 避免交叉编译的复杂度和潜在问题
  4. 用作短期或长期的调试环境
    • 可将 TT 视为传统的云平台, 申请虚拟机用于开发和测试
  5. 其它...

技术特性

  • 整洁高效的资源管理
    • 每个 VM 存在于独立的 Cgroup 中, 资源清理准确无误
    • [可选] 使用 FireCracker 快速创建大量的轻量级 MicroVM
    • [默认] 使用 zfs 的 snapshot\clone 机制使 VM 获得原生 IO 性能
    • [默认] 使用 nftables 的 SET\MAP 等高级数据结构管理网络端口
    • 服务进程运行在单独的 PID NS 中, 服务退出会自动销毁所有资源
    • 通过 Rust Drop 机制自动管理 VM 生命周期
    • ...
  • 分布式可扩展架构
    • 后端支持多机分布式架构, 对用户完全透明
  • 轻量级的通信模型
    • C\S 两端基于 UDP\SCTP 进行通信
    • 自研的远程命令执行工具, 效率远超 SSH 协议
  • 镜像源与服务解耦
    • 可随时增加受支持的系统镜像, 服务端不需要停机
    • 支持多种虚拟机引擎, 如: Qemu\FireCracker\Bhyve 等
    • 以镜像名称前缀识别虚拟机类型, 如: fire:centos-7.3:3.10.e17.x86_64
  • 使用Rust语言开发
    • 安全稳定
    • 高效运行
    • 文档齐备
    • 原生跨平台
    • ...

Quick Start

编译

make install
export PATH=~/.cargo/bin:$PATH

启动服务端

注意

镜像文件一定能存放在'/tmp'或其子目录下, 会导致无法扫描到镜像信息(ttserver 的'/tmp'路径私有的, 与外界环境互相隔离).

# Slave Server 1
ttserver \
        --image-path /home/images \
        --cfgdb-path /tmp \
        --cpu-total 2 \
        --mem-total $[4 * 1024 * 1024] \
        --disk-total $[40 * 1024 * 1024] \
        --serv-addr 127.0.0.1 \
        --serv-port 20000

# Slave Server 2
ttserver \
        --image-path /home/images \
        --cfgdb-path /tmp \
        --cpu-total 2 \
        --mem-total $[4 * 1024 * 1024] \
        --disk-total $[40 * 1024 * 1024] \
        --serv-addr 127.0.0.1 \
        --serv-port 20001

# Proxy, 分布式代理服务, 负责调度各 Slave Server 的资源
ttproxy \
        --proxy-addr 127.0.0.1:20002 \
        --server-set 127.0.0.1:20000,127.0.0.1:20001

客户端操作

Tips

  • 完整的客户端操作文档, 参见: 《用户指南》
  • "/home/images" 路径下需要存在可正常启动的 Qemu 镜像文件
  • 镜像文件中的 "/etc/rc.local" 文件需要替换为本项目定制的 "rc.local"
# 配置服务端地址,
# 既可以是 Proxy 的地址,
# 也可以是各个独立的 Slave Server 地址,
# 这里配置成 Proxy 的地址, 以演示分布式架构的调度效果
tt config --serv-addr 127.0.0.1 --serv-port 20002

# 查看客户端本地信息
tt status

# 查看服务端资源信息
tt status --server

# 创建一个 "ENV",
# TT 中的基本管理单位为 ENV (一组 VM 的集合),
# 创建的 VM 类别是以系统前缀匹配的, 不区分大小写,
# 如:
#     - cent 会匹配到所有 CentOS 系统
#     - ubuntu2004 只会匹配到 Ubuntu2004 一个系统
tt env add TEST --os-prefix=cent,ubuntu2004

# 查看已创建的 ENV 列表
tt env list

# 查看已创建的某个 ENV 的详情
tt env show TEST

# 在 ENV 的所有 VM 上执行相同的命令
tt env run TEST --use-ssh --cmd 'ls /'

# 删除 ENV,
# 其中所有的 VM 及其相关数据都会被清理
tt env del TEST

详细文档

接口文档

# 在 Rust 开发环境下执行
make doc

BUG

  • 单个 ENV 超过 400+ VM 时, 可能出现异常
    • 原因是太大的 ENV 会超过 UDP 单次通信的最大载荷
    • 目前采用了数据压缩的方式予以缓解, 后续将改用 HTTP\SCTP

Statistics

# Tips: cargo install tokei

(git)-[master]-% tokei
===============================================================================
 Language            Files        Lines         Code     Comments       Blanks
===============================================================================
 BASH                    1            5            2            1            2
 Makefile                1          108           92            0           16
 Shell                   8          278          198           30           50
 TOML                   10          234          192            1           41
-------------------------------------------------------------------------------
 Markdown               10          662            0          492          170
 |- Shell                4          372          333           23           16
 (Total)                           1034          333          515          186
-------------------------------------------------------------------------------
 Rust                   77         9182         7770          287         1125
 |- Markdown            71          803           41          707           55
 (Total)                           9985         7811          994         1180
===============================================================================
 Total                 107        11644         8628         1541         1475
===============================================================================
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].