动态故障注入
1. 功能说明
动态故障注入功能可以通过声明式api对故障注入进行动态配置。
2.依赖模块
本功能和故障注入相同,均依赖模块:
load_module modules/njt_http_dyn_fault_inject_module.so;
3. 参考配置
helper broker modules/njt_helper_broker_module.so conf/mqtt.conf;
helper ctrl modules/njt_helper_ctrl_module.so conf/ctrl.conf;
load_module modules/njt_http_dyn_fault_inject_module.so;
worker_processes auto;
cluster_name helper;
node_name node1;
error_log logs/error.log info;
pid logs/njet.pid;
events {
worker_connections 1024;
}
http {
dyn_kv_conf conf/iot-work.conf;
include mime.types;
default_type application/octet-stream;
access_log logs/access.log;
upstream backend1 {
zone backend1 128k;
server 192.168.40.150:5678;
}
server {
listen 0.0.0.0:5555;
server_name localhost;
location / {
proxy_pass http://backend1;
location /test_faultinjection {
# fault_inject type=delay delay_duration=5s status_code=404 delay_percentage=100 abort_percentage=100;
proxy_next_upstream_tries 0; #关闭重试
proxy_next_upstream_timeout 0; #关闭超时
proxy_pass http://backend1;
location /test_faultinjection/test_test_faultinjection {
proxy_next_upstream_tries 0; #关闭重试
proxy_next_upstream_timeout 0; #关闭超时
proxy_pass http://backend1;
}
}
}
}
4. 调用样例
4.1 API说明
查询接口:
GET http://IP+port/api/v1/config/http_dyn_fault_inject
修改接口:
PUT http://IP+port/api/v1/config/http_dyn_fault_inject
4.2 动态配置delay类型故障注入
curl -X PUT http://127.0.0.1:8081/api/v1/config/http_dyn_fault_inject -d'{
"servers": [
{
"listens": [
"0.0.0.0:5555"
],
"serverNames": [
"localhost"
],
"locations": [
{
"location": "/test_faultinjection",
"fault_inject_type": "delay",
"delay_percentage": 100,
"abort_percentage": 100,
"status_code": 200,
"delay_duration": "5s"
}
]
}
]
}
{
"code": 0,
"msg": "success."
}
4.3 动态配置abort类型故障注入
curl -X PUT http://127.0.0.1:8081/api/v1/config/http_dyn_fault_inject -d'{
"servers": [
{
"listens": [
"0.0.0.0:5555"
],
"serverNames": [
"localhost"
],
"locations": [
{
"location": "/test_faultinjection",
"fault_inject_type": "abort",
"delay_percentage": 100,
"abort_percentage": 100,
"status_code": 405,
"delay_duration": "5s"
}
]
}
]
}
{
"code": 0,
"msg": "success."
}
4.4 动态配置delay+abort类型故障注入
curl -X PUT http://127.0.0.1:8081/api/v1/config/http_dyn_fault_inject -d'{
"servers": [
{
"listens": [
"0.0.0.0:5555"
],
"serverNames": [
"localhost"
],
"locations": [
{
"location": "/test_faultinjection",
"fault_inject_type": "delay_abort",
"delay_percentage": 100,
"abort_percentage": 100,
"status_code": 405,
"delay_duration": "5s"
}
]
}
]
}
{
"code": 0,
"msg": "success."
}
4.5 动态获取当前的故障注入配置
curl -X GET http://127.0.0.1:8081/api/v1/config/http_dyn_fault_inject | jq
{
"servers": [
{
"listens": [
"0.0.0.0:5555"
],
"serverNames": [
"localhost"
],
"locations": [
{
"location": "/",
"fault_inject_type": "none",
"delay_percentage": 100,
"abort_percentage": 100,
"status_code": 200,
"delay_duration": ""
},
{
"location": "/test_faultinjection",
"fault_inject_type": "delay_abort",
"delay_percentage": 100,
"abort_percentage": 100,
"status_code": 405,
"delay_duration": "5s",
"locations": [
{
"location": "/test_faultinjection/test_test_faultinjection",
"fault_inject_type": "none",
"delay_percentage": 100,
"abort_percentage": 100,
"status_code": 200,
"delay_duration": ""
}
]
}
]
}
]
}