We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support chaos experiment on windows environment.
Support chaos experiment on windows environment. include windows os and jvm:
windows
随着混沌工程的发展与推广,越来越多的企业进行了落地。落地行业也由互联网行业伸展到各行各业,特别是传统金融领域,其有很大一部分应用是部署在Windows操作系统上的
ChaosBlade整体架构如下,主要分为三层:Server控制层,Agent探针层和chaosblade演练工具层,其中最后两层均部署在用户侧机器上:
ChaosBlade输出Windows演练能力,所以按照以上系统架构,需要在三个方面进行Windows能力的补齐: ● 原子能力:补全Windows操作系统原子演练能力 ● 探针:完成Windows版本探针的支持 ● 控制台:在控制台上完成对Windows探针管控的支持及演练场景编排的兼容
Windows 原子演练能力,预计于Linux操作系统上支持的演练能力对齐,主要包括两个部分:OS和JVM。具体原子演练能力如下:
在Linux操作系统上实现网络延迟、丢包等故障,是通过tc工具实现的,但是在Windows操作系统上是没有tc工具的,所以经调研,通过开源工具windivert来做实现,从而在用户态中扩展丢包、重发、延时等能力。
整体经过如下: ● windivert获取内核态中接收到数据包 ● 在windivert用户态上进行功能扩展和开发,实现数据的丢包、重发、延时等能力, ● 最后再将进行延时、乱序的数据重新丢回内核态中,或直接丢弃,实现网络丢包的功能
JVM演练能力指的是,对运行在Windows操作系统上Java应用进行故障注入,由于其底层原理是通过JVM Sandbox实现的,由于存在JVM虚拟机,并不关心底层操作系统,所以直接服用Linux的实现即可。
Windows探针指的运行在用户机器上的应用,主要功能为:与server端建联、上报心跳到server端、演练下发的命令通道和基础数据的收集等。 但是由于Windows和Linux的使用习惯不同,所以探针最好有以下几个功能: ● 交互式参数输入的安装方式 ● 在Windows意外关机后,开启后能根据配置自动重启探针应用 ● 对于探针由于一些兜底策略或意外退出后,能自动被拉起
Windows service:允许用户创建可在其本身Windows会话中长时间运行的可执行应用程序。这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。这些功能使服务非常适合在服务器上使用。还可以在与登录用户或默认计算机账号中不同特定用户账号的安全性上下文中运行服务。
整体实现,经调研利用Golang开源工具kardianos/service,使用方便,社区获取度较高,所以选用它将agent在应用启动时注册为Windows service。
通过打包工具将 探针agent和工具chaosblade 打成一个msi安装包文件,用于windows安装。通过以下包工具的尝试和调研,最终选用Advanced Installer进行工具打包。
控制台对Windows类型探针和演练场景的兼容主要包括几个方面:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Issue Description
Support chaos experiment on windows environment.
Describe what happened (or what feature you want)
Support chaos experiment on windows environment. include windows os and jvm:
Tell us your environment
windows
How to do it?
项目背景
随着混沌工程的发展与推广,越来越多的企业进行了落地。落地行业也由互联网行业伸展到各行各业,特别是传统金融领域,其有很大一部分应用是部署在Windows操作系统上的
目前架构分析
ChaosBlade整体架构如下,主要分为三层:Server控制层,Agent探针层和chaosblade演练工具层,其中最后两层均部署在用户侧机器上:
方案实现
ChaosBlade输出Windows演练能力,所以按照以上系统架构,需要在三个方面进行Windows能力的补齐:
● 原子能力:补全Windows操作系统原子演练能力
● 探针:完成Windows版本探针的支持
● 控制台:在控制台上完成对Windows探针管控的支持及演练场景编排的兼容
Windows原子能力支持
Windows 原子演练能力,预计于Linux操作系统上支持的演练能力对齐,主要包括两个部分:OS和JVM。具体原子演练能力如下:
系统层
应用层
关键点1:网络原子演练能力实现
在Linux操作系统上实现网络延迟、丢包等故障,是通过tc工具实现的,但是在Windows操作系统上是没有tc工具的,所以经调研,通过开源工具windivert来做实现,从而在用户态中扩展丢包、重发、延时等能力。
整体经过如下:
● windivert获取内核态中接收到数据包
● 在windivert用户态上进行功能扩展和开发,实现数据的丢包、重发、延时等能力,
● 最后再将进行延时、乱序的数据重新丢回内核态中,或直接丢弃,实现网络丢包的功能
关键点2 - JVM演练能力实现
JVM演练能力指的是,对运行在Windows操作系统上Java应用进行故障注入,由于其底层原理是通过JVM Sandbox实现的,由于存在JVM虚拟机,并不关心底层操作系统,所以直接服用Linux的实现即可。
探针Windows支持
Windows探针指的运行在用户机器上的应用,主要功能为:与server端建联、上报心跳到server端、演练下发的命令通道和基础数据的收集等。
但是由于Windows和Linux的使用习惯不同,所以探针最好有以下几个功能:
● 交互式参数输入的安装方式
● 在Windows意外关机后,开启后能根据配置自动重启探针应用
● 对于探针由于一些兜底策略或意外退出后,能自动被拉起
Windows services实现重启和保活
Windows service:允许用户创建可在其本身Windows会话中长时间运行的可执行应用程序。这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。这些功能使服务非常适合在服务器上使用。还可以在与登录用户或默认计算机账号中不同特定用户账号的安全性上下文中运行服务。
整体实现,经调研利用Golang开源工具kardianos/service,使用方便,社区获取度较高,所以选用它将agent在应用启动时注册为Windows service。
Advanced Installed实现交互式安装
通过打包工具将 探针agent和工具chaosblade 打成一个msi安装包文件,用于windows安装。通过以下包工具的尝试和调研,最终选用Advanced Installer进行工具打包。
控制台Windows支持
控制台对Windows类型探针和演练场景的兼容主要包括几个方面:
The text was updated successfully, but these errors were encountered: