es-kibana集群搭建(7.3版本带x-pack)
一、前言
es因为版本迭代太快,网上的资料大多停留在6.x及之前的版本,但是6.x版本之前的es安全插件x-pack是收费的,如果不付费那es就是裸奔的状态。而从 6.8.0 和 7.1.0 版本开始,x-pack安全功能免费提供,但是网上关于x-pack的安装与使用确极少,本人最近恰好有用到所以记录一下(我这里使用的是7.3版本,我这里搭的是伪集群,搭建正式环境修改对应ip和端口就行)。
二、安装elasticSearch
角色划分:
node |
ip和端口 |
|
node-1 |
172.31.10.148:9301 172.31.10.148:9201 |
/home/xdt/tools/es1 |
node-2 |
172.31.10.148:9302 172.31.10.148:9202 |
/home/xdt/tools/es2 |
Node-3 |
172.31.10.148:9303 172.31.10.148:9203 |
/home/xdt/tools/es3 |
1. 创建一个新用户(不能在root用户下安装,会报错,我这里创建了xdt用户)
2. 准备系统环境
设置允许xdt用户打开的最大文件数,要求最小65535
在/etc/security/limits.conf 下面添加
xdt soft nofile 65535
xdt hard nofile 65535
设置允许xdt用户打开可以打开的最大线程数,要求最小4096
在/etc/security/limits.conf 下面添加
xdt soft nproc 4096
xdt hard nproc 4096
设置允许的最大映射数,要求最小65530
在/etc/sysctl.conf 下面添加
vm.max_map_count=262144
3. 切换到新用户下
4. 切换到es安装包存放位置,我这里是 /home/xdt/tools
5. 下载elasticSearch安装包
6. 解压安装包
7. 设置jvm.options配置文件
(1)设置es的堆大小(默认是1g,最大堆大小和最小堆大小建议设置为相等),在jvm.options文件中修改,我这里修改为:
-Xms4g
-Xmx4g
(2)设置gc日志目录
默认: elasticsearch-7.3.1/logs
(3)设置jvm致命错误日志
默认: elasticsearch-7.3.1/logs
8. 创建两个文件夹用来存放数据和日志(我这里用的路径是/home/xdt/tools/es1/data和/home/xdt/tools/es1/logs)
9. 打开安装目录,修改config下的elasticsearch.yml配置文件
# 集群中的名称
cluster.name: bk-es
# 该节点名称
node.name: node-1
#数据
path.data: /home/xdt/tools/es1/data
#日志
path.logs: /home/xdt/tools/es1/logs
#主节点
cluster.initial_master_nodes: ["172.31.10.148:9301","172.31.10.148:9302","172.31.10.148:9303"]
# 意思是该节点是否可选举为主节点
node.master: true
# 表示这是数据节点
node.data: true
# 监听全部ip,在实际环境中应为一个安全的ip
network.host: 172.31.10.148
# es服务的端口号
http.port: 9201
# 内部节点之间沟通端口
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
# 配置自动发现
discovery.seed_hosts: ["172.31.10.148:9301","172.31.10.148:9302","172.31.10.148:9303"]
10. 安装ik分词器
1. 下载ik包:
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.1/elasticsearch-analysis-ik-7.3.1.zip
2. 解压到ik文件夹
3. 将ik文件夹移动到/home/xdt/tools/es1/elasticsearch-7.3.1/plugins下
11. 将es1文件夹复制两份(分别为es2,es3)
修改elasticsearch.yml配置文件
es2的配置文件为:
# 集群中的名称
cluster.name: bk-es
# 该节点名称
node.name: node-2
#数据
path.data: /home/xdt/tools/es2/data
#日志
path.logs: /home/xdt/tools/es2/logs
#主节点
cluster.initial_master_nodes: ["172.31.10.148:9301","172.31.10.148:9302","172.31.10.148:9303"]
# 意思是该节点是否可选举为主节点
node.master: true
# 表示这是数据节点
node.data: true
# 监听全部ip,在实际环境中应为一个安全的ip
network.host: 172.31.10.148
# es服务的端口号
http.port: 9202
# 内部节点之间沟通端口
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
# 配置自动发现
discovery.seed_hosts: ["172.31.10.148:9301","172.31.10.148:9302","172.31.10.148:9303"]
es3的配置文件为:
# 集群中的名称
cluster.name: bk-es
# 该节点名称
node.name: node-3
#数据
path.data: /home/xdt/tools/es3/data
#日志
path.logs: /home/xdt/tools/es3/logs
#主节点
cluster.initial_master_nodes: ["172.31.10.148:9301","172.31.10.148:9302","172.31.10.148:9303"]
# 意思是该节点是否可选举为主节点
node.master: true
# 表示这是数据节点
node.data: true
# 监听全部ip,在实际环境中应为一个安全的ip
network.host: 172.31.10.148
# es服务的端口号
http.port: 9203
# 内部节点之间沟通端口
transport.tcp.port: 9303
http.cors.enabled: true
http.cors.allow-origin: "*"
# 配置自动发现
discovery.seed_hosts: ["172.31.10.148:9301","172.31.10.148:9302","172.31.10.148:9303"]
12. 启动es
./bin/elasticsearch -d
#查看集群的健康信息
curl '172.31.10.148:9201/_cluster/health?pretty'
#查看集群的详细信息
curl '172.31.10.148:9201/_cluster/state?pretty'
三、X-pack安全配置
生成节点证书
1. 生成证书颁发机构:执行bin/elasticsearch-certutil ca命令,会提示输入文件目录和密码,我这里没有输入直接回车了,然后生成elastic-stack-ca.p12文件。
2. 生成证书和私钥:执行bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12(elastic-stack-ca.p12 是前面生成的证书),会提示输入证书颁发机构密码,证书生成目录和证书密码,我这里都没有设置。生成文件elastic-certificates.p12。
加密集群中的节点之间的通信和账户验证
1. 在/home/xdt/tools/es1/elasticsearch-7.3.1/config目录下面创建certs目录,并将前面生成的elastic-certificates.p12证书移进去。并将证书复制给其他节点。
2. 配置elasticsearch.yml配置文件(其他节点配置一样),添加:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
3. 如果生成生成证书和私钥的时候设置了密码,则还需要进行下面操作(每个节点都要)添加密码:
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
4. 运行elasticsearch
5. 设置密码(账号默认为elastic)
在elasticsearch-7.3.1/bin/目录下运行:
./elasticsearch-setup-passwords interactive
它会不止是设置elasticsearch,其他的kibana、logstash也会一起设置了,密码最好全设置同一个,也可以用下面命令自动生成密码:
./elasticsearch-setup-passwords auto
6. 修改密码方式
curl -H "Content-Type:application/json" -XPOST -u elastic 'http://172.31.10.148:9201/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'
7. 添加xdt账户并添加至admin角色操作方法
curl -XPOST -H 'Content-type: application/json' -u elastic:elastic 'http://10.59.30.96:9200/_xpack/security/user/xdt?pretty' -d '{
> "password" : "123456",
> "full_name" : "xdt",
> "roles" : ["admin"],
> "email" : "xdt@bakclass.com"
> }'
8. 访问发现有了账号密码验证:
加密HTTP客户端通信
该配置可配可不配
1. 配置elasticsearch.yml配置文件(其他节点配置一样),添加:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.http.ssl.truststore.path: certs/elastic-certificates.p12
2. 通过https访问:
四、安装kibana
1. 下载kibana包:
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.1-linux-x86_64.tar.gz
2. 解压安装包
3. 创建
4. 打开安装目录,修改config下的kibana.yml配置文件
server.port: 5601 # 配置kibana的端口
server.host: 172.31.10.148 #设置本地ip
elasticsearch.hosts:["http://:172.31.10.148:9201","http://172.31.10.148:9202","http://172.31.10.148:9203"] # 配置es服务器的ip
i18n.locale: "zh-CN" #配置中文语言
5. Kibana的配置x-pack:
修改kibana.yml配置文件,添加es的用户名和密码,添加如下:
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
6. 启动kibana