1.安装

1.1 安装Elasticsearch

导入Elasticsearch GPG KEY:

1
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

添加elasticsearch的yum repo文件,使用清华的yum源镜像:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
cd /etc/yum.repos.d
vi elasticsearch7.repo

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://mirror.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安装并启动ES:

1
2
3
4
5
yum install elasticsearch

systemctl start elasticsearch
systemctl status elasticsearch
systemctl enable elasticsearch

查看系统内核参数,确认安装过程已经对``完成了设置:

1
2
sysctl vm.max_map_count
vm.max_map_count = 262144

检查ES正常运行:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
curl -X GET "localhost:9200/?pretty"
{
  "name" : "centos7",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "7wWOyxwyRiuPIC80FjewmQ",
  "version" : {
    "number" : "7.3.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "de777fa",
    "build_date" : "2019-07-24T18:30:11.767338Z",
    "build_snapshot" : false,
    "lucene_version" : "8.1.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

使用yum安装的elasticsearch,ES默认安装的主目录在/usr/share/elasticsearch中,从ES 7.x开始内置了JDK,可以在安装的主目录中找到jdk目录。 配置文件的默认位置为/etc/elasticsearch/elasticsearch.yml,同时还有一个系统配置文件位于/etc/sysconfig/elasticsearch,可以设置诸如ES_JAVA_OPTS等很多配置,另外有专门的/etc/elasticsearch/jvm.options配置文件可配置ES的JVM配置(ES官方博客中有一篇专门介绍ES JVM堆内存配置的文章https://www.elastic.co/blog/a-heap-of-trouble)。 elasticsearch.yml中默认配置的数据目录和日志目录如下:path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearch

接下来安装国际化分词插件analysis-icu:

1
2
3
4
/usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu

/usr/share/elasticsearch/bin/elasticsearch-plugin list
analysis-icu

1.2 集群配置

测试环境准备两个节点,elasticsearch.yml中针对集群配置如下:

1
2
3
4
cluster.name: my-cluster
node.name: es-01
network.host: 192.168.99.21 #network.host: 192.168.99.22 
discovery.seed_hosts: ["192.168.99.21", "192.168.99.22"]

查看集群状态和集群节点列表:

1
2
3
4
5
6
7
curl -X GET "192.168.99.21:9200/_cat/health?pretty"
my-cluster green 2 2 0 0 0 0 0 0 - 100.0%


curl -X GET "192.168.99.21:9200/_cat/nodes"
192.168.99.21 11 93 1 0.30 0.44 0.30 dim - es-01
192.168.99.22  8 94 2 0.43 0.52 0.42 dim * es-02

1.3 外部工具安装head或cerebro

另外可进一步安装外部工具elasticsearch-headcrebro。 这两个工具都可以可视化的呈现ES集群、节点及分片信息。

1.4 安装Kibana

安装ES时添加清华yum源中已经包含了kibana,下面直接使用yum安装即可。

1
yum install kibana

使用yum安装的kibana,默认安装的主目录在/usr/share/kibana中。kibana配置文件的位置为/etc/kibana/kibana.yml。 下面修改kibana.yml中的server.host: "localhost"为服务器具体的IPserver.host: "192.168.99.21",因为默认监听的是localhost。 另外kibana.yaml中的elasticsearch.hosts: ["http://192.168.99.21:9200", "http://192.168.99.22:9200"]指定了kibana连接的ES的地址。 通过i18n.locale: 'zh-CN'可修改kibana的本地化配置。

启动:

1
2
systemctl enable kibana
systemctl start kibana

kibana默认监听5601端口,启动成功后可使用http://192.168.99.21:5601打开kibana的Web页面。 kibana安装完成后还可选择安装kibana的一些插件,具体插件的列表地址为https://www.elastic.co/guide/en/kibana/current/known-plugins.html

1.5 安装Logstash

因为当前7.3版本的logstash中还未内置JDK,所以需要预先指定JAVA_HOME环境变量,这里指定为前面安装elasticsearch时内置的JDK。

1
export JAVA_HOME=/usr/share/elasticsearch/jdk

安装ES时添加清华yum源中也包含了kibana,直接使用yum安装logstash即可。

1
yum install logstash

在启动前还需要创建或修改文件/etc/sysconfig/logstash在其中加入环境变量JAVA_HOME=/usr/share/elasticsearch/jdk,这里logstash和ES在同一台机器上,所以直接使用ES的JDK。

启动:

1
2
systemctl enable kibana
systemctl start kibana

Logstash使用JRuby语言开发,默认yum安装的Logstash的各种配置文件在/etc/logstash下。

1
2
3
4
5
6
7
8
/etc/logstash/
├── conf.d
├── jvm.options
├── log4j2.properties
├── logstash-sample.conf
├── logstash.yml
├── pipelines.yml
└── startup.options

logstash.yml是logstash自己的setting配置文件,这个配置文件里面可以设置关于logstash本身的一些配置。

logstash-sample.conf是一个logstash收集处理数据即pipeline配置文件样例,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

从这个配置文件可以很容易看出logstash从beats input插件接受数据,并使用elastisearch output插件将数据输出并索引到ES中。 一般一个典型的logstash配置形式是input -> filter -> output(elastisearch)。 filer插件用于对数据做处理,而logstash除了elasticsearch output外还提供了一些其他的output插件。关于这input, filter, output这三种类型的插件列表可以再官方文档中找到:

最后是pipeline.yml配置文件:

1
2
- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"

默认只定义了一个id为main的pipeline,将读取/etc/logstash/conf.d目录下所有的conf文件。

2.配置

2.1 每节点最大分片数配置

ES 7中集群分片限制的默认值为每节点最大1000个,可以通过cluster.max_shards_per_node进行设置,例如:

1
2
3
4
5
6
7
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
  "persistent": {
    "cluster.max_shards_per_node": 2000
  }
}
'

查看是否设置生效:

1
2
3
4
5
6
7
8
9
curl "localhost:9200/_cluster/settings?pretty"
{
  "persistent" : {
    "cluster" : {
      "max_shards_per_node" : "2000"
    }
  },
  "transient" : { }
}

参考