一、前言
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 |
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
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.1-linux-x86_64.tar.gz
-Xms4g
-Xmx4g
(2)设置gc日志目录
默认: elasticsearch-7.3.1/logs
修改:在jvm.options文件下的8:-Xloggc:写目标地址
(3)设置jvm致命错误日志
默认: elasticsearch-7.3.1/logs
修改:在jvm.options文件下的8-XX:ErrorFile=写目标地址
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"]
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.1/elasticsearch-analysis-ik-7.3.1.zip
# 集群中的名称
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"]
./bin/elasticsearch -d
#查看集群的健康信息
curl '172.31.10.148:9201/_cluster/health?pretty'
#查看集群的详细信息
curl '172.31.10.148:9201/_cluster/state?pretty'
三、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: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
./elasticsearch-setup-passwords auto
curl -H "Content-Type:application/json" -XPOST -u elastic 'http://172.31.10.148:9201/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'
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" : "[email protected]"
}'
加密HTTP客户端通信
该配置可配可不配
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
四、安装kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.1-linux-x86_64.tar.gz
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" #配置中文语言
elasticsearch.username: "elastic"
elasticsearch.password: "123456"