ElasticSearch集群部署完整指南(加x-pack权限控制)

[TOC]

1. 前言

  • 目标:用三台服务器搭建ES集群,并且给集群开通安全服务,增加权限控制.
  • 博主使用的ES版本为 6.3.1, 6以上的版本自带 x-pack,但是开通权限控制还需要向ES官方购买铂金会员或者进行破解.开通权限后,ES才可以设置登录账号和密码,保证服务安全.
  • 搭建过程中发现, 市面上基本都是没做安全控制的ES集群搭建教程,本文主要针对需要做安全控制的ES集群搭建提供详细搭建流程.后者搭建过程的复杂度高很多,博主踩的坑也很多,因此聊做记录.
  • 假设三台服务器地址为: 10.100.0.10(主节点)10.100.0.11 ,10.100.0.12

2. 每台服务器的ES组件配置

ES服务有很多配套组件, 很多人在搭建集群的时候不知道这些组件是否需要在每台服务器上都做相同的配置,会产生怎样的影响,博主全部尝试后得出以下经验。
坑点1: kibana和x-head服务只需要搭建在一台服务器上就行了,当集群启动后,kibana和x-head会自动监听整个集群,而不再是仅监听当前服务器。破解了权限登陆后,访问其它子服务器也需要输入账号密码,完成对其它节点的权限控制,而不需要对每台服务器都装相同的组件

  • 10.100.0.10主节点服务器配件:
    • elasticsearch6.3.1
    • kibana6.3.1
    • x-head6.3.1
  • 10.100.0.11 配件:
    • elasticsearch6.3.1
  • 10.100.0.12 配件:
    • elasticsearch6.3.1

3. 集群关键配置的安装和步骤

3.1 IK分词器的安装

[下载地址]https://github.com/medcl/elasticsearch-analysis-ik/releases
ik的版本必须与es的版本一一对应
ik安装目录 ./elasticsearch6.3.1/plugins
ik分词工具需要在每台服务器的对应目录安装

3.2 kibana汉化

[汉化项目介绍]https://github.com/anbai-inc/Kibana_Hanization.git

3.3 开通x-pack高级功能

只有开通了铂金会员, 才能给es设置登录密码. 为了安全性考虑最好开通.如何购买铂金会员可以在kibana后台的系统管理-许可管理看到,或者破解x-pack,详细教程看我的另一篇文章 [10分钟内破解elasticsearch x-pack插件]https://blog.csdn.net/qq_29202513/article/details/82747798
此步骤操作只需要在10.100.0.10主服务器上设置
直接覆盖改完的jar包和提交json是必要操作

3.4 开通高级功能后,如何设置登录账号和密码,开启登录验证功能

此步骤操作只需要在10.100.0.10主服务器上设置

  1. 启动ES

  2. bin/elasticsearch-setup-passwords interactive 自定义设置elastic、kibana....等所有工具的登录密码 最高级账号elastic 可以登录所有组件

  3. 修改elasticsearch.yml配置

     # 添加如下2行,打开安全配置功能
     xpack.security.enabled: true
     xpack.security.transport.ssl.enabled: true
    
  4. 修改elasticsearch.yml配置

     # 在kibana.yml下添加如下两行
     elasticsearch.username: elastic
     elasticsearch.password: {你修改的password}
    
  5. 重启ES和kibana服务就需要登陆账号和密码了

3.5 ES6.0以后的集群版本需要安装 SSL和CA证书

坑点2: 开通了高级权限,登录功能的集群必须安装SSL和CA证书, 一般的其实都不需要
[参考教程地址]https://blog.csdn.net/qq_25475209/article/details/81906701

  1. 配置生成SSL 在主服务器上生成就行
    ./elasticsearch-certgen
    
    #####################################
    Please enter the desired output file [certificate-bundle.zip]: cert.zip  (压缩包名称)
    Enter instance name: my-application(实例名)
    Enter name for directories and files [p4mES]: elasticsearch(文件夹名)
    Enter IP Addresses for instance (comma-separated if more than one) []: 127.0.0.1(实例ip,多个ip用逗号隔开)
    Enter DNS names for instance (comma-separated if more than one) []: node-1(节点名,多个节点用逗号隔开)
    Would you like to specify another instance? Press 'y' to continue entering instance information: (到达这一步,不需要按y重新设置,按空格键就完成了)
    Certificates written to /usr/local/elasticsearch/bin/cert.zip(这个是生成的文件存放地址,不用填写)
  1. 解压生成的 cert.zip文件,将压缩包下的2个文件夹复制到 ./elasticsearch6.3.1/conf/ 目录下, 每台服务器都要复制一遍这个生成的证书

  2. 配置每台服务器的elasticsearch.yml文件,加入

     xpack.security.transport.ssl.enabled: true
     xpack.ssl.key: elasticsearch/elasticsearch.key
     xpack.ssl.certificate: elasticsearch/elasticsearch.crt
     xpack.ssl.certificate_authorities: ca/ca.crt
    

3.6 安装X-head(可选操作)

安装x-head是可选操作,如果在主服务器安装了x-head后,需要在yml文件中添加特定的配置,否则head无法访问登录

# 在elasticsearch.yml中添加如下三行配置
 http.cors.enabled: true
 http.cors.allow-origin: "*"
 http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
  1. 重启服务,并通过如下形式访问head端http://10.100.0.10:9100/?auth_user=elastic&auth_password=passwd

4. 最终三台服务器的配置文件

4.1 10.100.0.10 主服务器 elasticsearch.yml

    # 集群名称,必须统一
    cluster.name: es_test
    # 节点名称
    node.name: node-1
    network.host: 0.0.0.0
    # 配置集群的节点地址
    discovery.zen.ping.unicast.hosts: ["10.100.0.10","10.100.0.11","10.100.0.12"]
    discovery.zen.minimum_master_nodes: 2
    gateway.recover_after_nodes: 3
    # x-head 访问配置
    http.cors.enabled: true 
    http.cors.allow-origin: "*"
    http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
    # 开通高级权限后,打开安全配置功能
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    # 配置ssl和CA证书配置
    xpack.ssl.key: elasticsearch/elasticsearch.key
    xpack.ssl.certificate: elasticsearch/elasticsearch.crt
    xpack.ssl.certificate_authorities: ca/ca.crt

4.2 10.100.0.10 主服务器 kibana.yml

server.host: "0.0.0.0"
elasticsearch.username: elastic
elasticsearch.password: {password}

4.3 10.100.0.11 子服务器 elasticsearch.yml

    # 集群名称,必须统一
    cluster.name: es_test
    # 节点名称
    node.name: node-2
    network.host: 0.0.0.0
    # 配置集群的节点地址
    discovery.zen.ping.unicast.hosts: ["10.100.0.10","10.100.0.11","10.100.0.12"]
    discovery.zen.minimum_master_nodes: 2
    gateway.recover_after_nodes: 3
    # 开通高级权限后,打开安全配置功能
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    # 配置ssl和CA证书配置
    xpack.ssl.key: elasticsearch/elasticsearch.key
    xpack.ssl.certificate: elasticsearch/elasticsearch.crt
    xpack.ssl.certificate_authorities: ca/ca.crt

4.4 10.100.0.12子服务器 elasticsearch.yml

    # 集群名称,必须统一
    cluster.name: es_test
    # 节点名称
    node.name: node-3
    network.host: 0.0.0.0
    # 配置集群的节点地址
    discovery.zen.ping.unicast.hosts: ["10.100.0.10","10.100.0.11","10.100.0.12"]
    discovery.zen.minimum_master_nodes: 2
    gateway.recover_after_nodes: 3
    # 开通高级权限后,打开安全配置功能
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    # 配置ssl和CA证书配置
    xpack.ssl.key: elasticsearch/elasticsearch.key
    xpack.ssl.certificate: elasticsearch/elasticsearch.crt
    xpack.ssl.certificate_authorities: ca/ca.crt

5. 配置完毕后,集群启动时,其它的一些坑点

1. gateway.recover_after_nodes 的坑

  • gateway.recover_after_nodes: 3
  • 设置了最小恢复节点为3后,第一次集群启动,必须要三台节点同时启动es服务,集群才可以被访问到.否则会一直提示 登陆账号密码错误,此时不要慌张
  • 只要集群启动了可以被访问之后,万一有节点挂掉, 集群还是可以访问到的,不会出现第一次的登录错误提示,此时重启挂掉的节点就行了.

2. 不能在根目录下运行的问题

elaticsearch默认不能用root用户启动,所以会报java.lang.RuntimeException: can not run elasticsearch as root异常

    adduser es  #新建用户
    passwd es|get@#123   #新建用户密码
    #文件夹归属组
    #chown -R [用户]:[所属组] 目录
    chown -R es:es elasticsearch-6.3.1/ 
    #修改文件夹权限
    chmod 770 elasticsearch-6.3.1/
    #切换到用户目录
    su es
    #重新执行成功
    ./elasticsearch -d

3. 虚拟机最大map数量不够

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

[root@centos7.4-64 ~]# vim /etc/sysctl.conf 
添加配置:vm.max_map_count=655360,然后执行命令
[root@centos7.4-64 ~]# sysctl -p

4. java内存不够

max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

[root@centos7.4-64 ~]# vim /etc/security/limits.conf
    * hard nofile 65536
    * hard nofile 65536

如有问题或者需要帮忙搭建集群服务的,也可以咨询本人 微信:w63594021

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容