V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hansonwang99
V2EX  ›  程序员

CentOS7 上搭建多节点 Elasticsearch 集群

  •  1
     
  •   hansonwang99 ·
    hansonwang99 · 2018-11-06 08:00:06 +08:00 · 2932 次点击
    这是一个创建于 1970 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Profile

    本文内容脑图如下:

    本文内容脑图

    文章共 747 字,阅读大约需要 2 分钟 !


    概 述

    最近学 Elasticsearch,既然学之,怎么能没有实际的集群来把玩呢,因此自己必须动手搭一个!

    注: 本文首发于 My Personal Blog:CodeSheep·程序羊,欢迎光临 小站


    环境准备

    • 节点准备

    本文准备搭建 双节点 Elasticsearch 集群,因此这里准备了两台 Linux CentOS 7.4 64bit 机器:

    • 节点 1:192.168.31.8
    • 节点 2:192.168.31.9
    • Elasticsearch 安装包准备

    这里下载的是截止到当前日期的最新版:6.4.2

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz
    
    • 安装目录准备

    这里拟将 Elasticsearch 安装在 /opt/elasticsearch 目录下:

    mkdir /opt/elasticsearch
    将压缩包复制到该目录下并解压
    

    Elasticsearch 集群配置

    需要修改两个节点上的配置文件 elasticsearch.yml

    • 节点 1 配置
    cluster.name: codesheep         # 集群名称
    node.name: sheep1                 # 节点名
    network.host: 192.168.31.8     # 绑定的节点 1 地址
    network.bind_host: 0.0.0.0      # 此项不设置你试试本机可能访问不了啊
    discovery.zen.ping.unicast.hosts: ["192.168.31.8","192.168.31.9"]  # hosts 列表
    discovery.zen.minimum_master_nodes: 1 
    
    ## 如下配置是为了解决 Elasticsearch 可视化工具 dejavu 的跨域问题!若不用可视化工具则可省略之
    http.port: 9200
    http.cors.allow-origin: "http://192.168.199.76:1358"
    http.cors.enabled: true
    http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
    http.cors.allow-credentials: true
    
    • 节点 2 配置
    cluster.name: codesheep         # 集群名称
    node.name: sheep1                 # 节点名
    network.host: 192.168.31.9     # 绑定的节点 2 地址
    network.bind_host: 0.0.0.0     
    discovery.zen.ping.unicast.hosts: ["192.168.31.8","192.168.31.9"]  # hosts 列表
    discovery.zen.minimum_master_nodes: 1 
    
    ## 如下配置是为了解决 Elasticsearch 可视化工具 dejavu 的跨域问题!若不用可视化工具则可省略之
    http.port: 9200
    http.cors.allow-origin: "http://192.168.199.76:1358"
    http.cors.enabled: true
    http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
    http.cors.allow-credentials: true
    

    集群启动前准备

    • 创建用户及用户组

    由于 Elasticsearch 不能以 root 用户启动,因此需要添加非 root 用户:

    groupadd es
    useradd es -g es
    chown -R es:es ./elasticsearch-6.4.2
    
    • 关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    

    启动 Elasticsearch 集群

    • 切换用户
    su es
    
    • 分别在 节点 1 和 节点 2 上启动 ES 服务
    cd bin
    ./elasticsearch  // 若要后台启动,则加-d 参数
    
    • 浏览器访问: http://ip:9200/ 查看启动效果

    启动后浏览器访问效果

    • 命令行查看集群信息

    image.png

    • 利用可视化工具 dejavu 查看集群信息

    关于 Elasticsearch 集群可视化管理工具的上手,可以参考我的前文:《一文上手 Elasticsearch 常用可视化管理工具》

    可视化工具 dejavu 查看集群信息

    • 接下来插入两条数据
    curl -X PUT 'localhost:9200/accounts/person/1' -d '
    {
      "user": "张三",
      "title": "工程师",
      "desc": "数据库管理"
    }' 
    
    curl -X PUT 'localhost:9200/accounts/person/1' -d '
    {
      "user": "赵四",
      "title": "设计师",
      "desc": "UI 设计"
    }' 
    
    • 查看数据的入库效果

    数据入库效果

    OK,索引 / 类型 / 文档 一目了然!

    若在 Elasticsearch 集群 安装 /启动 过程 中有任何奇葩 问题 /错误 的话,就参考我的这篇文章:《 CentOS7 上 ElasticSearch 安装填坑记》吧,里面的坑我都一个个填过了!


    安装 IK 分词器

    在 Elasticsearch 的世界中,插件是很重要的一部分,很多功能都可以通过插件来实现,因此下面就以常用的 IK 分词器插件 的安装为例,来操作一下 Elasticsearch 插件的安装

    分词技术是搜索技术的基石,而 IK 分词器是比较经典的一个,接下来尝试安装一下吧

    IK 分词器版本与 ES 版本对应,不能搞错,可在 这里查看

    • 下载 IK 分词器插件
    wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.2/elasticsearch-analysis-ik-6.4.2.zip
    
    • 解压 / 安装

    新建目录 /opt/elasticsearch/elasticsearch-6.4.2/plugins/elasticsearch-analysis-ik-6.4.2

    再将 zip 包置于上述目录下并解压:

    unzip elasticsearch-analysis-ik-6.4.2.zip

    • 重启 Elasticsearch 集群

    重启 Elasticsearch 集群,若发现如下内容,这说明插件安装成功:

    检查 IK 分词器插件安装是否成功

    怎么样,很简单吧,就是一个解压放置的过程嘛!


    后 记

    由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!



    17 条回复    2018-11-06 13:33:16 +08:00
    znood
        1
    znood  
       2018-11-06 08:10:39 +08:00
    v 站禁止全文转载,这种基础性文章贴个标题就行了,有人看会点的
    hansonwang99
        2
    hansonwang99  
    OP
       2018-11-06 08:14:17 +08:00   ❤️ 1
    @znood 非转载,是我个人原创,codesheep 就是我本人
    kqz901002
        3
    kqz901002  
       2018-11-06 08:19:58 +08:00
    @hansonwang99 #2 果然 V 站不是交流技术的,是用来吹 B 划水的
    fyibmsd
        4
    fyibmsd  
       2018-11-06 08:20:42 +08:00 via iPhone
    分布式至少 3 个节点吧
    hansonwang99
        5
    hansonwang99  
    OP
       2018-11-06 08:22:19 +08:00 via iPhone
    @fyibmsd ES 无缝扩展,再多点节点也没有问题
    marcomarco
        6
    marcomarco  
       2018-11-06 08:23:21 +08:00
    可以的,学习了
    fgt
        7
    fgt  
       2018-11-06 08:42:17 +08:00
    怎么只装了 ES,配套的 Kibana 和 Logstash 呢;另外建议再出个 docker 版
    hansonwang99
        8
    hansonwang99  
    OP
       2018-11-06 08:59:27 +08:00 via iPhone
    @fgt 你是想搞 ELK ?容器化的 ELK 的搭建我个人博客里有
    LeeSeoung
        9
    LeeSeoung  
       2018-11-06 09:08:53 +08:00
    我咋记得至少要三个节点 防止脑裂?
    xiaonan10ll
        10
    xiaonan10ll  
       2018-11-06 09:33:14 +08:00 via iPhone
    twl007
        11
    twl007  
       2018-11-06 10:13:25 +08:00 via iPhone
    @LeeSeoung 是奇数节点 而且是跨机房的才有
    lfzyx
        12
    lfzyx  
       2018-11-06 10:17:14 +08:00
    @LeeSeoung elasticsearch 不存在脑裂问题,节点挂了就挂了,毫无影响
    sudodo
        13
    sudodo  
       2018-11-06 10:37:56 +08:00
    给楼主博客贡献了两次 PV 了。

    每次都是被要求关注公众号的弹窗给逼得关闭页面。

    芋道源码也是这样,个人觉得有些强人所难
    aaa5838769
        14
    aaa5838769  
       2018-11-06 10:57:24 +08:00
    支持一下楼主,有没有 docker ?
    kslr
        16
    kslr  
       2018-11-06 13:05:45 +08:00 via Android
    你这个文章落后几年了吧
    superlogin
        17
    superlogin  
       2018-11-06 13:33:16 +08:00
    Docker 扩展一个哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4114 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:23 · PVG 13:23 · LAX 22:23 · JFK 01:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.