es-安裝部署


1、下載安裝包

我下載的是7.16.2的版本,jdk需要11版本

https://www.elastic.co/cn/downloads/past-releases#elasticsearch

https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-16-2

2、上傳到服務器並解壓

tar -zxvf  elasticsearch-7.16.2-linux-x86_64.tar.gz

3、創建用戶

Elasticsearch不允許root用戶直接運行,可以直接試試,會報錯can not run elasticsearch as root,所以要創建新用戶,在root用戶下創建新用戶esuser

useradd esuser  #創建一個esuser的用戶chown -R esuser /opt/elasticsearch/elasticsearch-7.16.2/    #將這個文件夾權限賦給esuser

4、創建data和logs文件夾

mkdir /home/elasticsearch/data     
mkdir /home/elasticsearch/logs
chown -R esuser   /home/elasticsearch/data
chown -R esuser   /home/elasticsearch/logs

5、修改elasticsearch.yml文件

cluster.name: cluster001    ---集群名稱,單機的也可以配個名字

node.name: node01             ---節點名

path.data: /home/elasticsearch/data    ---data文件的存儲位置

path.logs: /home/elasticsearch/logs     ---log文件的存儲位置

network.host: 0.0.0.0            ----設置成這個表示所有ip都可以訪問

http.port: 9200                      ----http端口,區別於transport端口9300

http.cors.enabled: true          ----設置允許外部瀏覽器訪問,下面的設置也是為了這個

http.cors.allow-origin: "*"

cluster.initial_master_nodes: ["node01"]     -----集群初始化時的可作為master節點的節點列表

bootstrap.memory_lock: true    ---啟動時鎖定內存,運行中就會禁用交換區

 

6、修改jvm.options文件

初始內存和最大內存大小設置,官網強烈建議設置成一樣大小的

-Xms32g 

-Xmx32g

7、配置   /etc/sysctl.conf

# vim /etc/sysctl.conf

vm.max_map_count=655360

修改后執行  sysctl -p 使之生效

8、啟動

su esuser
bin/elasticsearch -d   后台啟動

安裝ik分詞器

下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

版本選擇:一定要選擇和安裝的es同版本的ik分詞器版本,比如我需要下載elasticsearch-analysis-ik-7.16.2.zip

找到安裝后的plugins文件夾,在下面創建一個ik文件夾(因為這個zip解壓后沒有一個父文件夾),然后將zip包放在ik下,unzip解壓,啟動es即可

部署中可能出現的問題

1、jdk8不支持7.16.2的es版本

這個是jdk版本需要使用11的,我下載的安裝包是有捆綁jdk的,那么就用自帶的捆綁的,因為bin/elasticsearch 這個腳本啟動時會調用  bin/elasticsearch-env這個腳本,打開后者,修改如下

# now set the path to java
if [ ! -z "$ES_JAVA_HOME" ]; then              ------意思是如果存在ES_JAVA_HOME環境變量
  JAVA="$ES_JAVA_HOME/bin/java"
  JAVA_TYPE="ES_JAVA_HOME"
elif [ ! -z "$JAVA_HOME" ]; then               ------如果存在JAVA_HOME環境變量,下面改為還是用ES_JAVA_HOME(es安裝包boundled的JDK)
  # fallback to JAVA_HOME
  echo "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME" >&2
  JAVA="$ES_JAVA_HOME/bin/java"                -------JAVA_HOME改為ES_JAVA_HOME
  JAVA_TYPE="ES_JAVA_HOME"                     -------JAVA_HOME改為ES_JAVA_HOME
else
  # use the bundled JDK (default)
  if [ "$(uname -s)" = "Darwin" ]; then
    # macOS has a different structure
    JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
  else
    JAVA="$ES_HOME/jdk/bin/java"
  fi
  JAVA_TYPE="bundled JDK"
fi

2、esuser權限不足

2022-03-09 16:07:29,043 main ERROR Null object returned for RollingFile in Appenders.
2022-03-09 16:07:29,043 main ERROR Null object returned for RollingFile in Appenders.
2022-03-09 16:07:29,043 main ERROR Unable to locate appender "rolling" for logger config "root"
2022-03-09 16:07:29,044 main ERROR Unable to locate appender "rolling_old" for logger config "root"
2022-03-09 16:07:29,044 main ERROR Unable to locate appender "index_indexing_slowlog_rolling_old" for logger config "index.indexing.slowlog.index"
2022-03-09 16:07:29,044 main ERROR Unable to locate appender "index_indexing_slowlog_rolling" for logger config "index.indexing.slowlog.index"
2022-03-09 16:07:29,045 main ERROR Unable to locate appender "audit_rolling" for logger config "org.elasticsearch.xpack.security.audit.logfile.LoggingAuditTrail"
2022-03-09 16:07:29,045 main ERROR Unable to locate appender "index_search_slowlog_rolling_old" for logger config "index.search.slowlog"
2022-03-09 16:07:29,045 main ERROR Unable to locate appender "index_search_slowlog_rolling" for logger config "index.search.slowlog"
2022-03-09 16:07:29,046 main ERROR Unable to locate appender "deprecation_rolling_old" for logger config "org.elasticsearch.deprecation"
2022-03-09 16:07:29,046 main ERROR Unable to locate appender "deprecation_rolling" for logger config "org.elasticsearch.deprecation"
uncaught exception in thread [main]
ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/home/elasticsearch/data/nodes];
Likely root cause: java.nio.file.AccessDeniedException: /home/elasticsearch/data/nodes
        at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
        at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
        at java.nio.file.Files.createDirectory(Files.java:674)
        at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
        at java.nio.file.Files.createDirectories(Files.java:767)
        at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:300)
        at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:224)
        at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:298)
        at org.elasticsearch.node.Node.<init>(Node.java:427)
        at org.elasticsearch.node.Node.<init>(Node.java:309)
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:234)
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:234)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:434)
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:166)
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:157)
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112)
        at org.elasticsearch.cli.Command.main(Command.java:77)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:122)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80)
For complete error details, refer to the log at /home/elasticsearch/logs/node152.log

這個是因為第四步創建了data和logs文件夾后,沒有chown給esuser賦權限的原因

3、沒有配置discovery

[2022-03-09T16:41:37,002][ERROR][o.e.b.Bootstrap          ] [node152] node validation exception
[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: the default discovery settings are unsuitable for production use; 
at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

配置這個:cluster.initial_master_nodes: ["node01"]   ,node01是配置的node.name值

 4、geoip報錯,不影響啟動和使用

[2022-03-11T10:33:04,296][ERROR][o.e.i.g.GeoIpDownloader  ] [node152] exception during geoip databases update
java.net.UnknownHostException: geoip.elastic.co
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[?:1.8.0_181]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_181]
        at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_181]
        at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:673) ~[?:?]
        at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[?:?]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) ~[?:?]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) ~[?:?]
        at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264) ~[?:?]
        at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367) ~[?:?]
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191) ~[?:?]
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156) ~[?:?]
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050) ~[?:?]
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177) ~[?:?]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564) ~[?:?]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) ~[?:?]
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[?:1.8.0_181]
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347) ~[?:?]
        at org.elasticsearch.ingest.geoip.HttpClient.lambda$get$0(HttpClient.java:55) ~[ingest-geoip-7.16.2.jar:7.16.2]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_181]
        at org.elasticsearch.ingest.geoip.HttpClient.doPrivileged(HttpClient.java:97) ~[ingest-geoip-7.16.2.jar:7.16.2]
        at org.elasticsearch.ingest.geoip.HttpClient.get(HttpClient.java:49) ~[ingest-geoip-7.16.2.jar:7.16.2]
        at org.elasticsearch.ingest.geoip.HttpClient.getBytes(HttpClient.java:40) ~[ingest-geoip-7.16.2.jar:7.16.2]
        at org.elasticsearch.ingest.geoip.GeoIpDownloader.fetchDatabasesOverview(GeoIpDownloader.java:135) ~[ingest-geoip-7.16.2.jar:7.16.2]
        at org.elasticsearch.ingest.geoip.GeoIpDownloader.updateDatabases(GeoIpDownloader.java:123) ~[ingest-geoip-7.16.2.jar:7.16.2]
        at org.elasticsearch.ingest.geoip.GeoIpDownloader.runDownloader(GeoIpDownloader.java:260) [ingest-geoip-7.16.2.jar:7.16.2]
        at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:97) [ingest-geoip-7.16.2.jar:7.16.2]
        at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:43) [ingest-geoip-7.16.2.jar:7.16.2]
        at org.elasticsearch.persistent.NodePersistentTasksExecutor$1.doRun(NodePersistentTasksExecutor.java:42) [elasticsearch-7.16.2.jar:7.16.2]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:777) [elasticsearch-7.16.2.jar:7.16.2]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-7.16.2.jar:7.16.2]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_181]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_181]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]

原因:此版本默認開啟了GeoIp功能,默認啟動下會去官網默認地址下獲取最新Ip的GEO信息

增加配置 ingest.geoip.downloader.enabled: false即可

5、host無法識別

[2022-03-11T10:30:25,370][WARN ][o.e.d.SeedHostsResolver  ] [node152] failed to resolve host [node152:9300]

我的其中一個配置是:discovery.zen.ping.unicast.hosts: ["node152:9300"]

這是因為node152沒有配置到host里,無法識別,改成ip或者修改hosts文件添加進去


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM