zoukankan      html  css  js  c++  java
  • Elasticsearch系列(二) 搭建Elasticsearch集群

     凡事都要讲究个为什么。在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢?

    1|1高可用性

      Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息。所以第一步我们需要保证的就是 Elasticsearch 的高可用性,什么是高可用性呢?它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是 100%。如果系统在某个时刻宕掉了,比如某个网站在某个时间挂掉了,那么就可以它临时是不可用的。所以,为了保证 Elasticsearch 的高可用性,我们就应该尽量减少 Elasticsearch 的不可用时间。

      那么怎样提高 Elasticsearch 的高可用性呢?这时集群的作用就体现出来了。假如 Elasticsearch 只放在一台服务器上,即单机运行,假如这台主机突然断网了或者被攻击了,那么整个 Elasticsearch 的服务就不可用了。但如果改成 Elasticsearch 集群的话,有一台主机宕机了,还有其他的主机可以支撑,这样就仍然可以保证服务是可用的。

    1|2存储空间

      另外,既然是群集,那么存储空间肯定也是联合起来的,假如一台主机的存储空间是固定的,那么集群它相对于单个主机也有更多的存储空间,可存储的数据量也更大。所以综上所述,我们需要一个集群!

    2|0开始搭建

    2|1下载Elasticsearch

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz

    我们将解压出来的文件复制三份出来elasticsearch1、elasticsearch2、elasticsearch3,启动三个节点搭建集群

    2|2更改配置文件

    依次打开三个elasticsearch中config目录下的下elasticsearch.yml配置文件

    vim config/elasticsearch.yml

    #配置文件中未改动的位置我就不展示了#第一个配置文件改动如下#集群名称(必须一样)cluster.name: my-application #节点名称(必须不一样)node.name: node-1 #是否可以选举为主节点node.master: true#是否存储数据node.data: true#本机的IP地址network.host: 0.0.0.0 #发布地址network.publish_host: 127.0.0.1 #服务的端口号(在本地配置多个时,请注意修改为不一样的端口)http.port: 9200 #服务发现端口transport.tcp.port: 9300 #集群发现IP集合discovery.seed_hosts: ["127.0.0.1:9300","127.0.0.1:9301""127.0.0.1:9302"] #集群选举设置cluster.initial_master_nodes: ["node-1","node-2","node-3"] #开启跨域访问http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: "Authorization"#第二个配置文件改动如下cluster.name: my-application node.name: node-2 node.master: truenode.data: truenetwork.host: 0.0.0.0 network.publish_host: 127.0.0.1 http.port: 9201 transport.tcp.port: 9301 discovery.seed_hosts: ["127.0.0.1:9300","127.0.0.1:9301""127.0.0.1:9302"] cluster.initial_master_nodes: ["node-1","node-2","node-3"] http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: "Authorization"#第三个配置文件改动如下cluster.name: my-application node.name: node-3 node.master: truenode.data: truenetwork.host: 0.0.0.0 network.publish_host: 127.0.0.1 http.port: 9202 transport.tcp.port: 9302 discovery.seed_hosts: ["127.0.0.1:9300","127.0.0.1:9301""127.0.0.1:9302"] cluster.initial_master_nodes: ["node-1","node-2","node-3"] http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: "Authorization"

    2|3启动集群

    依次启动三个elasticsearch节点

    bin/elasticsearch

    通过elasticsearch-head访问 看到如下界面就代表搭建成功。elasticsearch-head安装请参考上一篇博客 安装Elasticsearch

    3|0添加用户安全认证

    在6.8之前免费版本并不包含安全认证功能,之后版本有开放一些基础认证功能,对于普通用户来说是够用的

    1. 新增配置,每个集群节点都需要设置。
    vim config/elasticsearch.yml # 在文件的末尾追加 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
    1. 生成TLS 和身份验证,将会在config下生成elastic-certificates.p12文件,将此文件传到其他两个节点的config目录,注意文件权限
    bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
    1. 启动集群,es 集群不启动,下面的添加密码操作执行不了。

    2. 创建Elasticsearch 集群密码。
      在主节点上执行就行,数据会自动同步到其他节点

    bin/elasticsearch-setup-passwords interactive

    执行完会看到如下界面,设置密码就行了。

    再次访问elasticsearch-head 发现需要输入帐号密码,安装用户认证成功。手动安装elasticsearch-head是不支持用户认证登陆的,请选择chrome插件方式安装,请参考上一篇博客 安装Elasticsearch

    #配置文件中未改动的位置我就不展示了#第一个配置文件改动如下#集群名称(必须一样)cluster.name: my-application #节点名称(必须不一样)node.name: node-1 #是否可以选举为主节点node.master: true#是否存储数据node.data: true#本机的IP地址network.host: 0.0.0.0 #发布地址network.publish_host: 127.0.0.1 #服务的端口号(在本地配置多个时,请注意修改为不一样的端口)http.port: 9200 #服务发现端口transport.tcp.port: 9300 #集群发现IP集合discovery.seed_hosts: ["127.0.0.1:9300","127.0.0.1:9301""127.0.0.1:9302"] #集群选举设置cluster.initial_master_nodes: ["node-1","node-2","node-3"] #开启跨域访问http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: "Authorization"#第二个配置文件改动如下cluster.name: my-application node.name: node-2 node.master: truenode.data: truenetwork.host: 0.0.0.0 network.publish_host: 127.0.0.1 http.port: 9201 transport.tcp.port: 9301 discovery.seed_hosts: ["127.0.0.1:9300","127.0.0.1:9301""127.0.0.1:9302"] cluster.initial_master_nodes: ["node-1","node-2","node-3"] http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: "Authorization"#第三个配置文件改动如下cluster.name: my-application node.name: node-3 node.master: truenode.data: truenetwork.host: 0.0.0.0 network.publish_host: 127.0.0.1 http.port: 9202 transport.tcp.port: 9302 discovery.seed_hosts: ["127.0.0.1:9300","127.0.0.1:9301""127.0.0.1:9302"] cluster.initial_master_nodes: ["node-1","node-2","node-3"] http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: "Authorization"

  • 相关阅读:
    python--多线程&多进程
    python--MyRequest请求模块封装
    python--面向对象
    python--异常处理
    python--sys.argv 运行python文件时获取参数
    python--搭建测试环境
    mac常用快捷键
    九、django通过forms对页面数据校验
    八、django后台管理
    七、django页面请求处理
  • 原文地址:https://www.cnblogs.com/cuijinlong/p/14340770.html
Copyright © 2011-2022 走看看