当前位置:   article > 正文

ES集群搭建、身份认证配置_elasticsearch开启身份认证

elasticsearch开启身份认证

虚机搭建

添加es用户

elasticsearch 默认不允许root用户启动,所以需要创建es用户

  1. useradd elasticsearch
  2. passwd elasticsearch

解压安装包

  1. #解压es
  2. tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz

将文件夹赋予es用户权限

  1. #将文件夹赋予es用户权限
  2. sudo chown -R elasticsearch:elasticsearch /data/elasticsearch/elasticsearch-7.14.2/

elasticsearch文件

elasticsearch.yml

  1. cluster.name: es-cluster
  2. #设置节点名称,集群内节点名称必须唯一。
  3. node.name: node1
  4. #表示该节点会不会作为主节点,true表示会;false表示不会
  5. node.master: true
  6. #当前节点是否用于存储数据,是:true、否:false
  7. node.data: true
  8. #索引数据存放的位置
  9. path.data: /usr/share/elasticsearch/data
  10. #日志文件存放的位置
  11. path.logs: /usr/share/elasticsearch/logs
  12. #需求锁住物理内存,是:true、否:false
  13. bootstrap.memory_lock: false
  14. #监听地址,用于访问该es
  15. network.host: 0.0.0.0
  16. #es对外提供的http端口,默认 9200
  17. http.port: 9200
  18. #TCP的默认监听端口,默认 9300
  19. transport.tcp.port: 9300
  20. #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
  21. discovery.zen.minimum_master_nodes: 1
  22. #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
  23. discovery.seed_hosts: ["node1ip:9300", "node2ip:9300"]
  24. discovery.zen.fd.ping_timeout: 1m
  25. discovery.zen.fd.ping_retries: 5
  26. #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
  27. cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300"]
  28. #cluster.initial_master_nodes: ["node1"]
  29. #是否支持跨域,是:true,在使用head插件时需要此配置
  30. http.cors.enabled: true
  31. #“*” 表示支持所有域名
  32. http.cors.allow-origin: "*"
  33. ##############
  34. cluster.name: es-cluster
  35. #设置节点名称,集群内节点名称必须唯一。
  36. node.name: node2
  37. #表示该节点会不会作为主节点,true表示会;false表示不会
  38. node.master: true
  39. #当前节点是否用于存储数据,是:true、否:false
  40. node.data: true
  41. #索引数据存放的位置
  42. path.data: /usr/share/elasticsearch/data
  43. #日志文件存放的位置
  44. path.logs: /usr/share/elasticsearch/logs
  45. #需求锁住物理内存,是:true、否:false
  46. bootstrap.memory_lock: false
  47. #监听地址,用于访问该es
  48. network.host: 0.0.0.0
  49. #es对外提供的http端口,默认 9200
  50. http.port: 9200
  51. #TCP的默认监听端口,默认 9300
  52. transport.tcp.port: 9300
  53. #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
  54. discovery.zen.minimum_master_nodes: 1
  55. #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
  56. discovery.seed_hosts: ["node1ip:9300", "node2ip:9300"]
  57. discovery.zen.fd.ping_timeout: 1m
  58. discovery.zen.fd.ping_retries: 5
  59. #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
  60. cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300"]
  61. #cluster.initial_master_nodes: ["node1"]
  62. #是否支持跨域,是:true,在使用head插件时需要此配置
  63. http.cors.enabled: true
  64. #“*” 表示支持所有域名
  65. http.cors.allow-origin: "*"

启动es集群

#前置环境(es启动需要最小内存4G,否则无法启动,OOM)
#通过修改机器进程虚拟内存可启动es

  1. vim /etc/sysctl.conf
  2. #fs.file-max主要是配置系统最大打开文件描述符数,建议修改为655360或者更高
  3. fs.file-max=655360
  4. #影响Java线程数量,用于限制一个进程可以拥有的VMA(虚拟内存区域)的大小
  5. vm.max_map_count = 262144
  6. #生效
  7. sysctl -p

设置安全认证

es配置文件添加认证

新增配置,每个集群节点都需要设置。

  1. xpack.security.enabled: true
  2. xpack.security.transport.ssl.enabled: true
  3. xpack.security.transport.ssl.verification_mode: certificate
  4. xpack.security.transport.ssl.keystore.path: "elastic-certificates.p12"
  5. xpack.security.transport.ssl.truststore.path: "elastic-certificates.p12"

 生成TLS 和身份验证

将会在config下生成elastic-certificates.p12文件,将此文件传到其他两个节点的config目录

注意文件权限

  1. bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
  2. chmod 644 /data/elasticsearch/config/elastic-certificates.p12
  3. #sudo chmod 777 /data/elasticsearch/config/elastic-stack-ca.p12

启动集群 

es 集群不启动,下面的添加密码操作执行不了。

设置密码

在主节点上执行就行,数据会自动同步到其他节点

  1. #启动es,之后执行
  2. ./bin/elasticsearch-setup-passwords interactive

springboot访问

  1. @Override
  2. @Bean
  3. public RestHighLevelClient elasticsearchClient ()
  4. {
  5. final ClientConfiguration clientConfiguration =
  6. ClientConfiguration.builder()
  7. .connectedTo(esUrl)
  8. .withBasicAuth("elastic", "elastic")
  9. .build();
  10. return RestClients.create(clientConfiguration).rest();
  11. }

docker 搭建ES集群

docker安装

  1. sudo yum install docker
  2. sudo systemctl start docker
  3. sudo systemctl enable docker
  4. sudo docker info

 下载镜像

  1. sudo docker pull elasticsearch:7.14.2
  2. #docker pull docker.elastic.co/elasticsearch/elasticsearch:7.14.2

创建数据挂载外链

mkdir -p /data/elasticsearch/data && mkdir -p /data/elasticsearch/config && mkdir -p /data/elasticsearch/logs && mkdir -p /data/elasticsearch/plugins

elasticsearch文件

  1. cluster.name: es-cluster
  2. #设置节点名称,集群内节点名称必须唯一。
  3. node.name: node1
  4. #表示该节点会不会作为主节点,true表示会;false表示不会
  5. node.master: true
  6. #当前节点是否用于存储数据,是:true、否:false
  7. #node.data: true
  8. #索引数据存放的位置
  9. path.data: /usr/share/elasticsearch/data
  10. #日志文件存放的位置
  11. path.logs: /usr/share/elasticsearch/logs
  12. #需求锁住物理内存,是:true、否:false
  13. bootstrap.memory_lock: false
  14. #监听地址,用于访问该es
  15. network.host: 0.0.0.0
  16. #es对外提供的http端口,默认 9200
  17. http.port: 9200
  18. #TCP的默认监听端口,默认 9300
  19. transport.tcp.port: 9300
  20. #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
  21. discovery.zen.minimum_master_nodes: 1
  22. #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
  23. discovery.seed_hosts: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
  24. discovery.zen.fd.ping_timeout: 1m
  25. discovery.zen.fd.ping_retries: 5
  26. #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
  27. cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
  28. #cluster.initial_master_nodes: ["node1"]
  29. #是否支持跨域,是:true,在使用head插件时需要此配置
  30. http.cors.enabled: true
  31. #“*” 表示支持所有域名
  32. http.cors.allow-origin: "*"
  33. xpack.security.enabled: false
  34. ######################
  35. cluster.name: es-cluster
  36. #设置节点名称,集群内节点名称必须唯一。
  37. node.name: node2
  38. #表示该节点会不会作为主节点,true表示会;false表示不会
  39. node.master: true
  40. #当前节点是否用于存储数据,是:true、否:false
  41. node.data: true
  42. #索引数据存放的位置
  43. path.data: /usr/share/elasticsearch/data
  44. #日志文件存放的位置
  45. path.logs: /usr/share/elasticsearch/logs
  46. #需求锁住物理内存,是:true、否:false
  47. bootstrap.memory_lock: false
  48. #监听地址,用于访问该es
  49. network.host: 0.0.0.0
  50. #es对外提供的http端口,默认 9200
  51. http.port: 9200
  52. #TCP的默认监听端口,默认 9300
  53. transport.tcp.port: 9300
  54. #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
  55. discovery.zen.minimum_master_nodes: 1
  56. #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
  57. discovery.seed_hosts: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
  58. discovery.zen.fd.ping_timeout: 1m
  59. discovery.zen.fd.ping_retries: 5
  60. #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
  61. cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
  62. cluster.initial_master_nodes: ["node1"]
  63. #是否支持跨域,是:true,在使用head插件时需要此配置
  64. http.cors.enabled: true
  65. #“*” 表示支持所有域名
  66. http.cors.allow-origin: "*"
  67. xpack.security.enabled: false

 启动es集群

  1. docker run -d --network=host --privileged=true \
  2. -e ES_JAVA_OPTS="-Xms2g -Xmx2g" \
  3. -e TAKE_FILE_OWNERSHIP=true --name es \
  4. -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  5. -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
  6. -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
  7. -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  8. --restart unless-stopped elasticsearch:7.14.2
  9. #elasticsearch:7.14.2或者已下载好的镜像docker.elastic.co/elasticsearch/elasticsearch:7.14.2
  10. #参数解释
  11. -d:将容器以后台模式(detached mode)运行。
  12. --network=host:使用主机网络模式,容器与主机共享网络命名空间。
  13. --privileged=true:为容器提供特权访问,允许容器内部进行特权操作。
  14. -e ES_JAVA_OPTS="-Xms2g -Xmx2g":设置 Elasticsearch Java 虚拟机 (JVM) 的启动参数,其中 -Xms2g 是最小堆内存大小,-Xmx2g 是最大堆内存大小。
  15. -e TAKE_FILE_OWNERSHIP=true:指示 Elasticsearch 在启动时获取文件所有权。
  16. --name es:为容器指定一个名称为 "es"
  17. -v:将主机上的 Elasticsearch 配置文件挂载到容器内部
  18. --restart unless-stopped:在容器退出时自动重启容器,除非手动停止容器。

设置安全验证

 es配置文件添加认证

新增配置,每个集群节点都需要设置。

  1. xpack.security.enabled: true
  2. xpack.security.transport.ssl.enabled: true
  3. xpack.security.transport.ssl.verification_mode: certificate
  4. xpack.security.transport.ssl.keystore.path: "elastic-certificates.p12"
  5. xpack.security.transport.ssl.truststore.path: "elastic-certificates.p12"

 生成TLS 和身份验证

进入docker

docker exec -it id bash

 生成证书

  1. bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
  2. chmod 644 /data/elasticsearch/config/elastic-certificates.p12
  3. #sudo chmod 777 /data/elasticsearch/config/elastic-stack-ca.p12

 将证书同步到其他节点

  1. #复制证书到外链目录
  2. docker cp df3552171cf0:/usr/share/elasticsearch/config/elastic-certificates.p12 ./config/elastic-certificates.p12
  3. #scp到其他节点
  4. scp ./config/elastic-certificates.p12 user@ip:/dir

启动集群 

es 集群不启动,下面的添加密码操作执行不了。

需挂载证书

  1. docker run -d --network=host --privileged=true \
  2. -e ES_JAVA_OPTS="-Xms2g -Xmx2g" \
  3. -e TAKE_FILE_OWNERSHIP=true --name es \
  4. -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  5. -v /data/elasticsearch/config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 \
  6. -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
  7. -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
  8. -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  9. --restart unless-stopped elasticsearch:7.14.2

设置密码

在主节点上执行就行,数据会自动同步到其他节点

  1. #进入docker
  2. #设置密码
  3. ./bin/elasticsearch-setup-passwords interactive

访问es

 curl -user elastic http://10.100.31.170:9200/_cluster/health    

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/844597
推荐阅读
相关标签
  

闽ICP备14008679号