文章目录

  • 前言
  • 安装 Elasticsearch 7.6.2
  • 1. 下载并安装Elasticsearch 7.6.2
  • 2. 生成x-pack 密钥
  • 2. 修改配置文件
  • 3. 修改系统虚拟内存大小
  • 4. 创建esuser用户,启动Elasticsearch
  • 5. 设置集群密码
  • 安装 Kibana 7.6.2
  • 1. 下载并安装 Kibana 7.6.2
  • 2. 修改配置文件
  • 3. 切换用户,启动 Kibana
  • 安装配置 elasticsearch-head
  • 1. 安装 node.js
  • 2. 下载并 elasticsearch-head 并解压
  • 3. 进入 elasticsearch-head 目录运行项目
  • 配置 Nginx 代理
  • 测试接口


前言

该文档用于部署 Elasticsearch 7.6.2 单节点环境,包含基础的x-pack 配置,Nginx 接口代理等基础安全防护措施

安装 Elasticsearch 7.6.2

1. 下载并安装Elasticsearch 7.6.2

解压,即可 使用, 下载地址:

https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-6-2

官网下载慢,可以到华为开源镜像站(https://mirrors.huaweicloud.com/)下载。下载地址:

https://mirrors.huaweicloud.com/elasticsearch/7.6.2/elasticsearch-7.6.2-linux-x86_64.tar.gz

2. 生成x-pack 密钥

1. 进入bin 目录

cd bin/

2. 执行生成密钥脚本

./elasticsearch-certutil ca -out  config/elastic-certificates.p12 -pass ""

3.查看config 目录下是否生成 elastic-certificates.p12 文件

cd config/


es查看键的接口_es查看键的接口

2. 修改配置文件

添加以下字段追加到elasticsearch-7.6.2/config/elasticsearch.yml尾部

该配置为单节点配置

# Allow cors origin
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

# 测试服务器,允许所有网段访问,实际服务器需要限制ip段进行访问
network.host: 0.0.0.0

# 单节点模式
discovery.type: single-node

# 设置x-pack为开启
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

修改 config/jvm.options 文件, 根据实际内存容量调整jvm 内存,我们这里设置了4G

-Xms4g  -Xmx4g

3. 修改系统虚拟内存大小

1.编辑 /etc/sysctl.conf 配置文件(解决最大虚拟内存太小)

vi /etc/sysctl.conf

2.添加如下配置:

vm.max_map_count=262144

3.保存后执行命令,刷新配置:

sysctl -p

4. 创建esuser用户,启动Elasticsearch

创建启动ES账号
出于安全问题elasticsearch 不让用root用户直接运行,需要创建一个新用户。

  1. 创建组和用户:
groupadd  esuser   useradd esuser -g esuser
  1. 授权: xxxx 为实际安装目录
chown  -R esuser:esuser **xxxx**/elasticsearch-7.6.2
  1. 切换用户:
su - esuser
  1. 启动elasticsearch
cd  bin   ./elasticsearch
  1. 查看是否成功启动,如果可以成功启动,则 Ctrl+C 停止elasticsearch ,使用命令后台启动
Ctrl+C  ./elasticsearch  -d

5. 设置集群密码

  1. 进入bin 目录
cd bin/
  1. 设置集群密码
elasticsearch-setup-passwords  interactive
  1. 输入两次 ‘y’ 之后,输出所有用户的密码,目前该项目的所有密码都是可以自行定义(如果没有重启过,则会提示,没有找到keystore文件)

    此处需要记住 elastic*用户的密码

用于Elasticsearch和 Kibana登录, kibana用户的密码用于配置Kibana.yml

安装 Kibana 7.6.2

kibana是官方提供的一款可视化工具,使用其中的开发者工具,我们可以更好的练习基础语法,更像一个MySql Command。

1. 下载并安装 Kibana 7.6.2

解压,即可使用 , 下载地址:

https://www.elastic.co/cn/downloads/past-releases/kibana-7-6-2)

官网下载慢,可以到华为开源镜像站(https://mirrors.huaweicloud.com/)下载。

2. 修改配置文件

添加以下字段追加到 kibana-7.6.2/config/kibana.yml尾部

# 指定kibana nginx访问路径
server.basePath: "/kibana"

# 修改语言是中文
i18n.locale: "zh-CN"

# 测试服务器,允许外网访问,实际服务器需要根据ip进行限制
server.host: 0.0.0.0

# elasticsearch 设置的集群密码,这里使用kibana 用户
elasticsearch.username: "kibana"
elasticsearch.password: "xxxxxxx"

3. 切换用户,启动 Kibana

  1. 切换到root 用户,输入密码,授权: PATH 为实际安装目录
su  root  chown  -R esuser: esuser **PATH**/kibana-7.6.2
  1. 切换用户:
su - esuser
  1. 启动kibana:
cd  kibana-7.6.2/bin/  ./kibana
  1. 查看是否成功启动,如果可以成功启动,则 Ctrl+C 停止kibana ,使用命令后台启动
Ctrl+C
nohup  ./kibana &

安装配置 elasticsearch-head

Head 插件 并非必须安装,类似于 Navicat 对于 MySql 一样,但并不能执行太复杂操作,且没有语法提示,主要是用来进行可视化查看数据,执行命令还是Kibana更方便一点。

1. 安装 node.js

下载地址:http://nodejs.cn/download/

选择Linux 系统 64位

es查看键的接口_es查看键的接口_02


解压 node-v14.15.0-linux-x64.tar.xz

tar -xvf  node-v14.15.0-linux-x64.tar.xz

移动并重命名文件夹

mv node-v14.15.0-linux-x64.tar.xz /usr/local/nodejs

建立软连接

ln -s /usr/local/nodejs /bin/npm  /usr/local/bin/   
  ln -s /usr/local/nodejs /bin/node /usr/local/bin/

2. 下载并 elasticsearch-head 并解压

下载地址:https://github.com/mobz/elasticsearch-head

3. 进入 elasticsearch-head 目录运行项目

npm install  nohup npm run start &

配置 Nginx 代理

为了安全起见,ES所有的接口不对外暴露,使用Nginx 进行代理,直接暴漏9200和9300,被恶意软件扫描到后会有安全隐患,其中基础接口配置如下所示:

基础接口Nginx 配置如下,可以自定义 80 / 443端口:

location ^~ /elasticsearch {
        proxy_pass  http://127.0.0.1:9200/;
}

location ^~ /kibana {
        proxy_pass  http://127.0.0.1:5601/;
        rewrite ^/kibana/(.*)$ /$1 break;
}

location ^~ /head-elasticsearch {
        proxy_pass  http://127.0.0.1:9100/;
}

ES 相关端口需要屏蔽,我这里将9200映射为19200,9300映射为19300,可以根据实际需要进行映射
ngx_https_es_cluster_19300.conf

server {
  listen 19300;                                                   # 映射的端口号
  server_name xxxxx.cn;                                  # 自己服务器的域名
  add_header X-Frame-Options "SAMEORIGIN";
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Scheme  $scheme;
  aio threads;
  ssl on;
  ssl_certificate   /data/soft/nginx/conf/conf.d/ca/nginx/xxxxxx.cer;    # 如果部署https 需要相关证书
  ssl_certificate_key   /data/soft/nginx/conf/conf.d/xxxx.key;              # 同上
  ssl_session_cache    shared:SSL:250m;
  ssl_session_timeout  30m;
  ssl_protocols TLSv1.2;

    location / {
        proxy_pass  http://127.0.0.1:9300;
    }
}

ngx_https_es_out_19200.conf

server {
  listen 19200;                                                   # 映射的端口号
  server_name xxxxx.cn;                                  # 自己服务器的域名
  add_header X-Frame-Options "SAMEORIGIN";
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Scheme  $scheme;
  aio threads;
  ssl on;
  ssl_certificate   /data/soft/nginx/conf/conf.d/ca/nginx/xxxxxx.cer;    # 如果部署https 需要相关证书
  ssl_certificate_key   /data/soft/nginx/conf/conf.d/xxxx.key;              # 同上
  ssl_session_cache    shared:SSL:250m;
  ssl_session_timeout  30m;
  ssl_protocols TLSv1.2;

    location / {
        proxy_pass  http://127.0.0.1:9200;
    }
}

配置后,重新加载 Nginx 使配置文件生效

测试接口

Elasticsearch 地址 :https://xxxxx.cn/elasticsearch/
Kibana 地址:https://xxxxx.cn/kibana/
由于进行X-Pack 加密,账号为 elastic 密码 xxxxxx

接口测试完成,都为可用后,部署结束,Have fun**!**