Elasticsearch 분산 클러스터 구축

면책 조항 :이 문서는 블로거 원본입니다은 허용 블로거없이 복제 할 수 없다. https://blog.csdn.net/tladagio/article/details/88222927

소개 :

엘크 elasticsearch logstash + + 키바는 짧은 오픈 소스 프레임 워크 로그 분석, 이들 세 구성 요소는 다음과 같이 세 가지 구성 요소의 역할 :

  • elasticsearch이 저장, 데이터베이스로 이해 될 수있는 데이터가 저장되고 사용자의 쿼리를 촉진하기 위해 색인이 생성됩니다.
  • 키바를 표시하는 데 사용하는 구성 요소입니다, 데이터 시각화 렌더링에 대한 책임이 있습니다. 콘솔이 ES에 직접 작동 할 수 있지만,
  • 엘크는 Logstash 핵심 구성 요소는 필터 로그입니다. 이 로그 형식을 담당하고 통과 elasticsearch 저장. 일부 구성 요소가 같은 시간을 Logstash, 당신은 몇 가지 데이터 분석 작업을 할 수 있습니다.

이 세 가지 구성 요소 사이의 논리적 관계는 키바 logstash> elasticsearch>하지만 실제로는 그렇게 간단하지.

첫째, 준비를 설치

실험의 분산 클러스터를 완료 할 수 있도록, 세 시스템을 준비합니다 :

  • 192.168.2.10
  • 192.168.2.123
  • 192.168.2.180

역할의 구분 :

  • elasticsearch 자바에 있기 때문에 세 가지 기계, jdk1.8 설치
  • 세 장착 elasticsearch (모두 후속 ES로 함)
  • 마스터 노드로서 192.168.2.10
  • 데이터 노드와 같은 192.168.2.123 192.168.2.180
  • 당신은 기본 노드 키바에 설치해야
  • 192.168.2.123에 설치 Logstash

ELK 버전 정보 :

  • Elasticsearch - 6.0.0
  • logstash - 6.0.0
  • kibana-6.0.0
  • filebeat - 6.0.0

다음과 같이 세 가지 기계가 방화벽을 해제했다, 세 시스템의 호스트 이름과 호스트 파일의 내용을 수정

[root@master-node ~]# vim /etc/hosts
192.168.2.10 master-node
192.168.2.123 data-node1
192.168.2.180 data-node2

둘째, 설치 ES

1, 공식 설치 설명서

https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html

중국어 버전

https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

2, 먼저 jdk8 설치해야합니다. 참고 : 세 가지 기계를 설치해야

wget을 다운로드

[root@master-node ~]# cd /usr/local/
[root@master-node ~]# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
[root@master-node local]# tar -zxvf jdk-8u141-linux-x64.tar.gz
[root@master-node local]# mv jdk1.8.0_141 jdk8

환경 변수 설정 : 정력을 / etc / 프로파일을 한 다음 다음을 추가

export JAVA_HOME=/usr/local/jdk8
export JAVA_BIN=/usr/local/jdk8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

업데이트 :

[root@master-node ~]# source  /etc/profile

보기 자바

[root@master-node ~]# java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

2, 공식 소스가 설치되어 설치 ES를 수행해야합니다 세 가지 기계

[root@master-node ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
[root@master-node ~]# vim /etc/yum.repos.d/elastic.repo  # 增加以下内容
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
[root@master-node ~]# yum install -y elasticsearch

공식 소스 다운로드가 너무 느리기 때문에 3 rpm 패키지를 다운로드하려면 여기 있도록 설치

[root@master-node ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.rpm
[root@master-node ~]# rpm -ivh elasticsearch-6.0.0.rpm
warning: elasticsearch-6.0.0.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing...                          ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
Updating / installing...
   1:elasticsearch-0:6.0.0-1          ################################# [100%]
### 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

[root@data-node1 ~]# rpm -ivh elasticsearch-6.0.0.rpm

[root@data-node2 ~]# rpm -ivh elasticsearch-6.0.0.rpm

셋째, 구성 ES

두 곳 모두에서 1, elasticsearch 구성 파일, 두 개의 프로파일이있다

[root@master-node ~]# ll /etc/elasticsearch/
total 16
-rw-rw---- 1 root elasticsearch 2870 Nov 11  2017 elasticsearch.yml
-rw-rw---- 1 root elasticsearch 2678 Nov 11  2017 jvm.options
-rw-rw---- 1 root elasticsearch 5091 Nov 11  2017 log4j2.properties
You have new mail in /var/spool/mail/root
[root@master-node ~]# ll /etc/sysconfig/elasticsearch 
-rw-rw---- 1 root elasticsearch 1593 Nov 11  2017 /etc/sysconfig/elasticsearch

등 클러스터 노드를 구성하기 위해 관련 정보 elasticsearch.yml 파일 elasticsearch 구성 파일 자체 이러한 구성 파일과 일부 자바 경로 구성을 어떤 경로로 관련 구성 서비스입니다.

2, 공식 구성 문서

https://www.elastic.co/guide/en/elasticsearch/reference/6.0/rpm.html

클러스터 노드를 구성, 구성 파일 192.168.2.10을 편집 :

[root@master-node ~]# vim /etc/elasticsearch/elasticsearch.yml # 增加或更改以下内容
[root@master-node ~]# cat /etc/elasticsearch/elasticsearch.yml | grep  ^[^#]
cluster.name: master-node # 集群中的名称
node.name: master # 该节点名称
node.master: true # 意思是该节点为主节点
node.data: false # 表示这不是数据节点
path.data: /var/lib/elasticsearch 
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0 # 监听全部ip,在实际环境中应设置为一个安全的ip
http.port: 9200 # es服务的端口号
discovery.zen.ping.unicast.hosts: ["192.168.2.10", "192.168.2.123","192.168.2.180"] # 配置自动发现

(3) 다음, 다른 두 시스템에 프로파일을 위로 보내는

[root@master-node ~]# scp /etc/elasticsearch/elasticsearch.yml data-node1:/tmp/
The authenticity of host 'data-node1 (192.168.2.123)' can't be established.
ECDSA key fingerprint is 6d:5b:e9:d9:bd:12:64:06:c5:cc:a2:07:a6:99:96:3d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'data-node1,192.168.2.123' (ECDSA) to the list of known hosts.
root@data-node1's password: 
elasticsearch.yml                                                                    100% 2924     2.9KB/s   00:00    

[root@master-node ~]# scp /etc/elasticsearch/elasticsearch.yml data-node2:/tmp/
The authenticity of host 'data-node2 (192.168.2.180)' can't be established.
ECDSA key fingerprint is 6d:5b:e9:d9:bd:12:64:06:c5:cc:a2:07:a6:99:96:3d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'data-node2,192.168.2.180' (ECDSA) to the list of known hosts.
root@data-node2's password: 
elasticsearch.yml

네, 두 시스템은 다음과 같은 몇 가지 장소를 수정,이 파일을 변경하려면

192.168.2.123

[root@data-node1 ~]# vim /tmp/elasticsearch.yml 

[root@data-node1 ~]# cat /tmp/elasticsearch.yml | grep ^[^#]
cluster.name: master-node
node.name: data-node1
node.master: false
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.2.10", "192.168.2.123","192.168.2.180"]
[root@data-node1 ~]# cp /tmp/elasticsearch.yml  /etc/elasticsearch/elasticsearch.yml 
cp: overwrite ‘/etc/elasticsearch/elasticsearch.yml’? yes
[root@data-node1 ~]# 

192.168.2.180

[root@data-node2 ~]# cat /tmp/elasticsearch.yml | grep ^[^#]
cluster.name: master-node
node.name: data-node2
node.master: false
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.2.10", "192.168.2.123","192.168.2.180"]

[root@data-node2 ~]# cp /tmp/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml 
cp: overwrite ‘/etc/elasticsearch/elasticsearch.yml’? yes

마스터 노드로, 위의 구성을 완료 한 후, 서비스 ES를 시작합니다 :

[root@master-node ~]# systemctl start elasticsearch.service

마스터 노드의 완료가 시작되면, 9200 개 및 9300 포트는 다음 ES를 다른 노드를 제공 시작, 상태를 듣고 볼 수 있습니다.

5 문제 해결 기록

시작하는 데 실패하고 상태를 확인

자바 실행 환경 변수를 찾을 소프트 링크를 추가하는 것은 불가능합니다 :

[root@master-node ~]# ln -s /usr/local/jdk8/bin/java /usr/bin/

서비스 및 포트를 다시 확인, 9300 포트가 클러스터 통신에 사용됩니다, 9200은 데이터 전송의 시간입니다.

[root@master-node ~]# systemctl restart elasticsearch.service 

[root@master-node ~]# netstat -ntlp | grep java
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      954/java            
tcp6       0      0 :::9200                 :::*                    LISTEN      95311/java          
tcp6       0      0 :::9300                 :::*                    LISTEN      95311/java

[root@master-node ~]# systemctl status elasticsearch.service 
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-03-07 19:43:36 CST; 1min 41s ago
     Docs: http://www.elastic.co
 Main PID: 95311 (java)
   CGroup: /system.slice/elasticsearch.service
           └─95311 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccu...

Mar 07 19:43:36 master-node systemd[1]: Started Elasticsearch.
Mar 07 19:43:36 master-node systemd[1]: Starting Elasticsearch... 

네, 컬보기 ES 클러스터의 경우

1, 건강 진단의 클러스터 :

[root@master-node ~]# curl '192.168.2.10:9200/_cluster/health?pretty'
{
  "cluster_name" : "master-node",
  "status" : "green",    #为green则代表健康没问题,如果是yellow或者red则是集群有问题
  "timed_out" : false,    #是否有超时
  "number_of_nodes" : 3,    #集群中的节点数量
  "number_of_data_nodes" : 2,    #集群中Java节点的数量
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

2, 클러스터에 대한 자세한 정보를 보려면 :

[root@master-node ~]# curl '192.168.2.10:9200/_cluster/state?pretty'
{
  "cluster_name" : "master-node",
  "compressed_size_in_bytes" : 350,
  "version" : 4,
  "state_uuid" : "DugAUq0HSK27cMLmOz-KWA",
  "master_node" : "DdcU0fKfQtitLqwOL0v7eA",
  "blocks" : { },
  "nodes" : {
    "QbIwi4X4QwGAEUFIs8gQ1w" : {
      "name" : "data-node2",
      "ephemeral_id" : "twJHf3w9QxWvba2rjFvNhw",
      "transport_address" : "192.168.2.180:9300",
      "attributes" : { }
    },
    "U8YW6pFrQNaHxcnDU_fzhw" : {
      "name" : "data-node1",
      "ephemeral_id" : "V6VOAmL5TRCw1sfkFc-biA",
      "transport_address" : "192.168.2.123:9300",
      "attributes" : { }
    },
    "DdcU0fKfQtitLqwOL0v7eA" : {
      "name" : "master",
      "ephemeral_id" : "jFH6nBLXSyWnKKftniCWDg",
      "transport_address" : "192.168.2.10:9300",
      "attributes" : { }
    }
  },
  "metadata" : {
    "cluster_uuid" : "9r603V_rTmm515A3L5DutA",
    "templates" : { },
    "indices" : { },
    "index-graveyard" : {
      "tombstones" : [ ]
    }
  },
  "routing_table" : {
    "indices" : { }
  },
  "routing_nodes" : {
    "unassigned" : [ ],
    "nodes" : {
      "QbIwi4X4QwGAEUFIs8gQ1w" : [ ],
      "U8YW6pFrQNaHxcnDU_fzhw" : [ ]
    }
  },
  "snapshot_deletions" : {
    "snapshot_deletions" : [ ]
  },
  "snapshots" : {
    "snapshots" : [ ]
  },
  "restore" : {
    "snapshots" : [ ]
  }
}
You have new mail in /var/spool/mail/root
[root@master-node ~]#

문제를 확인하지 후, 완성 된 구조에 클러스터를 말이지.

3, 클러스터 상태 정보는 브라우저를 통해 볼 수 있습니다 :

그러나 또한 문자열의 무리를 표시, 우리는이 정보를 그래픽 방식으로 표시 할 수 있기를 바랍니다, 그것은 우리를 위해 데이터를 표시 키바를 설치해야합니다.

 

추천

출처blog.csdn.net/tladagio/article/details/88222927