首页 > 系统相关 >ubuntu 20.04 部署elastic stack

ubuntu 20.04 部署elastic stack

时间:2024-07-21 13:18:08浏览次数:18  
标签:node http elastic 证书 -- 20.04 172.30 stack

8.x后ES不在需要自行准备JDK环境,部署的服务包含ES、Kibana、Logstash,使用二进制方式部署,为了提高安全性,加密logstash、kibana及其他客户端到ES间的通信。

1、准备工作

1.1、 es无法使用root用户启动
useradd -m -s /bin/bash esuser
1.2、配置必要的内核参数,否则会启动失败
vm.max_map_count定义了一个进程可以拥有的最大内存映射区域数量。Elasticsearch,特别是其底层搜索引擎 Lucene,广泛使用内存映射文件 (mmap) 来提高索引和搜索数据的性能。如果 vm.max_map_count 的值太低,可能会因为无法创建足够的内存映射而导致 Elasticsearch 启动失败或在运行中出现性能问题

echo "vm.max_map_count = 262144" >> /etc/sysctl.conf 
sysctl -p

1.3、节点之间配置ssh免密(可选)

1.4、配置hosts

172.30.200.11 node-1
172.30.200.12 node-2
172.30.200.30 node-3

2、ES集群部署

2.1、下载安装包

规范安装在/data目录,包的下载直接官网复制链接以后wget

chown -R esuser:esuser /data/elasticsearch-8.14.3
sudo su - esuser

2.2、生成ES的CA并且分发证书

证书不同的扩展名代表不同用途

  • .p12 文件意味着它同时拥有证书和相应的私钥,这对于需要双向认证的场景(es集群node间通信)
  • pem和crt都可以存储公钥证书,里面包含了公钥、证书主体信息(如持有者名称、组织等)、颁发者信息(如颁发机构的名称和详情)以及有效期等。同时也用于确保网络通信的安全。
  • pem同时也可以存储私钥

2.2.1、生成CA证书
指定证书名称并且免密
bin/elasticsearch-certutil ca --out elastic-stack-ca.p12 --pass ""

2.2.2、免密生成ES节点证书

用户ES集群节点之间的传输层安全(Transport Layer Security,TLS)

bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --ca-pass "" --out elastic-certificates.p12 --pass ""
当前生成了elastic-certificates.p12和elastic-stack-ca.p12,将ca和证书拷贝到config/certs目录下,启用xpack以后es会从这里读取证书

mkdir config/certs
cp elastic-* config/certs/

2.2.4、免密生成http证书

HTTP 证书在 Elastic Stack 中主要用于保护客户端和服务器之间的通信,特别是 Elasticsearch 和 Kibana 的 REST API(CS架构、无状态、http方法实现增删改查)。这些证书确保数据在传输过程中的加密,同时也验证通信双方的身份,从而防止中间人攻击和数据窃听。

# ip和dns有一定预留,长远考虑还可以想到是否要迁移,给新的CIDR ip也加入进来
./bin/elasticsearch-certutil cert --name http \
  --ca config/certs/elastic-stack-ca.p12 --ca-pass "" \
  --dns node-1,node-2,node-3,node-4,node-5,logstash-1,logstash-2,logstash-3,kibana-1,kibana-2 \
  --ip 172.30.200.11,172.30.200.12,172.30.200.13,172.30.200.14,172.30.200.15,172.30.200.16,172.30.200.17,172.30.200.30 \
  --days 18250 \
  --out config/certs/http.p12 --pass ""

2.2.5、对证书进行检查

# 可以查看到证书名称、证书颁发者、证书Base64内容
openssl pkcs12 -in http.p12 -clcerts -nokeys -info
# 如果要查看更多的SAN信息,需要先提取证书出来
openssl pkcs12 -in http.p12 -clcerts -nokeys -out http_cert.crt -passin pass:
# 查看证书内容
openssl x509 -in http_cert.crt -text -noout
# 找到了有效期
            Not Before: Jul 21 03:38:30 2024 GMT
            Not After : Jul  9 03:38:30 2074 GMT

2.3 配置主节点

初始化集群

# 集群名称,三台集群,要配置相同的集群名称!!!
cluster.name: baga
# 节点名称
node.name: node-1
# 数据目录
path.data: data
# log目录
path.logs: logs
# 修改 network.host 为 0.0.0.0,表示对外开放,如对特定ip开放则改为指定ip
network.host: 0.0.0.0
# 设置对外服务http端口,默认为9200
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
discovery.seed_hosts: ["node-1"]
# 下面的两个配置在安装elasticsearch-head的时候会用到
# 开启跨域访问支持,默认为false
http.cors.enabled: true
# 跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: "*"
# 加密节点间通信-每个节点容器都要添加

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

# Enable encryption for HTTP API client connections
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/http.p12
xpack.security.http.ssl.truststore.path: certs/http.p12

上面配置如果开始init和seed就写三个集群,集群状态为Yellow,REST请求会503,所以先改为单节点

2.4、启动集群并重置elastic用户密码

# 测试简单点123456
bin/elasticsearch-reset-password  -i -u elastic

2.5、查看集群状态

集群状态没有问题以后就可以让新节点加入了

# 查看节点
curl -k  -u elastic:123456 "https://localhost:9200/_cat/nodes?v"
# 集群健康检查,确认status为green
curl -k  -u elastic:123456 "https://localhost:9200/_cluster/health?pretty"

2.6、拷贝证书到其他节点

我这里直接scp,其他节点也要授权用户
chown -R esuser:esuser /data/elasticsearch-8.14.3
./bin/elasticsearch -d 后台启动

# 日志中也看到新节点的成功加入
[2024-07-21T13:06:29,850][INFO ][o.e.c.s.MasterService    ] [node-1] node-join[{node-3}{HimPVAGmQQW9HLNnaEw1dg}{9pd9bUsNQti9VMryrOpSgw}{node-3}{172.30.200.30}{172.30.200.30:9300}{cdfhilmrstw}{8.14.3}{7000099-8505000} joining], term: 7, version: 96, delta: added {{node-3}{HimPVAGmQQW9HLNnaEw1dg}{9pd9bUsNQti9VMryrOpSgw}{node-3}{172.30.200.30}{172.30.200.30:9300}{cdfhilmrstw}{8.14.3}{7000099-8505000}}
[2024-07-21T13:06:30,337][INFO ][o.e.c.s.ClusterApplierService] [node-1] added {{node-3}{HimPVAGmQQW9HLNnaEw1dg}{9pd9bUsNQti9VMryrOpSgw}{node-3}{172.30.200.30}{172.30.200.30:9300}{cdfhilmrstw}{8.14.3}{7000099-8505000}}, term: 7, version: 96, reason: Publication{term=7, version=96}
[2024-07-21T13:06:30,342][INFO ][o.e.c.c.NodeJoinExecutor ] [node-1] node-join: [{node-3}{HimPVAGmQQW9HLNnaEw1dg}{9pd9bUsNQti9VMryrOpSgw}{node-3}{172.30.200.30}{172.30.200.30:9300}{cdfhilmrstw}{8.14.3}{7000099-8505000}] with reason [joining]

2.7 故障切换

停掉一台后master已经切换到了node-3
image

2.8、错误(单节点集群)

第三台节点也是scp的主节点es目录,没有删除es的data目录,导致启动后node-3成了一个新的集群
清空data目录后重新启动服务加入集群成功

esuser@elk-1:~$ curl -k -u elastic:123456 "https://node-3:9200/_cat/nodes?v"
ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
172.30.200.30           10          98  10    1.01    0.41     0.16 cdfhilmrstw *      node-3
esuser@elk-1:~$ curl -k -u elastic:123456 "https://node-2:9200/_cat/nodes?v"
ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
172.30.200.11           13          66   0    0.06    0.20     0.10 cdfhilmrstw *      node-1
172.30.200.12           12          89   1    0.10    0.13     0.08 cdfhilmrstw -      node-2

3、配置Kibana

标签:node,http,elastic,证书,--,20.04,172.30,stack
From: https://www.cnblogs.com/Jarvansi/p/18314342

相关文章

  • ElasticSearch - 原理入门
    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。Ela......
  • ElasticSearch - match和term有什么区别
    match和term 查询是两种常用的查询方式,在用途和行为上有着显著的差异:1.match查询全文搜索:match查询用于全文搜索场景。它在查询之前对字段值和查询字符串进行分词(tokenization)处理。分析器(Analyzer)应用:match查询会应用字段指定的分析器(如果有的话)来处理查询字符串。这意......
  • Elasticsearch集群管理在分布式环境中的应用
    ......
  • docker部署Elasticsearch和Kibana
    1.Elasticsearch和Kibana介绍1.1什么是Elasticsearch?Elasticsearch是一个开源的分布式搜索和分析引擎,用于处理大规模数据的实时搜索、分析和存储。它构建在ApacheLucene搜索引擎库的基础上,提供了一个RESTfulAPI和易于使用的工具,使得在大数据量情况下进行搜索和分析变得高......
  • 使用Java和Elastic Stack进行日志分析
    使用Java和ElasticStack进行日志分析大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代企业中,日志分析是确保系统健康、进行故障排查和优化性能的重要环节。ElasticStack(ELKStack)是一个强大的工具集,包含Elasticsearch、Logstash和Kibana,能够有......
  • 使用 Elasticsearch Python SDK 查询 Easysearch
    随着数据分析需求的不断增长,高效查询和分析大数据集变得越来越重要。Easysearch作为一种强大的国产化搜索和分析引擎,同时作为Elasticsearch国产替代方案,支持原生DSL查询语法和SQL查询,确保原业务代码无需调整即可无缝迁移。Easysearch兼容ES7.x现有的SDK和索引存储格......
  • Spring Book Club + java查询数据库 + 百万数据 + 同步Elasticsearch(ES)+ 多线程 + Fei
    @FeignClient(name="bwie-elastic")publicinterfaceEsFeign{@PostMapping("/add")publicResultadd(@RequestBodyArrayList<ResourceInfo>resourceInfo);}@RestControllerpublicclassUserControllerimplementsApplica......
  • 深入探讨:在 Elasticsearch 6.8.18 中使用 Java 创建带有时间戳的索引
    深入探讨:在Elasticsearch6.8.18中使用Java创建带有时间戳的索引在这篇博客中,我们将深入探讨如何在Elasticsearch6.8.18中使用Java创建带有时间戳的索引。我们将使用Maven进行项目管理,并通过代码示例来详细说明每一步操作。希望这篇文章能帮助你更好地理解和使用Elas......
  • Ubuntu 20.04 ARM64安装Docker
    Ubuntu20.04ARM64安装Docker内容参考:https://blog.csdn.net/qq_34253926/article/details/121629068查看系统版本hostnamectl可以看到,我的版本是Ubuntu20.04,我的内核是arm64更新aptsudoapt-getupdate安装基本软件sudoapt-getinstallcurlwgetapt-transport-ht......
  • 自建elasticsearch迁移到阿里云
    迁移工具:elasticsearch-dump 前提:阿里云elasticsearch开启“自动创建索引” 一、安装elasticdump安装node.js。下载安装包。 wgethttps://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.xz解压。 tar-xfnode-v16.18.0-linux-x64.tar......