文章目录
- 前言
- 安装 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/
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用户直接运行,需要创建一个新用户。
- 创建组和用户:
groupadd esuser useradd esuser -g esuser
- 授权: xxxx 为实际安装目录
chown -R esuser:esuser **xxxx**/elasticsearch-7.6.2
- 切换用户:
su - esuser
- 启动elasticsearch
cd bin ./elasticsearch
- 查看是否成功启动,如果可以成功启动,则 Ctrl+C 停止elasticsearch ,使用命令后台启动
Ctrl+C ./elasticsearch -d
5. 设置集群密码
- 进入bin 目录
cd bin/
- 设置集群密码
elasticsearch-setup-passwords interactive
- 输入两次 ‘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
- 切换到root 用户,输入密码,授权: PATH 为实际安装目录
su root chown -R esuser: esuser **PATH**/kibana-7.6.2
- 切换用户:
su - esuser
- 启动kibana:
cd kibana-7.6.2/bin/ ./kibana
- 查看是否成功启动,如果可以成功启动,则 Ctrl+C 停止kibana ,使用命令后台启动
Ctrl+C
nohup ./kibana &
安装配置 elasticsearch-head
Head 插件 并非必须安装,类似于 Navicat 对于 MySql 一样,但并不能执行太复杂操作,且没有语法提示,主要是用来进行可视化查看数据,执行命令还是Kibana更方便一点。
1. 安装 node.js
下载地址:http://nodejs.cn/download/
选择Linux 系统 64位
解压 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**!**