ElasticSearch在Linux上的部署以及常見問題解決方案

準備環境

操作系統:64位Ubuntu-14.04.6
ElasticScarch版本:6.4.0
JDK:1.8

開始環境的搭建

添加普通用戶賬號:
由於Elasticsearch可以接收用戶輸入的腳本並且執行,爲了系統安全考慮,不允許root賬號啓動,所以需要使用普通賬戶啓動項目,或者給Elasticsearch單獨創建一個用戶來運行Elasticsearch。使用命令,添加一個用戶叫es,然後設置密碼。

adduser esuser
passwd esuser
然後設置你的用戶密碼

用戶創建好之後,切換到esuser用戶。

解壓Elasticscarch6.4.0:

下載好elasticsearch-6.4.0.tar.gz之後,複製到esuser用戶目錄下,並解壓Elasticscarch6.4.0:

命令:tar -zxvf elasticsearch-6.4.0.tar.gz

如果當前登錄用戶是root賬戶,需要把Elasticscarch6.4.0文件夾的所有者和訪問權限賦予esuser,否則使用esuser啓動時會提示權限不夠。可通過如下命令配置:

進入elasticsearch-6.4.0目錄的上一級,將elasticsearch-6.4.0目錄下的所有文件權限賦予esuser用戶。

chown -R esuser elasticsearch-6.4.0
chmod -R 755 elasticsearch-6.4.0

介紹一下Elasticscarch目錄的結構:

目錄名稱 作用與用途
bin 用於運行Elasticsearch和管理一些應用的腳本
config 配置文件專用目錄
lib Elasticsearch使用的庫
modules 加載的模板列表(內置插件)
plugins 自定義插件目錄(例如,放置中文分詞插件ik)
data 數據存儲目錄(啓動後會自動生成該目錄)
logs 日誌存放目錄(啓動後會自動生成該目錄)

配置Elasticsearch:

注意事項:在Elasticsearch配置中需要注意兩項的配置,一種是Elasticsearch本身的配置,
另外還需要修改Linux的一些內核參數。

進入Elasticsearch的config配置文件目錄,有如下配置文件:

配置文件名稱 作用與用途
elasticsearch.yml Elasticsearch核心的配置文件
jvm.options JVM的參數配置文件
log4j2.properties 日誌的配置文件

編輯elasticsearch.yml文件

命令:vim elasticsearch.yml

常見部分配置項,單機器部署的話,可以都不用配置,elasticsearch會有默認配置:

參數名稱 參數作用與用途
cluster.name 集羣名稱,elasticsearch會通過相同名稱組成一個集羣(建議名稱複雜些,防止跟其他集羣重名)
node.name 節點名稱(可以不用設置,默認即可)
node.attr.rack 屬性(可以不用設置,默認即可)
node.master 是否主節點(不設置默認是true)
node.data 是否數據節點(不設置默認是true)
path.data 數據存放目錄(node.data設爲rue生效,不設置默認會在elasticsearch目錄下創建data目錄存放數據。可設置多個存儲路徑,逗號分割)
path.logs 日誌存放目錄(不設置默認會在elasticsearch目錄下創建logs目錄存放日誌)
bootstrap.memory_lock es啓動時是否鎖內存(避免報錯,一般都設置成true)
network.host 對外發布的ip地址(默認爲127.0.0.1,集羣時需要設置爲自己的主機通訊IP)
http.port 對外發布的端口(不設置默認是9200)
transport.tcp.port 內部節點之間通信端口(不設置默認是9300)
discovery.zen.ping.unicast.hosts

參與選舉master的其他節點ip和內部節點通信端口,採用zen方式對外單播,組建集羣的IP。

(例:["192.168.0.88:9300","192.168.0.89:9300"])

discovery.zen.minimum_master_nodes 最小主節點數(防止腦裂參數,一般設置公式:所有node節點數 /2 +1)
indices.query.bool.max_clause_count  最大搜索條件數目(爲防止生產環境誤輸入過多查詢參數影響性能,一般需要限制,比如3000)
node.max_local_storage_nodes 本機最大運行存儲節點數
index.store.type 不同的文件系統有不同的存儲類型:

simplefs:併發性能較差,多線程會出現瓶頸。

niofs:可以多個線程併發地讀同一個文件。當索引需要持久化最好使用niofs。

mmapfs:將映射的文件加載到虛擬地址空間。在使用該類型之前,請確定是否有足夠的虛擬內存。

默認情況下,Elasticsearch將根據操作環境選擇最佳實現(有時未必是業務最佳,需調整

啓動elasticsearch:

進入到elasticsearch-6.4.0/bin目錄下,啓動項目。

./elasticsearch

啓動遇到的常見問題:

1、每個進程最大同時打開文件數太小

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

可通過下面2個命令查看當前數量

ulimit -Hn
ulimit -Sn

解決方案:切到root 用戶下,修改 /etc/security/limits.conf,在文件的末尾添加下面的參數值(*號表示針對所有用戶):

* soft nofile 65536
* hard nofile 65536

用戶退出後重新登錄生效。

2、無法創建本地線程問題,用戶最大可創建線程數太小

max number of threads [3818] for user [es] is too low, increase to at least [4096]

最大線程個數太低,可通過命令查看:

ulimit -Hu
ulimit -Su

解決方案:需要修改配置文件/etc/security/limits.conf(和問題1是一個文件)增加配置,用戶退出後重新登錄生效

*soft nproc 4096
*hard nproc 4096

3、最大虛擬內存太小,需要修改系統變量的最大值。

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決方案:切換到root用戶,修改配置sysctl.conf,增加配置值: vm.max_map_count=262144

$ vim /etc/sysctl.conf
vm.max_map_count=262144

執行命令:sysctl -p,可以立即生效。

4、無法創建本地線程問題,用戶最大可創建線程數太小

max number of threads [1024] for user [es] likely too low, increase to at least [2048]

解決方案:切換到root用戶,修改配置文件: /etc/security/limits.d/90-nproc.conf:

* soft nproc 2048

5、權限不夠

bash: ./elasticsearch:權限不夠

如果已經執行了chmod -R 755 elasticsearch-6.4.0,需要進入elasticsearch-6.4.0/bin目錄下,右鍵elasticsearch文件,勾選:允許作爲程序執行文件。然後重新啓動。

6、JVM虛擬機內存不足

JavaHotSpot(TM) 64-Bit Server VM warning: INFO: error='Cannotallocate memory' (errno=12)

因爲elasticsearch默認佔用內存2g,虛擬機分配的JVM內存不足。

解決方案:進入修改elasticsearch-6.4.0/config/jvm.options,可以修改爲1g或者512M,根據本機情況設置。

-Xms512M
-Xmx512M

驗證啓動

瀏覽器輸入:http://localhost:9200/,出現如下類似界面,就表示啓動成功:

{
  "name" : "node-1",
  "cluster_name" : "es",
  "cluster_uuid" : "02fx6rYHRz6v0AGMJDB2MA",
  "version" : {
    "number" : "6.4.0",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "595516e",
    "build_date" : "2018-08-17T23:18:47.308994Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

如果沒有什麼問題的話,可以使用後臺啓動:

$ ./bin/elasticsearch -d
$ ss -tnlp |grep 9200

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章