A simple nodejs utility to start and stop a test sentinel and redis. Starts redis at port 16379 and sentinel at port 26379.
This is mainly intended as a test helper. If you have several projects which needs to run tests against redis and sentinel, you could include simple_sentinel as a package, and use it to start and stop your redis/sentinel setup.
For redis: we start redis with the following config
redis-server
--daemonize yes
--logfile <file>
--dir <dir>
--loglevel verbose
--port <port>
For sentinel: Created by reading this page: http://redis.io/topics/sentinel
redis-server
--sentinel
--daemonize yes
--logfile <file>
--pidfile <file>
--loglevel verbose
--port <port>
with additional configs:
sentinel monitor <master_name> <host> <port> 1
sentinel down-after-milliseconds <master_name> 2000
sentinel failover-timeout <master_name> 90000
sentinel parallel-syncs <master_name> 2
- redis (tested @2.8.4)
- node
- Include this package in your project, run npm install.
-$ node_modules/simple_sentinel/bin/simple_sentinel --help
Usage: simple_sentinel [start|stop]
Commands:
start start redis and sentinel
stop stop redis and sentinel
Options:
-h, --help output usage information
-f, --config specify a config file
-r, --redis <ports separated by comma>
-s, --sentinel <ports separated by comma>
We can specify different ports for redis and sentinels. The first redis port is treated as the master.
module.exports = {
redis : {
ports: [ 16379, 16380, 16381 ]
},
sentinel: {
ports: [ 26379, 26380, 26381 ]
}
};
You can also use simple_sentinel from code.
var simple_sentinel = require('simple_sentinel');
return_code = simple_sentinel.start(config);
return_code = simple_sentinel.stop(config);
Stops redis:16379 by sending 'redis-cli -p 16379 shutdown', so watch out if you have redis running on that port.
For the sentinel, since the 'shutdown' command is not working on redis v2.8.4, we try to 'kill -TERM cat sentinel.pid'. If the pid file is not found, we further query by doing 'redis-cli -p 26379 | grep process_id', parse the pid and kill it.