mirror of
https://github.com/iLoveElysia/openbilibili.git
synced 2026-09-03 16:18:04 -05:00
64 lines
2.2 KiB
Markdown
64 lines
2.2 KiB
Markdown
|
|
# Cluster Test
|
||
|
|
|
||
|
|
This directory contains a program you can use to test a cluster.
|
||
|
|
|
||
|
|
Here's how:
|
||
|
|
|
||
|
|
First, install a cluster of Elasticsearch nodes. You can install them on
|
||
|
|
different computers, or start several nodes on a single machine.
|
||
|
|
|
||
|
|
Build cluster-test by `go build cluster-test.go` (or build with `make`).
|
||
|
|
|
||
|
|
Run `./cluster-test -h` to get a list of flags:
|
||
|
|
|
||
|
|
```sh
|
||
|
|
$ ./cluster-test -h
|
||
|
|
Usage of ./cluster-test:
|
||
|
|
-errorlog="": error log file
|
||
|
|
-healthcheck=true: enable or disable healthchecks
|
||
|
|
-healthchecker=1m0s: healthcheck interval
|
||
|
|
-index="twitter": name of ES index to use
|
||
|
|
-infolog="": info log file
|
||
|
|
-n=5: number of goroutines that run searches
|
||
|
|
-nodes="": comma-separated list of ES URLs (e.g. 'http://192.168.2.10:9200,http://192.168.2.11:9200')
|
||
|
|
-retries=0: number of retries
|
||
|
|
-sniff=true: enable or disable sniffer
|
||
|
|
-sniffer=15m0s: sniffer interval
|
||
|
|
-tracelog="": trace log file
|
||
|
|
```
|
||
|
|
|
||
|
|
Example:
|
||
|
|
|
||
|
|
```sh
|
||
|
|
$ ./cluster-test -nodes=http://127.0.0.1:9200,http://127.0.0.1:9201,http://127.0.0.1:9202 -n=5 -index=twitter -retries=5 -sniff=true -sniffer=10s -healthcheck=true -healthchecker=5s -errorlog=error.log
|
||
|
|
```
|
||
|
|
|
||
|
|
The above example will create an index and start some search jobs on the
|
||
|
|
cluster defined by http://127.0.0.1:9200, http://127.0.0.1:9201,
|
||
|
|
and http://127.0.0.1:9202.
|
||
|
|
|
||
|
|
* It will create an index called `twitter` on the cluster (`-index=twitter`)
|
||
|
|
* It will run 5 search jobs in parallel (`-n=5`).
|
||
|
|
* It will retry failed requests 5 times (`-retries=5`).
|
||
|
|
* It will sniff the cluster periodically (`-sniff=true`).
|
||
|
|
* It will sniff the cluster every 10 seconds (`-sniffer=10s`).
|
||
|
|
* It will perform health checks periodically (`-healthcheck=true`).
|
||
|
|
* It will perform health checks on the nodes every 5 seconds (`-healthchecker=5s`).
|
||
|
|
* It will write an error log file (`-errorlog=error.log`).
|
||
|
|
|
||
|
|
If you want to test Elastic with nodes going up and down, you can use a
|
||
|
|
chaos monkey script like this and run it on the nodes of your cluster:
|
||
|
|
|
||
|
|
```sh
|
||
|
|
#!/bin/bash
|
||
|
|
while true
|
||
|
|
do
|
||
|
|
echo "Starting ES node"
|
||
|
|
elasticsearch -d -Xmx4g -Xms1g -Des.config=elasticsearch.yml -p es.pid
|
||
|
|
sleep `jot -r 1 10 300` # wait for 10-300s
|
||
|
|
echo "Stopping ES node"
|
||
|
|
kill -TERM `cat es.pid`
|
||
|
|
sleep `jot -r 1 10 60` # wait for 10-60s
|
||
|
|
done
|
||
|
|
```
|