从0开始搭建elfk单点、集群、加密集群

主机IP 主机名
10.0.0.91 elk91
10.0.0.92 elk92
10.0.0.93 elk93

环境准备

主机IP 主机名 操作系统
10.0.0.91 elk91 Ubuntu 22.04 LTS
10.0.0.92 elk92 Ubuntu 22.04 LTS
10.0.0.93 elk93 Ubuntu 22.04 LTS

elk版本选择

架构所有版本一定要一致

服务名 版本
elasticsearch 7.17.28
Kibana 7.17.28
Logstash 7.17.28
Filebeat 7.17.28

ES单点部署测试

1.下载软件包

root@elk91:~# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.28-amd64.deb

2.安装ES程序

root@elk91:~# dpkg -i elasticsearch-7.17.28-amd64.deb 

3.修改配置文件

root@elk91:~# vim /etc/elasticsearch/elasticsearch.yml
修改内容如下:
root@elk91:~# cat /etc/elasticsearch/elasticsearch.yml | egrep -v "^#|^$"
#集群名称
cluster.name: dezyan-linux96
#ES的数据存储路径
path.data: /var/lib/elasticsearch
#ES的日志存储路径
path.logs: /var/log/elasticsearch
#ES服务监听的地址
network.host: 0.0.0.0
#配置服务端口
http.port: 9200
#ES服务模式,此处设置单点只是为了测试
discovery.type: single-node
 

5.启动ElasticSearch服务

root@elk91:~# systemctl enable --now elasticsearch.service 
#查看端口信息
root@elk91:~# ss -ntl  | egrep "9[2|3]00"
LISTEN 0      4096               *:9300            *:*          
LISTEN 0      4096               *:9200            *:*

6.查看服务验证启动成功

root@elk91:~# curl http://10.0.0.91:9200/_cat/nodes
10.0.0.91 34 97 7 0.11 0.09 0.03 cdfhilmrstw * elk91

ES集群未加密环境部署

1.停止单点服务

root@elk91:~# systemctl stop elasticsearch.service 

2.拷贝软件包至其他节点

root@elk91:~# scp elasticsearch-7.17.28-amd64.deb 10.0.0.92:~
root@elk91:~# scp elasticsearch-7.17.28-amd64.deb 10.0.0.93:~

3.其他节点安装ES环境

root@elk92:~# dpkg -i elasticsearch-7.17.28-amd64.deb 
root@elk93:~# dpkg -i elasticsearch-7.17.28-amd64.deb 

4.修改ES集群配置文件

root@elk91:~# vim /etc/elasticsearch/elasticsearch.yml 
…………
cluster.name: dezyan-96
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
#此处去除了discovery.type: single-nod,改用了集群模式
discovery.seed_hosts: ["10.0.0.91", "10.0.0.92","10.0.0.93"]
cluster.initial_master_nodes: ["10.0.0.91","10.0.0.92","10.0.0.93"]

#复制配置文件至其他节点
root@elk91:~# scp /etc/elasticsearch/elasticsearch.yml 10.0.0.92:/etc/elasticsearch/
root@elk91:~# scp /etc/elasticsearch/elasticsearch.yml 10.0.0.93:/etc/elasticsearch/

5.所有节点同时启动ES服务

root@elk91:~# systemctl enable --now elasticsearch.service
root@elk92:~# systemctl enable --now elasticsearch.service
root@elk93:~# systemctl enable --now elasticsearch.service

6.检查集群是否正常工作

root@elk91:~# curl http://10.0.0.91:9200/_cat/nodes?v
ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
10.0.0.91            9          97  19    0.46    0.25     0.19 cdfhilmrstw *      elk91
10.0.0.93            4          97  16    0.45    0.18     0.12 cdfhilmrstw -      elk93
10.0.0.92           19          97  16    0.72    0.27     0.10 cdfhilmrstw -      elk92

kibana对接未加密的ES集群

1.下载kibana

root@elk91:~# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.28-amd64.deb

2.安装kibana

root@elk91:~# dpkg -i kibana-7.17.28-amd64.deb 

3.修改kibana配置文件

root@elk91:~#  egrep -v "^#|^$" /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]
i18n.locale: "zh-CN"
  • 相关参数说明
server.port
	kibana监听的端口。
	
server.host
	kibana监听的IP地址。
	
elasticsearch.hosts
	kibana管理的ES集群信息。
	
i18n.locale
	安装时选择的语言。

4.启动kibana服务

root@elk91:~# systemctl enable --now kibana.service
root@elk91:~# ss -ntl | grep 5601
LISTEN 0      511          0.0.0.0:5601      0.0.0.0:*

5.访问测试

http://10.0.0.91:5601/

对ES集群的加密

1.生成证书文件

root@elk91:~# /usr/share/elasticsearch/bin/elasticsearch-certutil cert -out /etc/elasticsearch/elastic-certificates.p12 -pass ""


#会生成如下文件
root@elk91:~#  ll /etc/elasticsearch/elastic-certificates.p12
-rw------- 1 root elasticsearch 3596 Mar 27 19:09 /etc/elasticsearch/elastic-certificates.p12

2.将证书文件授权并拷贝到其他节点

root@elk91:~# chmod 640 /etc/elasticsearch/elastic-certificates.p12
root@elk91:~# scp -p /etc/elasticsearch/elastic-certificates.p12 10.0.0.92:/etc/elasticsearch 
root@elk91:~# scp -p /etc/elasticsearch/elastic-certificates.p12 10.0.0.93:/etc/elasticsearch

3.修改ES集群的配置文件

root@elk91:~# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: dezyan-96
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.0.0.91", "10.0.0.92","10.0.0.93"]
cluster.initial_master_nodes: ["10.0.0.91","10.0.0.92","10.0.0.93"]

#在最后一行添加如下内容
#启用Elasticsearch的X-Pack安全功能
xpack.security.enabled: true
#启用传输层的SSL/TLS加密
xpack.security.transport.ssl.enabled: true
#设置SSL/TLS证书验证模式为certificate
xpack.security.transport.ssl.verification_mode: certificate
#指定SSL/TLS密钥库(keystore)的路径
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
#指定SSL/TLS信任库(truststore)的路径。
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

4.同步ES配置文件到其他节点

root@elk91:~# scp /etc/elasticsearch/elasticsearch.yml  10.0.0.92:/etc/elasticsearch/
root@elk91:~# scp /etc/elasticsearch/elasticsearch.yml  10.0.0.93:/etc/elasticsearch/

5.所有节点重启ES集群

root@elk91:~# systemctl restart elasticsearch.service 
root@elk92:~# systemctl restart elasticsearch.service 
root@elk93:~# systemctl restart elasticsearch.service 

6.测试验证ES集群访问

root@elk91:~# curl 10.0.0.91:9200/_cat/nodes?v
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/_cat/nodes?v]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/_cat/nodes?v]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

7.生成随机密码

root@elk92:~# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords  auto
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = Axnq1l0YE5X7VQ7NyznI

Changed password for user kibana_system
PASSWORD kibana_system = u8SXpb5TM97itEEngA5U

Changed password for user kibana
PASSWORD kibana = u8SXpb5TM97itEEngA5U

Changed password for user logstash_system
PASSWORD logstash_system = ZkI5M1vNpGQris6sbfUL

Changed password for user beats_system
PASSWORD beats_system = pFjnfannxAcHWIYS2t3I

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = 3ZMR0LgQlGpAySyAKWVs

Changed password for user elastic
PASSWORD elastic = QiDB74k42rF25CntalUw

8.使用密码验证集群是否正常

root@elk92:~# curl -u elastic:QiDB74k42rF25CntalUw 10.0.0.91:9200/_cat/nodes
10.0.0.93 14 95 10 0.27 0.26 0.15 cdfhilmrstw - elk93
10.0.0.91 27 97 12 0.24 0.31 0.22 cdfhilmrstw - elk91
10.0.0.92 24 96 14 0.44 0.43 0.24 cdfhilmrstw * elk92

kibana对接加密的ES集群

1.修改kibana的配置文件

root@elk91:~# egrep -v "^#|^$"  /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]
elasticsearch.username: "kibana_system"
#使用上面步骤中生成的密码
elasticsearch.password: "u8SXpb5TM97itEEngA5U"
i18n.locale: "zh-CN"

2.重启kibana

root@elk91:~# systemctl restart kibana.service 

3.访问kibana的webUI重置管理员密码

10.0.0.91:5601

image
image

ES集群配置https证书及kibana登录

1.自建ca证书

root@elk91:~# /usr/share/elasticsearch/bin/elasticsearch-certutil ca --out /etc/elasticsearch/elastic-stack-ca.p12 --pass ""

#会生成如下文件
root@elk91:~# ll /etc/elasticsearch/elastic-stack-ca.p12
-rw------- 1 root elasticsearch 2672 Mar 27 19:46 /etc/elasticsearch/elastic-stack-ca.p1

2.基于自建ca证书生成ES证书

root@elk91:~# /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca /etc/elasticsearch/elastic-stack-ca.p12 --out /etc/elasticsearch/elastic-certificates-https.p12 --pass "" --days 3650 --ca-pass ""

#生成如下文件
root@elk91:~# ll /etc/elasticsearch/elastic-stack-ca.p12 
-rw------- 1 root elasticsearch 2672 Mar 27 19:46 /etc/elasticsearch/elastic-stack-ca.p12
root@elk91:~# ll  /etc/elasticsearch/elastic-certificates-https.p12
-rw------- 1 root elasticsearch 3596 Mar 27 19:47 /etc/elasticsearch/elastic-certificates-https.p12

3.修改配置文件

root@elk91:~# egrep -v "^#|^$" /etc/elasticsearch/elasticsearch.yml
cluster.name: dezyan-linux96
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.0.0.91", "10.0.0.92","10.0.0.93"]
cluster.initial_master_nodes: ["10.0.0.91","10.0.0.92","10.0.0.93"]
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
#添加如下配置
xpack.security.authc.api_key.enabled: true
xpack.security.authc.api_key.hashing.algorithm: pbkdf2
xpack.security.authc.api_key.cache.ttl: 1d
xpack.security.authc.api_key.cache.max_keys: 10000
xpack.security.authc.api_key.cache.hash_algo: ssha256
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates-https.p12

4.同步配置文件集群的其他节点

root@elk91:~# chmod 640 /etc/elasticsearch/elastic-certificates-https.p12
root@elk91:~# scp  -p /etc/elasticsearch/elastic{-certificates-https.p12,search.yml} 10.0.0.92:/etc/elasticsearch/
root@elk91:~# scp  -p /etc/elasticsearch/elastic{-certificates-https.p12,search.yml} 10.0.0.93:/etc/elasticsearch/

5.重启ES集群

root@elk91:~# systemctl restart elasticsearch.service
root@elk92:~# systemctl restart elasticsearch.service
root@elk93:~# systemctl restart elasticsearch.service

6.测试验证,使用https协议

root@elk91:~# curl https://10.0.0.91:9200/_cat/nodes  -u elastic:123456 -k
10.0.0.92 12 97 91 0.81 0.46 0.46 cdfhilmrstw - elk92
10.0.0.91 21 97 62 0.97 0.32 0.22 cdfhilmrstw - elk91
10.0.0.93 24 96 66 0.60 0.18 0.12 cdfhilmrstw * elk93

7.修改kibana的配置跳过自建证书校验

root@elk91:~# egrep -v "^#|^$" /etc/kibana/kibana.yml 
server.port: 5601
server.host: "0.0.0.0"
#修改指向ES集群的地址协议为https
elasticsearch.hosts: ["https://10.0.0.91:9200","https://10.0.0.92:9200","https://10.0.0.93:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "u8SXpb5TM97itEEngA5U"
#跳过证书校验
elasticsearch.ssl.verificationMode: none
i18n.locale: "zh-CN"

root@elk91:~# systemctl restart kibana.service
root@elk91:~# ss -ntl | grep 5601
LISTEN 0      511          0.0.0.0:5601      0.0.0.0:* 

Filebeat的安装

1.下载Filebeat

root@elk92:~# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.28-amd64.deb

2.安装Filebeat

root@elk92:~# dpkg -i filebeat-7.17.28-amd64.deb
Selecting previously unselected package filebeat.
(Reading database ... 111432 files and directories currently installed.)
Preparing to unpack filebeat-7.17.28-amd64.deb ...
Unpacking filebeat (7.17.28) ...
Setting up filebeat (7.17.28) ...

Logstash的安装

1.下载Logstash

root@elk91:~# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.28-amd64.deb

2.安装Logstash

root@elk91:~# ll -h logstash-7.17.28-amd64.deb 
-rw-r--r-- 1 root root 359M Mar 13 14:41 logstash-7.17.28-amd64.deb
root@elk91:~# dpkg -i logstash-7.17.28-amd64.deb
Selecting previously unselected package logstash.
(Reading database ... 157651 files and directories currently installed.)
Preparing to unpack logstash-7.17.28-amd64.deb ...
Unpacking logstash (1:7.17.28-1) ...
Setting up logstash (1:7.17.28-1) ...
Using bundled JDK: /usr/share/logstash/jdk
Using provided startup.options file: /etc/logstash/startup.options
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.32/lib/pleaserun/platform/base.rb:112: warning: constant ::Fixnum is deprecated
Successfully created system startup script for Logstash

3.创建符号链接,将Logstash命令添加到PATH环境变量

root@elk91:~# ln -svf /usr/share/logstash/bin/logstash /usr/local/bin/
'/usr/local/bin/logstash' -> '/usr/share/logstash/bin/logstash'
posted @ 2025-03-27 22:50  丁志岩  阅读(122)  评论(0)    收藏  举报