Galileo 实验项目
项目描述
Galileo 实验项目
此存储库包含调用galileo shell以启动实验的代码。它还包括必要组件的部署文件,并详细说明了启动实验所需的其他服务。此外,该项目旨在统一edgerun的不同子项目,使部署和实验设置变得简单。主要目标和功能包括
- 分布式负载测试实验框架
- 细粒度遥测数据收集
- 任何服务的HTTP跟踪记录
- 容器编排适应性,易于使用
此项目面向谁?
面向所有希望通过轻松配置的工作负载创建来查看资源使用情况和应用程序性能的人。所有组件都针对低性能设备(例如,树莓派)进行定制和调整,但也可在默认服务器虚拟机上运行。
可以通过执行和分析Galileo实验来回答的常见问题
- 我的应用程序使用了多少CPU?
- 我的应用程序在集群中的平均执行时间是多少?
- 同一应用程序运行在两个节点上,在资源使用方面有哪些差异?
- 一个节点上运行多个应用程序会有什么影响?
所有这些问题都可以轻松回答,并且具有简单的流程
- 部署基础基础设施
- 部署我的应用程序
- 启动请求
- 在Jupyter笔记本中分析
总结:简单的分析任务。但是,此框架还针对全面端到端测试,以评估重要的集群组件(例如,负载均衡器、调度器和扩展)。
因此,可以对上述组件的新实现进行实验。
高级概述
Kubernetes集群设置
概述
主要组件
集群设置包括以下主要组件
- Kubernetes
- 伽利略(用于客户端和实验外壳)
- Telemd
- 控制器(即,负载均衡器)
- MySQL(即,MariaDB)
- InfluxDB v2
- Etcd(Kubernetes需要运行实例!)
Kubernetes用于托管客户端(在Pod中运行的伽利略)、遥测代理(Telemd)、负载均衡器和测试应用程序。Redis用作发布/订阅系统,通过该系统发送所有数据(即,遥测)并由伽利略外壳(即,准备和执行实验的程序)记录。伽利略外壳在MariaDB和InfluxDB中持久化数据。提供的负载均衡器实现使用etcd监视轮询算法的权重,伽利略使用Redis为客户端提供路由规则(rtbl
)。
主要交互
上图描述了所有组件,并突出显示重要的交互。这些交互简而言之是
- 客户端节点向控制器(负载均衡器)发送HTTP请求,控制器将请求转发到托管应用程序Pod的工作节点。
- 客户端节点通过Redis报告每个请求的结果(即,跟踪)。
- 基于Go的负载均衡器实现从etcd实例获取权重和IP地址。
- 客户端从Redis实例(通过伽利略的
rtbl
设置)获取路由规则。 - 工作节点通过Redis报告资源使用情况(即,Telemd),该信息保存在InfluxDB中。
- 伽利略外壳启动实验,并将元数据(即,集群主机,其他数据)保存在MariaDB中。
部署
本项目为以下组件提供部署文件
- 伽利略(用于客户端和实验外壳)
- Telemd
- 控制器(即,负载均衡器)
这留下了以下组件需要额外部署
- Kubernetes
- MySQL(即,MariaDB)
- InfluxDB v2
- Etcd(Kubernetes需要运行实例!)
部署文件位于deployment/kubernetes
。注意,我们使用Kubernetes节点标签来安排工作(即,客户端)。在应作为客户端的节点上执行以下命令
kubectl label node <node> node-role.kubernetes.io/client=true
以下标签用于识别具有托管能力的节点(即,工作节点)
kubectl label node <node> node-role.kubernetes.io/worker=true
如果您有多个区域(即,集群),并且希望有独立的客户端,则调整zone
参数(默认为main
)。您可以通过以下命令轻松地对节点进行分组
kubectl label node <node> ether.edgerun.io/zone=main
伽利略工作节点
伽利略工作节点在每个客户端节点上运行,并通过Redis接收命令和路由规则。路由规则是简单的键值对,其中键表示您的服务名称,值是具有相应权重的主机列表。
您可以通过rtbl.set('service', ['127.0.0.1:8080'], [1])
轻松地在程序中设置这些。
数据存储
伽利略需要以下数据组件,这些组件要么部署在集群中,要么外部部署
- Redis(遥测和跟踪的发布/订阅)
- MySQL(即,MariaDB)(实验元数据的持久存储)
- InfluxDB v2(存储运行时数据 - 遥测和跟踪)
所有连接参数均通过环境变量设置。
扩展
扩展存储库旨在提供如何实现和使用项目来运行实验的示例。它将不断更新,并包括新的服务。
环境变量
以下表格显示了所有要设置的环境变量。为了方便使用,包含所有变量的.env
文件(位于bin/.env
)。
变量 | 默认 | 描述 |
---|---|---|
galileo_expdb_driver | 混合 | 使用SQL数据库存储实验元数据,并使用InfluxDB存储运行时数据(即,跟踪) |
galileo_logging_level | DEBUG | 日志记录器级别(DEBUG,INFO,WARN,ERROR) |
galileo_expdb_mysql_host | localhost | MySQL主机 |
galileo_expdb_mysql_port | 3307 | MySQL端口 |
galileo_expdb_mysql_db | db | MySQL数据库 |
galileo_expdb_mysql_user | user | MySQL用户 |
galileo_expdb_mysql_password | 密码 | MySQL密码 |
galileo_expdb_influxdb_url | http://localhost:8086 | InfluxDB URL |
galileo_expdb_influxdb_token | 认证令牌 | InfluxDB认证令牌 |
galileo_expdb_influxdb_timeout | 10000 | InfluxDB超时时间(毫秒) |
galileo_expdb_influxdb_org | 组织 | InfluxDB组织名称 |
galileo_expdb_influxdb_org_id | 组织ID | InfluxDB组织ID |
galileo_redis_host | localhost | Redis主机 |
galileo_redis_password | 可选 | Redis端口 |
KUBECONFIG | 未设置 | kubeconfig路径 |
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
edgerun-galileo-experiments-0.0.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5c6a99c8c3e4f23ba48a060ff0fa58281898a6e4c1c973028fc79a57f1704aa7 |
|
MD5 | aa2e9fc8f5c50ba19687af08a42a0b67 |
|
BLAKE2b-256 | cce0fd2cfa5e15f199f9440a86d699902d3d6db66deb1699a833f5a72dfd4fb7 |
哈希值 for edgerun_galileo_experiments-0.0.1-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 6da8342a6688b53c0b6c82f65f17d34f8c66d10ff820047c2a07ac20c7250b3c |
|
MD5 | 946eac751f8b9744d77c1bcdc40b3fc1 |
|
BLAKE2b-256 | dbec09e045aa09d887b12ddde96bcc83f01181c6e1fc418c7b450f73bf2c60c2 |