I have a server running Ubuntu 14.04 with 220 GB of ram on which I'd like to run elasticsearch. According to the documentation, one node should not have more than 32 GB of RAM, so I guess I have to run several nodes on this one machine in order to make use of all that RAM. I'm considering running 4 nodes with 28 GB of memory for each.
How do I set this up as an ubuntu service, so that all of the nodes automatically come back up after a system reboot for example? I guess I have to edit /etc/init.d/elasticsearch in some way - can anyone help me out?
Thank you guys so much!
I gave up after a while, removed the elasticsearch repo-installation and downloaded the zip-file instead. Then I created two upstart-jobs and everythings works smoothly so far.
- Wrapper
description "Start several ES-instances at once (this is a wrapper)."
start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [06]
respawn
# Give up respawn if restart occurs 5 times in 120 seconds
respawn limit 5 120
env NUM_INSTANCES=4
pre-start script
for i in $(seq 1 $NUM_INSTANCES)
do
start elasticsearch-instance ID=$i
done
end script
pre-stop script
curl -XPOST "http://localhost:9200/_cluster/nodes/_local/_shutdown"
end script
- Instances
description "starts up an elasticsearch instance (node)"
stop on stopping elasticsearch
respawn
instance $ID
limit nofile 64000 64000
setuid elasticsearch
setgid elasticsearch
env JAVA_OPTS="-XX:+UseCompressedOops"
env ES_HEAP_SIZE=28G
exec /data/elasticsearch/bin/elasticsearch -Des.config=/data/elasticsearch/config/elasticsearch.yml
Assuming your rpm or deb created an init.d script, to start a second node on the same machine do as follows:
cd /etc/init.d
cp --preserve elasticsearch elasticsearch2
Edit elasticsearch2 script:
- change # elasticsearch to # elasticsearch2
- add node="2" after line prog="elasticsearch"
- change pidfile=/var/run/elasticsearch/${prog}.pid to pidfile=/var/run/elasticsearch/${prog}${node}.pid
- change lockfile=/var/lock/subsys/$prog to lockfile=/var/lock/subsys/$prog$node
- change echo -n $"Starting $prog: " to echo -n $"Starting $prog: (node $node)"
- change echo -n $"Stopping $prog: " to echo -n $"Stopping $prog: (node $node)"
Save the file. Execute
chkconfig --add elasticsearch2
service elasticsearch2 start
来源:https://stackoverflow.com/questions/26162690/run-multiple-elasticsearch-nodes-as-a-service-on-one-ubuntu-server