Elasticsearch 设置账户密码

免费版本的 ES 没有权限控制功能,想要配置账户密码有两种方法,一是通过试用版使用 XPACK,二是另外配置 Nginx 来设置 Basic Auth。 之前的文章有讲过通过 Nginx 的方式,这篇介绍 ES 原生的方式配置账号密码。 本文中 ES 的版本为 7.2.1。 配置文件 打开配置文件 vi config/elasticsearch.yml 添加以下 X-Pack 配置 http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization xpack.security.enabled: true xpack.security.transport.ssl.enabled: true 设置密码 ES 中默认设置了 elastic、kibana、logstash_system、beats_system 等多个默认账户,可以通过命令 bin/elasticsearch-setup-passwords interactive 为它们统一设置密码 运行脚本 docker run -d \ --name elasticsearch \ --network host \ --volume /data/elk/elasticsearch/data:/usr/share/elasticsearch/data \ --volume /data/elk/elasticsearch/config:/usr/share/elasticsearch/config \ --volume /data/elk/elasticsearch/config/logs:/usr/share/elasticsearch/config/logs \ --env discovery.type=single-node \ docker.elastic.co/elasticsearch/elasticsearch:7.2.1 docker exec -it elasticsearch bin/elasticsearch-setup-passwords interactive 需要设置各个默认账户的密码 Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user. You will be prompted to enter passwords as the process progresses. Please confirm that you would like to continue [y/N]y Enter password for [elastic]: Reenter password for [elastic]: Enter password for [apm_system]: Reenter password for [apm_system]: Enter password for [kibana]: Reenter password for [kibana]: Enter password for [logstash_system]: Reenter password for [logstash_system]: Enter password for [beats_system]: Reenter password for [beats_system]: Enter password for [remote_monitoring_user]: Reenter password for [remote_monitoring_user]: Changed password for user [apm_system] Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [beats_system] Changed password for user [remote_monitoring_user] Changed password for user [elastic] 测试是否配置成功 ...

March 29, 2021

用 Nginx 给 Elasticsearch 加上权限控制

安装 Nginx # 下载Nginx wget http://nginx.org/download/nginx-1.17.10.tar.gz # 解压Nginx tar zxvf nginx-1.17.10.tar.gz cd nginx-1.17.10 # 安装 ./configure --prefix=/data/home/nginx --without-http_rewrite_module make make install cd /data/home/nginx 用 htpasswd 命令生成密码文件 htpasswd -cm /data/home/nginx/espasswd username 修改 Nginx 配置 # 进程数 worker_processes 4; # 连接数 events { worker_connections 1024; } http { keepalive_timeout 65; # 将9200端口转发到9201 upstream elasticsearch_servers { zone elasticsearch_servers 64K; server localhost:9201; } server { listen 9200; server_name _; # 加上密码认证 location / { auth_basic "auth_basic"; auth_basic_user_file /data/home/nginx/espasswd; proxy_pass http://elasticsearch_servers; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } 重启 Nginx ...

May 15, 2020

在较小内存的机器上运行 Elasticsearch 与 Kibana

因为穷,只买得起 1G 内存的乞丐配置版的云服务器,但是又想玩玩 Elasticsearch+Kibana。而 Elasticsearch 默认的 heap size 就是 1G,很容易卡死,因此需要手动修改一下配置。 Elasticsearch 配置 打开 jvm 配置文件 vi elasticsearch/config/jvm.options 修改内存空间为 256m -Xms256m -Xmx256m Kibana 配置 打开 Kibana 运行文件 vi kibana/bin/kibana 在最后一行前面加上一行,修改 node.js 最大内存空间 NODE_OPTIONS="${NODE_OPTIONS:=--max-old-space-size=256}" 据了解,对于某些版本的 node.js,内存参数横杠要改成下划线 NODE_OPTIONS="${NODE_OPTIONS:=--max_old_space_size=256}" 然后分别启动 Elasticsearch 和 Kibana 即可。

August 25, 2019

给 Elasticsearch 和 Kibana 加上权限控制

注:Elasticsearch 和 Kibana 使用版本为 7.2.0,其它版本暂未测试过 免费版的 ES 的默认配置中没有权限控制,需要手动开启 启动 ES 中的安全设置 打开 ES 的配置文件 vi elasticsearch/config/elasticsearch.yml 添加配置 xpack.security.enabled: true xpack.security.authc.accept_default_password: false 添加单节点发现模式 discovery.type: single-node 设置密码 输入 elasticsearch/bin/elasticsearch-setup-passwords interactive 按照提示输入密码 给用户配置权限 例如先创建一个对"events"开头的 index 拥有所有权限的角色 events_admin,并可以在 Kibana 中作图和做报表,然后将用户名加入该角色即可 curl -XPOST -u elastic 'localhost:9200/_security/role/events_admin' -H "Content-Type: application/json" -d '{ "indices" : [ { "names" : [ "events*" ], "privileges" : [ "all" ] }, { "names" : [ ".kibana*" ], "privileges" : [ "manage", "read", "index" ] } ] }' curl -XPOST -u elastic 'localhost:9200/_security/user/your_name' -H "Content-Type: application/json" -d '{ "password" : "userpassword", "full_name" : "Full Name", "email" : "fullname@anony.mous", "roles" : [ "events_admin" ] }' 配置 Kibana 打开 Kibana 配置文件 ...

August 25, 2019

搭建 hadoop + hive + spark 环境

安装 mysql sudo apt-get update sudo apt-get install mysql-server sudo apt-get install mysql-client # 启动 sudo mysql -u root -p CREATE DATABASE hive; USE hive; CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive'; GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive'; GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive'; FLUSH PRIVILEGES; 安装 hadoop sudo apt-get install ssh sudo apt-get install rsync tar -xzvf hadoop-2.7.6.tar.gz ln -s /home/yzchen/hadoop hadoop export JAVA_HOME=/home/yzchen/jdk export HADOOP_HOME=/home/yzchen/hadoop export PATH="/home/yzchen/hadoop/bin:$PATH" mkdir home/yzchen/hadoop/tmp mkdir home/yzchen/hadoop/hdfs mkdir home/yzchen/hadoop/hdfs/name mkdir home/yzchen/hadoop/hdfs/data 配置 ssh 本地登录 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys ssh localhost 配置文件 etc/hadoop/core-site.xml: ...

August 23, 2019

Elasticsearch 与 Hive 的数据互导

首先先下载一个叫"elasticsearch-hadoop-hive"的 JAR 包,放到相应路径下:https://jar-download.com/artifacts/org.elasticsearch/elasticsearch-hadoop-hive Hive 数据导入 Elasticsearch 1. 在 ES 中建立 index,并定义数据格式和属性 PUT /index_name { "mappings": { "_doc": { "properties": { "field1": {"type": "keyword"}, "field2": {"type": "integer"} } } }, "settings": { "number_of_replicas": 0 } } 建 index 的 API 可以参考https://www.elastic.co/guide/en/elasticsearch/reference/7.2/indices-create-index.html 定义 ES 中数据格式可以参考https://www.elastic.co/guide/en/elasticsearch/reference/7.2/mapping-types.html 2. 在 Hive 中建立定义映射关系外部表 add jar path/to/elasticsearch-hadoop-6.4.2.jar; CREATE EXTERNAL TABLE index_name_to_es ( field1 string, field2 int ) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.resource' = 'index_name/_doc', 'es.index.auto.create' = 'false', 'es.nodes' = 'http://XXX.XXX.XXX.XXX', 'es.port'='9200' ); 也可以不用做第一步提前在 ES 中建 index,让 ES 自动解析数据类型,那么这里建外部表时设置属性'es.index.auto.create' = 'true' ...

June 27, 2019