準(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
- systemctl stop firewalld.service #停止firewall
- systemctl disable firewalld.service #禁止firewall開(kāi)機(jī)啟動(dòng)
- 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賬戶(hù)啟動(dòng),新開(kāi)一個(gè)用戶(hù)
#添加用戶(hù)yyf
adduser yyf
#修改yyf用戶(hù)的密碼
passwd yyf
#授予權(quán)限 chown –R用戶(hù)名 文件夾名
chown -R yyf /opt/elas/*
#用yyf賬戶(hù)登錄再次啟動(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]: 最大線(xiàn)程個(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用戶(hù)登錄系統(tǒng)宠蚂,執(zhí)行以下命令:
sysctl -w vm.max_map_count=262144
并用以下命令查看是否修改成功
sysctl -a | grep "vm.max_map_count"
如果能正常輸出262144式撼,則說(shuō)明修改成功
(2)或者切換到root用戶(hù)修改配置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"
}