【ELK】-2 ELK的搭建
文章目录ELK 搭建笔记一、部署架构二、准备工作每个节点都需要执行三、Elasticsearch 集群部署3.1 环境准备3.2 安装 Elasticsearch3.3 修改主配置文件可选配置3.4 JVM 堆内存配置3.5 分发到其他节点3.6 性能调优三台节点都需要执行① 文件描述符 进程限制② 虚拟内存优化mmap③ 禁止交换空间3.7 配置 Systemd 服务3.8 启动 Elasticsearch3.9 验证集群ELK 搭建笔记一、部署架构![[Pasted image 20260606162924.png]]节点配置IP部署组件node12C/4G192.168.80.10Elasticsearchnode22C/4G192.168.80.11Elasticsearchnode32C/4G192.168.80.12Elasticsearchweb12C/4G192.168.80.13Logstash Kibana Nginxweb22C/4G192.168.80.14Filebeat Nginx二、准备工作每个节点都需要执行# 关闭防火墙systemctl stop ufw systemctl disable ufw# 修改主机名hostnamectl set-hostname node1# node2 / node3 / web1 按需修改hostnamectl set-hostname node2 hostnamectl set-hostname node3 hostnamectl set-hostname web1# 时间同步 同步到硬件时钟timedatectl set-ntptruetimedatectl set-timezone Asia/Shanghai timedatectl hwclock--systohchwclock--show# 设置系统语言为中文aptinstall-ylanguage-pack-zh-hans lrzsz localectl set-localeLANGzh_CN.utf8 localectl三、Elasticsearch 集群部署3.1 环境准备软件包下载地址https://www.elastic.co/cn/downloads/past-releases#elasticsearchJDK 说明Elasticsearch 7.x 之前需要单独安装 JDK7.x 之后内置了 JDK 环境可装可不装。3.2 安装 Elasticsearch# 解压安装包tar-zxvfelasticsearch-7.17.27-linux-x86_64.tar.gz-C/usr/local/cd/usr/local/mvelasticsearch-7.17.27 elasticsearch# 创建数据目录mkdir/usr/local/elasticsearch/data3.3 修改主配置文件cd/usr/local/elasticsearch/configcpelasticsearch.yml elasticsearch.yml.bakvimelasticsearch.yml# --17-- 集群名称cluster.name:my-elk-cluster# --23-- 节点名称node1 / node2 / node3node.name:node1# --33-- 数据存放路径path.data:/usr/local/elasticsearch/data# --37-- 日志存放路径path.logs:/usr/local/elasticsearch/logs# --43-- 锁定内存避免使用 swap 提高性能bootstrap.memory_lock:true# --56-- 监听地址0.0.0.0 代表所有地址network.host:0.0.0.0# --61-- 端口配置http.port:9200# ES 对外访问接口transport.tcp.port:9300# 集群内部通信接口# --71-- 服务发现的节点列表discovery.seed_hosts:[192.168.80.10:9300,192.168.80.11:9300,192.168.80.12:9300]# --75-- 候选 master 节点列表对应 node.namecluster.initial_master_nodes:[node1,node2,node3]可选配置node.master:true# 是否 master 节点node.data:true# 是否 data 节点discovery.zen.minimum_master_nodes:2# 避免脑裂最少为 (节点数/2)1transport.tcp.compress:true# 压缩 TCP 传输数据http.cors.enabled:true# 允许跨域http.cors.allow-origin:*# 允许所有域名节点类型说明ES 集群节点分为 master主节点、data数据节点、client客户端节点。默认情况下三合一混合节点生产环境建议分离。3.4 JVM 堆内存配置cd/usr/local/elasticsearch/configvimjvm.options-Xms2g -Xmx2g # Xms 和 Xmx 设置相同值一般不超过系统内存的 50%不超过 30G3.5 分发到其他节点# 把整个 elasticsearch 目录复制到其他两个节点scp-r/usr/local/elasticsearch node2:/usr/local/scp-r/usr/local/elasticsearch node3:/usr/local/# 到 node2、node3 上修改节点名称# vim /usr/local/elasticsearch/config/elasticsearch.yml# node.name: node2 # node3 上改为 node33.6 性能调优三台节点都需要执行① 文件描述符 进程限制vim/etc/security/limits.conf* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 * soft memlock unlimited * hard memlock unlimitedvim/etc/systemd/system.confDefaultLimitNOFILE65535 DefaultLimitNPROC65535 DefaultLimitMEMLOCKinfinity字段说明nofile— 进程可打开的最大文件数nproc— 用户可创建的最大进程数memlock— 进程可锁定在 RAM 中的最大内存② 虚拟内存优化mmapElasticsearch 通过文件映射mmap读取磁盘文件比read系统调用少一次内存拷贝零拷贝技术。# 一个进程可拥有的最大内存映射区域数# 参考值2G→2621444G→41943048G→8388608echovm.max_map_count 262144/etc/sysctl.confsysctl-psysctl-a|grepvm.max_map_count③ 禁止交换空间echovm.swappiness 1/etc/sysctl.conf# 仅在万不得已时使用交换sysctl-pswapoff-ased-ris/.*swap.*/#//etc/fstab3.7 配置 Systemd 服务vim/usr/lib/systemd/system/elasticsearch.service[Unit] Descriptionelasticsearch Afternetwork.target [Service] Typeforking Userelasticsearch ExecStart/usr/local/elasticsearch/bin/elasticsearch -d -p /usr/local/elasticsearch/elasticsearch.pid PrivateTmptrue LimitNOFILE65535 LimitNPROC65535 LimitASinfinity LimitFSIZEinfinity TimeoutStopSec0 KillSignalSIGTERM KillModeprocess SendSIGKILLno SuccessExitStatus143 [Install] WantedBymulti-user.target3.8 启动 Elasticsearch# 创建专用用户并授权useraddelasticsearchechoelasticsearch:123456|chpasswdchown-Relasticsearch:elasticsearch /usr/local/elasticsearch# 启动服务systemctl daemon-reload systemctl start elasticsearch.service systemctlenableelasticsearch.service ss-lntp|grep92003.9 验证集群# 查看节点信息curlhttp://192.168.80.10:9200# 查看集群健康状态curlhttp://192.168.80.10:9200/_cluster/health?pretty集群健康状态说明green— 所有索引分片均已分配 ✅yellow— 主分片已分配但存在未分配的副本分片 ⚠️red— 存在未分配的主分片部分数据不可用 ❌ES 7.0 之前默认 5 个分片7.0 之后默认 1 个分片。也可以用浏览器访问http://192.168.80.10:9200/_cluster/health?pretty查看看到status值为green即表示运行正常。在 Kibana → Dev Tools 中点击 New → URL 填入http://192.168.80.10:9200如果集群健康值为 green 绿色代表集群很健康。