From: Zhang Chen <address@hidden>
Advanced Watch Dog is an universal monitoring module on VMM side, it can be
used to detect network down(VMM to guest, VMM to VMM, VMM to another remote
server) and do previously set operation. Current AWD patch just accept any
input as the signal to refresh the watchdog timer,
and we can also make a certain interactive protocol here. For the output user
can pre-write
some command or some messages in the AWD opt-script. We noticed that there is
no way
for VMM communicate directly, maybe some people think we don't need such
things(up layer
software like openstack can handle it). But we engaged with real customer found
that in some cases,they need a lightweight and efficient mechanism to solve
some practical problems(openstack is too heavy).
for example: When it detects lost connection with the paired node,it will send
message to admin, notify another VMM, send qmp command to qemu do some
operation like restart the VM, build VMM heartbeat system, etc.
It make user have basic VM/Host network monitoring tools and basic false
tolerance and recovery solution.
Demo usage(for COLO heartbeat service):
In primary node:
-chardev socket,id=h1,host=3.3.3.3,port=9009,server,nowait
-chardev socket,id=heartbeat0,host=3.3.3.3,port=4445
-object iothread,id=iothread2
-object
advanced-watchdog,id=heart1,server=on,awd_node=h1,notification_node=heartbeat0,opt_script=colo_opt_script_path,iothread=iothread1,pulse_interval=1000,timeout=5000
In secondary node:
-monitor tcp::4445,server,nowait
-chardev socket,id=h1,host=3.3.3.3,port=9009,reconnect=1
-chardev socket,id=heart1,host=3.3.3.8,port=4445
-object iothread,id=iothread1
-object
advanced-watchdog,id=heart1,server=off,awd_node=h1,notification_node=heart1,opt_script=colo_secondary_opt_script,iothread=iothread1,timeout=10000
V3:
- Rebased on Qemu 4.2.0-rc1 code.
- Fix commit message issue.
V2:
- Addressed Philippe comments add configure selector for AWD.
Initial:
- Initial version.
Zhang Chen (4):
net/awd.c: Introduce Advanced Watch Dog module framework
net/awd.c: Initailize input/output chardev
net/awd.c: Load advanced watch dog worker thread job
vl.c: Make Advanced Watch Dog delayed initialization
configure | 9 +
net/Makefile.objs | 1 +
net/awd.c | 491 ++++++++++++++++++++++++++++++++++++++++++++++
qemu-options.hx | 6 +
vl.c | 7 +
5 files changed, 514 insertions(+)
create mode 100644 net/awd.c