es安装

1、检查Linux操作系统的发行版本

[root@camel-line ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)
Release: 7.6.1810
Codename: Core

2、检查Java jdk环境

[root@camel-line ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

如果没有安装Java环境可以使用yum命令安装:
1、首先检索包含Java的列表。

[root@camel-line ~]# yum list java*

2、安装

[root@camel-line ~]# yum install java-1.8.0-openjdk* -y

3、下载安装ELasticsearch

不同的操作系统使用不同的系统命令来下载和启动Elasticsearch。下面只列出最常用的服务器操作系统发行版对应的命令(deb为Debian/Ubuntu, rpm为Redhat/Centos/Fedora):
1、下载

[root@camel-line ~]# curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.rpm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  108M  100  108M    0     0  49703      0  0:38:14  0:38:14 --:--:-- 37253

2、安装

[root@camel-line ~]# sudo rpm -i elasticsearch-6.6.0.rpm 
warning: elasticsearch-6.6.0.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Creating elasticsearch group... OK
Creating elasticsearch user... OK
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
 sudo systemctl daemon-reload
 sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
 sudo systemctl start elasticsearch.service
Created elasticsearch keystore in /etc/elasticsearch
[root@camel-line ~]# 

3、设置服务随机自启动

[root@camel-line ~]# sudo systemctl daemon-reload
[root@camel-line ~]# sudo systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@camel-line ~]# 

4、检验操作系统使用的初始化系统是sysvinit还是systemd(由较新的发型版使用)。可以使用以下命令判断:

[root@camel-line ~]# ps -p 1
  PID TTY          TIME CMD
    1 ?        00:00:02 systemd
[root@camel-line ~]# 

4、在开始之前让我们配置必要的配置项

4.1、配置日志和数据的文件夹位置

如果这些重要的文件夹保留在其默认位置,在升级es到新版本时,存在数据丢失的高风险,在生产使用中,最好更改数据和日志文件夹的位置。

[root@camel-line /]# cd data
[root@camel-line data]# ll
total 16
drwx------ 2 root root 16384 Feb 27 16:23 lost+found
[root@camel-line data]# mkdir elasticsearch
[root@camel-line data]# cd elasticsearch/
[root@camel-line elasticsearch]# ll
total 0
[root@camel-line elasticsearch]# mkdir data
[root@camel-line elasticsearch]# mkdir log
[root@camel-line elasticsearch]# ll
total 8
drwxr-xr-x 2 root root 4096 Feb 28 15:55 data
drwxr-xr-x 2 root root 4096 Feb 28 15:56 log
[root@camel-line elasticsearch]# pwd
/data/elasticsearch
[root@camel-line elasticsearch]# ll
total 8
drwxr-xr-x 2 root root 4096 Feb 28 15:55 data
drwxr-xr-x 2 root root 4096 Feb 28 15:56 log
[root@camel-line elasticsearch]# 

创建完目录后,我们在elasticsearch.yml配置文件中配置日志和数据的路径:

path:
  logs:/data/elasticsearch/log
  data:/data/elasticsearch/data

4.2配置集群名称

节点只能在与集群中其他节点拥有共同的集群名称才被允许加入集群。默认情况下,cluster.name:elasticsearch,我们应该修改为适当的集群名称。确保在不要在不同的环境中重用相同的集群名称,否则会导致节点加入错误的集群。

我们在elasticsearch.yml配置文件中配置集群名称:

cluster.name: yto_elk

4.3配置节点名称

默认情况下,es将使用随机生成的UUID的前七个字符作为节点id(即节点名称)。节点名称是持久的,在节点重新启动时不会更改,因此默认节点名称也不会更改。我们应该配置一个更有意义的名称,便于管理集群。

我们在elasticsearch.yml配置文件中配置节点名称:

node.name: node_3

4.4设置堆大小

默认情况下,Elasticsearch设置JVM使用最大和最小为1GB的堆。生产环境时,配置堆大小确保Elasticsearch有足够的可用堆是非常重要的。ELasticsearch将通过设置最小堆大小和最大堆大小分配jvm.options中指定的整个堆。最大堆大小和最小堆大小的值取决于服务器上可用的RAM的量。好的经验法则是:

  • 将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。
  • Elasticsearch可用的堆越多,它可用于缓存的内存就越多。但是请注意,过多的堆可能会使服务陷入长时间的垃圾收集暂停。
  • 设置Xmx为不超过物理RAM的50%,以确保有足够的物理RAM用于内核文件系统缓存。
  • 不要设置Xmx为JVM用于压缩对象指针的截止值之上。确切的截止值不同但是接近32GB。
  • 更好的是,尽量保持低于零基础压缩oops的阈值,确切的截止值有所不同,但是大多数系统上26GB是安全的,但在某些系统上可高达30GB。

我们在jvm.options配置文件中设置堆大小:

-Xms2g
-Xmx2g

4.5设置JVM堆转储路径

默认情况下,Elasticsearch配置JVM将内存异常转储到默认的数据目录。如果这个路径不适合接受堆转储,应该修改在jvm.options文件中的-XX:HeapDumpPath=...配置项。

我们在jvm.options配置文件中设置JVM堆转储路径:

-XX:HeapDumpPath=/data/elasticsearch/data

4.6设置GC日志路径

默认情况下,ELasticsearch启用GC日志。这些配置在jvm.options文件中且默认使用与ELasticsearch默认日志的相同位置。默认配置每64 MB轮换一次日志,最多可占用2 GB的磁盘空间。

我们在jvm.options配置文件中设置GC日志文件路径:

8:-Xloggc:/data/elasticsearch/log/gc.log

4.7设置JVM致命错误日志位置

默认情况下,ELasticsearch将JVM配置为将致命错误日志写入到默认的日志记录目录。这些是JVM在遇到致命错误时生成的日志。如果该路径不适合接收这种日志,则应该在jvm.options文件中修改-XX:ErrorFile=...到备用路径。

我们在jvm.options配置文件中设置致命错误日志路径:

-XX:ErrorFile=/data/elasticsearch/log/hs_err_pid%p.log

5、重要的系统设置

理想情况下,ELasticsearch应该在服务器上单独运行,并使用它可用的所有资源。为此,需要配置操作系统以允许运行ELasticsearch的用户访问比默认情况下允许的资源更多的资源。

在投入生产之前,必须考虑以下设置:

  • 禁用交换区间
  • 增加文件描述符
  • 确保足够的虚拟内存
  • 确保足够的线程
  • JVM DNS缓存设置
  • 不使用noexec挂载的临时目录

使用rpm或deb软件包安装的elasticsearch服务已经大部分默认设置好了,无需再进一步设置。

这里主要讲一下禁用交换区间的配置:
1、 配置elasticsearch.yml文件:

bootstrap.memory_lock: true

2、在系统配置文件(deb:/etc/default/elasticsearch, rpm:/etc/sysconfig/elasticsearch)中配置:

MAX_LOCKED_MEMORY=unlimited

3、使用systemd的系统,在系统配置中设置LimitMEMLOCK=infinity。对于使用systemd系统,需要通过systemd指定系统限制。systemd服务文件(/usr/lib/systemd/system/elasticsearch.service)包含默认应用的限制。要覆盖它们,请添加一个名为/etc/systemd/elasticsearch.service.d/override.conf文件,或者可以运行sudo systemctl edit elasticsearch命令,此命令在默认编辑器中自动打开上述文件。

[root@camel-line elasticsearch]# systemctl edit elasticsearch

设置文件中的任何更改,例如:

[Service]
LimitMEMLOCK=infinity

完成修改后,保存退出,运行以下命令重载单元:

[root@camel-line elasticsearch]# systemctl daemon-reload

6、使Elasticsearch用户具有管理员操作权限

首先,在通过包管理工具(dpg, rpm)安装ELK组件的时候,会在安装的时候,默认给你创建出对应的用户和用户组(elasticsearch,logstash,kibana)。这个用户名的初始密码是未知的,你不能通过它直接登陆或通过ssh远程登陆,也只能在root权限下进行su。

6.1、使用户可以登录

首先,我们需要使用户可以直接或远程登陆。第一步就需要修改用户密码。通过passwd命令:

[root@camel-line /]# passwd elasticsearch
Changing password for user elasticsearch.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
6.2、创建用户目录

然后,用户登陆上来,至少得有自己的工作目录:

[root@camel-line /]# mkdir /elasticsearch
[root@camel-line /]# usermod -d /home/elasticsearch -m -u 997  elasticsearch

注意:997是用户pid,在/etc/passwd文件中可以找到。

6.3、增加用户权限

最后,我们需要给用户增加点权限。
通过vi打开/etc/passwd文件,找到你想修改的用户,比如elasticsearch:

[root@camel-line /]# vim /etc/passwd

修改配置文件:

elasticsearch:x:997:995:elasticsearch user:/home/elasticsearch:/bin/bash

退出保存,重新打开窗口生效。

6.4、若是无法启动es,执行下面这一步
[root@camel-line ~]# chown -R elasticsearch:elasticsearch  /usr/share/elasticsearch
[root@camel-line ~]# chown -R elasticsearch:elasticsearch  /etc/elasticsearch
[root@camel-line ~]# chown -R elasticsearch:elasticsearch  /data/elasticsearch
[root@camel-line ~]# chown -R elasticsearch:elasticsearch  /etc/sysconfig/elasticsearch

7、启动es

到这里我们可以在root、elasticsearch用户下通过命名启动es:

systemctl start elasticsearch.service

通过以下命令检查是否启动成功:

systemctl status elasticsearch.service

如果报错请查看指定的es日志目录下(/data/elasticsearch/log)的日志文件查看具体原因。

7.1通过以下命令检查内存是否锁定:
[root@camel-line ~]# curl -X GET "localhost:9200/_nodes?filter_path=**.mlockall"

正常返回值:

{"nodes":{"2kOL_j8qRCm8PO907A29iA":{"process":{"mlockall":true}}}}

7.2通过以下命令检查文件描述符:
[root@camel-line ~]# curl -X GET "localhost:9200/_nodes/stats/process?filter_path=**.max_file_descriptors"

正常返回格式:

{"nodes":{"2kOL_j8qRCm8PO907A29iA":{"process":{"max_file_descriptors":65536}}}}

7.3通过以下命令检查虚拟内存
[root@camel-line ~]# sysctl vm.max_map_count
vm.max_map_count = 262144
[root@camel-line ~]# 

8、破解xpack、升级许可证

es是开源的,但是在一些高级功能上是收费的。新版的es安装后默认安装了X-pack高级插件,但是,默认安装后的es带有的是基础许可证,很多功能是不可使用的。在条件许可下,推荐使用正版,但本次我们是学习为主,下面介绍一下破解方案,以及升级许可证。

8.1X-pack破解

1、获取x-pack-core-6.6.0.jar压缩包(安装的版本不同,对应的后面的版本号不同),位于elasticsearch主安装目录下的/modules/x-pack-core/目录下。

2、使用luyten反编译x-pack-core-6.6.0.jar:

我们在window上把软件下载下来,打开软件,把x-pack-core-6.6.0.jar丢进去,我们就能看到jar包的源代码了。
我们需要把2个文件提取出来进行修改(另存为两个新文件):

  • org.elasticsearch.license.LicenseVerifier
  • org.elasticsearch.xpack.core.XPackBuild

3、修改LicenseVerifier
LicenseVerifier 中有两个静态方法,这就是验证授权文件是否有效的方法,我们把它修改为全部返回true。

package org.elasticsearch.license;

import java.nio.*;
import org.elasticsearch.common.bytes.*;
import java.security.*;
import java.util.*;
import org.elasticsearch.common.xcontent.*;
import org.apache.lucene.util.*;
import org.elasticsearch.core.internal.io.*;
import java.io.*;

public class LicenseVerifier
{
    public static boolean verifyLicense(final License license, final byte[] publicKeyData) {
        return true;
    }
    
    public static boolean verifyLicense(final License license) {
        return true;
    }
}

4、修改XPackBuild
XPackBuild 中最后一个静态代码块中 try的部分全部删除,这部分会验证jar包是否被修改。

package org.elasticsearch.xpack.core;

import org.elasticsearch.common.io.*;
import java.net.*;
import org.elasticsearch.common.*;
import java.nio.file.*;
import java.io.*;
import java.util.jar.*;

public class XPackBuild
{
    public static final XPackBuild CURRENT;
    private String shortHash;
    private String date;
    
    @SuppressForbidden(reason = "looks up path of xpack.jar directly")
    static Path getElasticsearchCodebase() {
        final URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();
        try {
            return PathUtils.get(url.toURI());
        }
        catch (URISyntaxException bogus) {
            throw new RuntimeException(bogus);
        }
    }
    
    XPackBuild(final String shortHash, final String date) {
        this.shortHash = shortHash;
        this.date = date;
    }
    
    public String shortHash() {
        return this.shortHash;
    }
    
    public String date() {
        return this.date;
    }
    
    static {
        final Path path = getElasticsearchCodebase();
        String shortHash = null;
        String date = null;
        Label_0109: {
            shortHash = "Unknown";
            date = "Unknown";
        }
        CURRENT = new XPackBuild(shortHash, date);
    }
}

5、编译修改后的Java文件, 把修改好的两个Java文件放到服务器上编译(随便哪个目录下):

javac -cp "/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-6.6.0.jar:/usr/share/elasticsearch/lib/*" LicenseVerifier.java

javac -cp "/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-6.6.0.jar:/usr/share/elasticsearch/lib/*" XPackBuild.java

需要注意的是,编译这两个文件的时候需要指定依赖包的位置, 如果你的位置和我的有区别,请注意修改。

6、将编译好的class文件重新压回x-pack-core-6.6.0.jar
在window系统上解压x-pack-core-6.6.0.jar 会得到一个 x-pack-core-6.6.0的目录,按照其位置将编译好的2个 class文件放到我们目录里面,替换老的。然后把这个x-pack-core-6.6.0目录传到服务器上。

将修改过的 x-pack-core-6.6.0目录重新压成jar包。

jar -cvf x-pack-core-6.6.0.jar -C x-pack-core-6.6.0 .

7、将重新压缩成的jar包替换掉老的重启es。

8.2升级许可证

1、 先从官网申请basic授权文件
https://license.elastic.co/registration

2、 授权文件修改

{
  "uid": "6fb96d6b-938c-45ff-9ce7-6b53b39cd7dd",
  "type": "platinum", # 修改授权为白金版本
  "issue_date_in_millis": 1530489600000,
  "expiry_date_in_millis": 2855980923000, #修改到期时间为2060-07-02
  "max_nodes": 100,  # 修改最大节点数
  "issued_to": "xxxx",
  "issuer": "Web Form",
  "signature":"AAAAAwAAAA3PP60wKNtAvRmuCGdSAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01V",
   "start_date_in_millis": 1530489600000
} 

3、通过API接口上传

curl -XPUT 'http://es-ip:port/_xpack/license' -H "Content-Type: application/json" -d @<path>/license.json

9、设置内置用户

X-Pack安全性提供内置用户凭据,以帮助您启动和运行。这些用户具有一组固定的权限,在设置密码之前无法进行身份验证。该elastic用户可以用来设置所有内置的用户密码:

  • elastic:内置的超级用户
  • kibana:用户kibana用于连接Elasticsearch并与之通信
  • logstash_system:logstash用户在ELasticsearch中存储监视信息时使用
  • beats_system:Beats在Elasticsearch中存储监控信息时使用的用户。
  • apm_system:APM服务器在Elasticsearch中存储监视信息时使用的用户。
  • remote_monitoring_user:Metricbeat用户在Elasticsearch中收集和存储监控信息时使用。它具有remote_monitoring_agent和 remote_monitoring_collector内置的角色。

这些内置用户存储在.security由X-Pack安全性管理的特殊索引中。这意味着,如果更改了密码或禁用了用户,则该更改将自动反映在群集中的每个节点上。这也意味着如果.security索引被删除或从快照恢复,那么应用的任何更改都将丢失

安装ELasticsearch时,如果elastic用户还没有密码,则使用默认的引导密码。引导密码是一个临时密码,使我们可以运行设置所有内置用户密码的工具。

9.1设置内置用户密码

必须为所有内置用户设置密码。
elasticsearch-setup-passwords工具是第一次设置内置用户密码的最简单方法。它使用elastic用户的引导密码来运行用户管理API请求。例如,在窗口模式运行以下命令,这提示你为elastic,kibana,logstash_system,beats_system,apm_system,和 remote_monitoring_user用户输入新密码:

bin / elasticsearch-setup-passwords interactive

注意:为elastic用户设置密码后,引导密码不再有效。不能再次运行elasticsearch-setup-passwords命令。

通过以下命令验证用户和升级后的许可证:

[elasticsearch@camel-line elasticsearch]$ curl -u elastic:yto_elk_2019 'localhost:9200/_xpack/license'
{
  "license" : {
    "status" : "active",
    "uid" : "8d2b7885-396d-4c9c-b6b6-3c296521bacb",
    "type" : "platinum",
    "issue_date" : "2019-02-27T00:00:00.000Z",
    "issue_date_in_millis" : 1551225600000,
    "expiry_date" : "2060-07-02T08:02:03.000Z",
    "expiry_date_in_millis" : 2855980923000,
    "max_nodes" : 100,
    "issued_to" : "y to (yto)",
    "issuer" : "Web Form",
    "start_date_in_millis" : 1551225600000
  }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 1. 安装: 要求至少Java 8(推荐使用Oracle JDK version 1.8.0_121)并设置$JA...
    simonsgj阅读 2,210评论 0 9
  • Elastic+logstash+head简单介绍 一. 概述 ElasticSearch是一个基于Lucene的...
    柒月失凄阅读 4,235评论 0 4
  • 本篇主要讲述如何部署一个ES服务器。ES版本:5.6.0。服务器版本:centOS6.9,macOS。 下载地址:...
    靈08_1024阅读 8,679评论 0 1
  • 1 安装elasticsearch 将elasticsearch-6.3.2.zip加压到任意目录即可,该附件已安...
    SpongeBob90阅读 465评论 0 0
  • 你说,我春天写的诗 怎么入秋就变黄啦 你说,木棉花恣意盛开 我俩错失了整整一个季节 你说,种子已经结了果 我却没有...
    60岁的青春阅读 364评论 4 12