vlambda博客
学习文章列表

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安装包

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.1-linux-x86_64.tar.gz

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文件夹复制两份(分别为es2es3

修改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.p12elastic-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,其他的kibanalogstash也会一起设置了,密码最好全设置同一个也可以用下面命令自动生成密码:

./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