天天看点

elkf 搭建系列(二)-- elasticsearch 安装Elasticsearch cluster 安装(三台)

Elasticsearch cluster 安装

  • Elasticsearch cluster 安装(三台)
    • 准备
    • 1. 安装 Elasticsearch
    • 2. 重要的 Elasticsearch 配置
    • 3. 配置文件的设置

Elasticsearch cluster 安装(三台)

注:所有节点都可以做 Master/data 节点,设置为 Master 说明该节点有作为 Master 的资格,默认设置为 true,默认集群中的第一台机器为 Master。data 节点存储数据,不设置默认为 true。
类型 IP 名称
Master/data 192.168.16.101 elk-node1
Master/data 192.168.16.102 elk-node2
Master/data 192.168.16.103 elk-node3

准备

使用命令

vim /etc/hosts

,并在文件中添加如下内容。

192.168.16.101   elk1.test.com
192.168.16.102   elk2.test.com
192.168.16.103   elk3.test.com
           

1. 安装 Elasticsearch

执行如下命令

yum -y install elasticsearch

2. 重要的 Elasticsearch 配置

  • path.data

    path.logs

    如果正在使用 .zip 或 .tar.gz 文件归档,data 和 logs 目录在 $ES_HOME 下。如果这些重要文件夹保存在默认位置,则 ElasticSearch 升级到新版本时,很有可能被删除。所以在生产环境中,肯定要更改数据和日志文件夹的位置。
  • cluster.name

    某个节点只有和集群下的其他节点共享(使用相同的)

    cluster.name

    才能加入到同一个集群。一定要确保不能在不同的环境中使用相同的集群名称,否则,节点可能会加入错误的集群中。
  • node.name

    默认情况下, ElasticSearch 将使用随机生成的 uuid 的前 7 个字符作为节点 id,请注意,节点 id 是持久化的,并且在节点重新启动时不会改变,因此默认节点名称不会更改。

    也可以使用服务器的 HOSTNAME 作为节点的名称。

    node.name: ${HOSTNAME}

  • network.host

    默认情况下,Elasticsearch 仅仅绑定回环地址,比如 127.0.0.1 和 [::1]。这足以在服务器上运行单个开发节点。

    为了与其他服务器上的节点进行通信并形成节点,你的节点需要绑定到非回环地址。虽然这里有很多网络相关的配置,但通常只需要配置一下

    network.host

    network.host:192.168.16.101
               
    一旦自定义设置了

    network.host

    ,Elasticsearch 会假定你正在从开发模式转移到生产模式,并将许多系统启动检查从告警升级到异常。

    默认情况下,Elasticsearch 假定您正在开发模式下工作。如果未正确配置上述任何设置,则会像日志文件写入警告,但您能启动并运行 Elasticsearch 节点。

    **一旦配置了

    network.host

    之类的网络设置, Elasticsearch 就会假定您正在转向生产并将上述警告升级为异常。**这些异常将阻止您的 Elasticsearch 节点启动。这是一项重要的安全措施,可确保您不会因为服务器配置错误而丢失数据。
  • Discovery settings

    在开始生产之前,应该配置两个重要的 discovery 和 cluster 设置,以便集群中的节点可以互相发现并选择主节点。

    discovery.seed_hosts

    开箱即用,没有任何网络配置,Elasticsearch 将绑定到可用的回环地址,并将扫描本地端口9300到9205以尝试连接到同一服务器上运行的其他节点。这提供了自动集群体验,无需任何配置,

    如果要在其他主机上形成包含节点的集群,则必须使用

    discovery.seed_hosts

    设置提供集群中其他节点的列表,这些节点符合主要条件且可能是实时且可联系的,以便为发现过程设定种子。此设置通常包含集群中所有符合主节点的节点的地址。此设置包含主机数组或逗号分隔的字符串。每个值应该采用 host : port 或 host 的形式(其中 port 默认设置为 transport.profiles.default.port,如果未设置则返回 transport.port)。请注意,必须将 IPv6 主机值于括号内。此设置的默认值为 127.0.0.1 ,[::1]。
    discovery.seed_hosts:
    	- node1
    	- node2
    	- node3
               

    如果未指定,端口将默认为 transport.profiles.default.port 并回退到 transport.port。

    如果主机名解析为多个 IP 地址,则该节点将尝试发现所有已解析地址的其他节点。

    cluster.initial_master_nodes

    当您第一次启动全新的 Elasticsearch 集群时,会出现一个集群引导的步骤,该步骤确定在第一次选举中计票的主要合格节点集。在开发模式下,如果未配置发现设置,则此步骤由节点本身自动执行。由于此自动引导本质上是不安全的,因此当您在生产环境下启动全新集群时,必须明确列出符合条件的节点的名称或 IP 地址,这些节点的投票应在第一次选举中计算,使用

    cluster.initial_master_nodes

    设置设置此列表。
    cluster.initial_master_nodes:
      - node1
      - node2
      - node3
               
    初始节点可以通过其

    node.name

    来标识。该节点默认为主机名。确保

    cluster.initial_master_nodes

    中的值与

    node.name

    完全匹配。如果要使用完全限定的域名(例如 master-node-a.example.com)作为节点名称,则必须在此列表中使用完全限定名称;相反,如果

    node.name

    是一个没有任何尾随限定符的裸主机名,那么必须省略

    cluster.initial_master_nodes

    中的尾随限定符。

    初始主节点也可以通过其 IP 地址识别。

  • 堆大小配置

    默认情况下,Elasticsearch 告诉 JVM 使用最小和最大大小为 1GB 的堆。迁移到生产环境时,配置堆大小以确保 Elasticsearch 有足够的可用堆是很重要的。

    Elasticsearch 将通过 Xms(最小堆大小)和 Xmx(最大堆大小)设置分配 jvm.options 中指定的整个堆。

    这些设置的值取决于服务器上可用的 RAM 量。好的经验法则是:

    • 将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。
    • 可用堆越多,它可用于缓存的内存就越多。但请注意,过多的堆可能会陷入长时间的垃圾收集暂停。
    • 将 Xmx 设置为不超过物理 RAM 的 50%,以确保有足够的物理 RAM 留给内核文件系统缓存。
    • 不要将 Xmx 设置为 JVM 用于压缩对象指针(压缩 oops)的截止值以上;确切的截止值变化但接近 32GB。

3. 配置文件的设置

使用命令

vim /etc/elasticsearch/elasticsearch.yml

,在配置文件增加和修改如下内容。

cluster.name: kbxmn-elk
node.name: elk1
node.master: true
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: elk1.test,com
http.port: 9200
discovery.seed_hosts:
        - "elk1.test.com"
        - "elk2.test.com"
        - "elk3.test.com"
cluster.initial_master_nodes:
        - "elk1"
        - "elk2"
        - "elk3"
           

设置完成后使用如下命令。注意,检查集群需要服务启动后等待较长时间,服务启动较慢。

# 启动 elasticsearch
systemctl start elasticsearch
# 开机自启
systemctl enable elasticsearch
# 查看集群节点的状态(包括集群中的主机,curl 集群中的任一主机,正确结果在下方。 * 表示主节点)
curl elk1.test.com:9200/_cat/nodes
	192.168.16.102 7 69 0 0.03 0.18 0.26 dilm - elk2
	192.168.16.101 8 69 0 0.02 0.22 0.31 dilm - elk1
	192.168.16.103 7 96 0 0.05 0.13 0.20 dilm * elk3
# 查看集群健康状况(正确结果在命令下方,状态分为三类 green,yellow,red)
curl elk1.test.com:9200/_cat/health
	1571045449 09:30:49 kbxmn-elk green 3 3 0 0 0 0 0 0 - 100.0%
           

更多的命令如下所示。

/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
           

到这里, elasticsearch 的安装就完成了,如果对 elfk 感兴趣,或者感觉笔者写的不错,可以关注我的微信公众号 微信公众号

继续阅读