在Linux環(huán)境下安裝部署ElasticSearch過(guò)程整理

準(zhǔn)備一個(gè)Linux系統(tǒng)

我這里在虛擬機(jī)上裝了一個(gè) CentOS-7-x86_64-Minimal-1708.iso

net-tools安裝

由于此版本的系統(tǒng)在ifconfig無(wú)法執(zhí)行,所以安裝net-tools
yum install net-tools

關(guān)閉防火墻firewall

  1. systemctl stop firewalld.service #停止firewall
  2. systemctl disable firewalld.service #禁止firewall開(kāi)機(jī)啟動(dòng)
  3. firewall-cmd --state #查看默認(rèn)防火墻狀態(tài)(關(guān)閉后顯示notrunning,開(kāi)啟后顯示running)

JDK 8 安裝

yum -y list java*
yum -y install java-1.8.0-openjdk*

ElasticSearch 下載

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz

安裝部署

將下載完的壓縮包放到Linux文件夾中,然后執(zhí)行啟動(dòng)
[root@localhost bin]# ./elasticsearch

啟動(dòng)過(guò)程中的錯(cuò)誤解決

異常1

OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
[2018-04-27T11:08:42,374][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.4.jar:6.2.4]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.4.jar:6.2.4]
    ... 6 more

解決1

看報(bào)錯(cuò)信息就是內(nèi)存大小問(wèn)題導(dǎo)致的,所以配置/elasticsearch-6.2.4/config/jvm.options
加上
8:-XX:ParallelGCThreads=2

異常2

[o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.4.jar:6.2.4]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.4.jar:6.2.4]
    ... 6 more

解決2

Elasticsearch 服務(wù)默認(rèn)無(wú)法 用root賬戶啟動(dòng),新開(kāi)一個(gè)用戶
#添加用戶yyf
adduser yyf
#修改yyf用戶的密碼
passwd yyf
#授予權(quán)限 chown –R用戶名 文件夾名 
chown -R yyf  /opt/elas/*   
#用yyf賬戶登錄再次啟動(dòng)
[root@localhost /]# su yyf
#到elasticsearch目錄的bin下,
[yyf@localhost bin]$ ./elasticsearch

異常3

ERROR: [4] bootstrap checks failed
[1]: initial heap size [16777216] not equal to maximum heap size [257949696]; this can cause resize pauses and prevents mlockall from locking the entire heap
[2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[3]: max number of threads [3818] for user [yyf] is too low, increase to at least [4096]
[4]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決3

[1]: 配置/elasticsearch-6.2.4/config/jvm.options JVM heap size
-Xms500m
-Xmx500m
[2]: 每個(gè)進(jìn)程最大同時(shí)打開(kāi)文件數(shù)太小,可通過(guò)下面2個(gè)命令查看當(dāng)前數(shù)量同[3]一起設(shè)置
[3]: 最大線程個(gè)數(shù)太低。修改配置文件/etc/security/limits.conf 
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

[4]: (1)是以為操作系統(tǒng)的vm.max_map_count參數(shù)設(shè)置太小導(dǎo)致的,請(qǐng)使用root用戶登錄系統(tǒng),執(zhí)行以下命令: 
sysctl -w vm.max_map_count=262144 
并用以下命令查看是否修改成功 
sysctl -a | grep "vm.max_map_count"
如果能正常輸出262144,則說(shuō)明修改成功
(2)或者切換到root用戶修改配置sysctl.conf
vi /etc/sysctl.conf 
添加下面配置:
vm.max_map_count=655360
并執(zhí)行命令:
sysctl -p

查看服務(wù)是否成功

訪問(wèn):http://192.168.176.128:9200/?pretty (換上自己的ip地址)
返回結(jié)果如下

{
   "name": "node-2",
   "cluster_name": "my-application",
   "cluster_uuid": "uOfUA9QfScqn2Jnri-UIhA",
   "version": {
       "number": "6.2.4",
       "build_hash": "ccec39f",
       "build_date": "2018-04-12T20:37:28.497551Z",
       "build_snapshot": false,
       "lucene_version": "7.2.1",
       "minimum_wire_compatibility_version": "5.6.0",
       "minimum_index_compatibility_version": "5.0.0"
   },
   "tagline": "You Know, for Search"
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容