Elasticsearch7.13.3集群搭建(三節點)


准備

  • 三台機器

    IP HOSTANME OS 是否可成為主節點
    172.16.241.2 linux1 centos8 是 (active)
    172.16.241.3 linux2 centos8
    172.16.241.4 linux3 centos8
  • Es不允許使用root啟動,故而創建用戶和組(三台機器)

    groupadd es
    useradd es -g es -p es
    su es
    
  • 設置系統配置(切換root用戶)

    vi /etc/sysctl.conf
    #設置如下
    vm.max_map_count=262144
    #執行生效
    sysctl -p 
    
    
    vi /etc/security/limits.conf
    #增加如下內容
    # * 代表所有,可以修改為用戶es
    *  soft nproc  4096 
    *  hard nproc  4096
    
    
  • 打開linux1機器,進入/home/es/目錄,執行如下指令:

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.3-linux-x86_64.tar.gz
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.3-linux-x86_64.tar.gz.sha512
    shasum -a 512 -c elasticsearch-7.13.3-linux-x86_64.tar.gz.sha512 // 如找不到指令,使用yum install -y perl-Digest-SHA 安裝
    tar -xzf elasticsearch-7.13.3-linux-x86_64.tar.gz
    
  • 使用scp指令分發elasticsearch-7.13.3到其他機器上

    1. scp傳文件到linux2,linux3

      scp -r elasticsearch-7.13.3 root@linux2:/home/es
      
      
      scp -r elasticsearch-7.13.3 root@linux3:/home/es
      

配置

  • 修改config下的elasticsearch.yaml文件

    1. linux1(master)
    #集群配置
    cluster:
      name: xpp-es-cluster
      initial_master_nodes:
        - linux1
    path:
      data: /home/es/elasticsearch-7.13.3/data
      logs: /home/es/elasticsearch-7.13.3/data
    node:
      name: linux1
    network:
      host: linux1
    discovery.seed_hosts:
      - linux1:9300
      - linux2:9300
      - linux3:9300
    
    1. linux2

      #集群配置
      cluster:
        name: xpp-es-cluster
        initial_master_nodes:
          - linux1
      path:
        data: /home/es/elasticsearch-7.13.3/data
        logs: /home/es/elasticsearch-7.13.3/data
      node:
        name: linux2
        roles: [data]
      network:
        host: linux2
      discovery.seed_hosts:
        - linux1:9300
        - linux2:9300
        - linux3:9300
      
    2. linux3

      #集群配置
      cluster:
        name: xpp-es-cluster
        initial_master_nodes:
          - linux1
      path:
        data: /home/es/elasticsearch-7.13.3/data
        logs: /home/es/elasticsearch-7.13.3/data
      node:
        name: linux3
        roles: [data]
      network:
        host: linux3
      discovery.seed_hosts:
        - linux1:9300
        - linux2:9300
        - linux3:9300
      
  • 先啟動linux1下的es,再啟動linux2, linux3

    ./elasticsearch -d

  • 訪問http://linux1:9200

    使用chrome插件elasticsearch head插件訪問如圖:

    image-20210720195119725

  • 創建索引book, user, shopping

    curl --location --request PUT 'http://linux1:9200/book'
    curl --location --request PUT 'http://linux1:9200/user'
    curl --location --request PUT 'http://linux1:9200/shopping'
    
  • 查看集群狀態

    image-20210720200008359

    索引已經創建,並且數據分片沒有問題。綠色代表健康。

  • 創建Doc

    curl --location --request POST 'http://linux1:9200/shopping/_doc/' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "title":"華為手機魅藍",
        "category":"華為",
        "images":"http://www.gulixueyuan.com/xm.jpg",
        "price": 4999.00
    }'
    
  • 返回結果

    {
        "_index": "shopping",
        "_type": "_doc",
        "_id": "XtfNw3oBpJTUlLZO2-rD",
        "_version": 1,
        "result": "created",
        "_shards": {
            "total": 2,
            "successful": 2,
            "failed": 0
        },
        "_seq_no": 0,
        "_primary_term": 1
    }
    

三節點的集群搭建完畢,該集群有什么問題?如果master掛掉還能否正常提供服務?

  • 答案是否定的,具體是為什么呢?

    主要跟角色有關,linux2和linux3都是非master節點,當我把linux1(master)停掉,集群就沒有了master,所以無法對外提供服務。

    三節點中官方建議每個節點都要設置master角色,這樣linux1(master)不能提供服務,集群會選舉新的master對外服務。來模擬一下。

    1. 首先我要修改linux2和linux3的配置

      node.roles:[data] 修改為node.roles:[data, master]

    2. 重啟linux2和linux3的es

    3. 停止linux1(原master)服務

    4. 打開elasticseatch head查看

      image-20210720203427039

      linux3已經被選舉為master節點。

    5. 重啟linux1節點后,他不會重新變為master節點,而是作為從節點。


免責聲明!

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



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