2014-10-02 166 views
5

我有一臺運行Ubuntu 14.04的服務器,其中有220 GB的ram,我希望運行elasticsearch。根據文檔,一個節點不應該有超過32 GB的RAM,所以我想我必須在這臺機器上運行幾個節點才能使用所有的RAM。我正在考慮運行4個節點,每個節點有28 GB的內存。在一臺Ubuntu服務器上運行多個elasticsearch節點作爲服務

如何將其設置爲Ubuntu服務,以便所有節點在系統重啓後自動恢復,例如?我想我必須以某種方式編輯/etc/init.d/elasticsearch - 任何人都可以幫我解決嗎?

謝謝你們這麼多!

+0

可能我建議運行N(4?)虛擬機並將它們設置爲節點?例如,你可以製造10臺20Gb的機器,我不確定你是否受到內存或CPU的瓶頸。 – 2014-10-02 15:12:29

+0

感謝您的想法!然而,我不確定我是否不會因虛擬機設置的開銷而損失太多計算能力和存儲容量......服務器有8個1TB SSD設置爲RAID 10,並且願意充分利用那太... – user167172 2014-10-02 16:31:27

回答

3

我放棄了一段時間後,取消了elasticsearch repo-installation並下載了zip文件。然後,我創造了兩個新貴,迄今爲止所有事情都順利進行。

  1. 包裝

    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 

  • 實例
  • 
        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 
    
    +1

    我想你應該也看看設置cluster.routing.allocation.same_shard.host。 http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/heap-sizing.html#compressed_oops – slawek 2015-01-16 10:37:31

    2

    假設你的rpm或DEB創建的init.d腳本,在同一臺機器上啓動第二個節點,操作如下:

    cd /etc/init.d 
    cp --preserve elasticsearch elasticsearch2 
    

    編輯elasticsearch2腳本:

    1. 變化#elasticsearch至#elasticsearch2
    2. 添加節點= 「2」 後線PROG = 「elasticsearch」
    3. 變化了pidfile =的/ var /運行/ elasticsearch/$ {prog} .pid到pidfile =/var/run/elasticsearch/$ {prog} $ {node} .pid
    4. change lockfile =/var/lock/subsys/$ prog to lockfile =/var/lock/subsys/$ prog $ node
    5. change echo -n $「Starting $ prog:」to echo -n $「Starting $ prog:(node $ node)」
    6. change echo -n $「Stopping $ prog:」to echo -n $「Stopping $ prog:(node $ node)「

    保存文件。執行

    chkconfig --add elasticsearch2 
    service elasticsearch2 start 
    
    +1

    我還必須添加-Des.config = <路徑到第二個配置文件>到讓它工作 – JBernhardt 2015-06-24 15:46:27

    相關問題