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