Elasticsearch
1)elasticsearch 部署:
https://github.com/elastic/elasticsearch #基于 java 开发
| 主机名 | 地址 | 磁盘规格 | 挂载目录 |
|---|---|---|---|
| es1 | 192.168.139.31 | sdb 50G | /data |
| es2 | 192.168.139.32 | sdb 50G | /data |
| es3 | 192.168.139.33 | sdb50G | /data |
1.1)环境初始化:
最小化安装 Centos 7.x/Ubuntu x86_64 操作系统的虚拟机,vcpu 2,内存 4G 或更多,操作系统盘 50G
1.1.1)主机名和磁盘挂载
[root@es1 ~]# hostname
es1
[root@es2 ~]# hostname
es2
[root@es3 ~]# hostname
es3
"磁盘挂载三个主机都要做,我这里演示一个"
[root@es1 ~]# mkfs.xfs /dev/sdb
`注意每个主机的磁盘uuid都不一样`
[root@es1 ~]# blkid /dev/sdb
/dev/sdb: UUID="eee44259-492b-4f68-9c41-ca41ba7f2c58" TYPE="xfs"
[root@es1 ~]# mkdir /data
`注意每个主机的磁盘uuid都不一样,按相应的填写`
[root@es1 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Aug 9 22:40:59 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos_nginx01-root / xfs defaults 0 0
UUID=40724ad6-bcd4-40d5-b82b-010cf9fcf004 /boot xfs defaults 0 0
#/dev/mapper/centos_nginx01-swap swap swap defaults 0 0
UUID=eee44259-492b-4f68-9c41-ca41ba7f2c58 /data xfs defaults 0 0
[root@es1 ~]# mount -a
1.1.2)防火墙和 selinux
三个主机都要做,我这里演示一个
关闭防所有服务器的火墙和 selinux,包括 web 服务器、redis 和 logstash 服务器的防火墙和 selinux 全部关闭,此步骤是为了避免出现因为防火墙策略或 selinux 安全权限引起的各种未知问题 ,
[root@es1 ~]# systemctl stop firewalld
[root@es1 ~]# systemctl disable firewalld
[root@es1 ~]# setenforce 0
[root@es1 ~]# sed -i '7s#enforcing#disabled#g' /etc/selinux/config
1.1.3 )各服务器配置本地域名解析
三个主机都要做,我这里演示一个
[root@es1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.139.31 es1
192.168.139.32 es2
192.168.139.33 es3
1.1.4)设置 epel 源、安装基本操作命令并同步时间
三个主机都要做,我这里演示一个
[root@es1 ~]# yum install -y wget
[root@es1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@es1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@es1 ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump wget ntpdate
[root@es1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
1.1.5)打开文件数优化
[root@es1 ~]# cat >> /etc/security/limits.conf << EOF
* soft nofile 655350
* hard nofile 655350
* soft nproc 655350
* hard nproc 655350
* soft core unlimited
* hard core unlimited
EOF
[root@es1 ~]# reboot
1.2 )安装 elasticsearch
版本选择: 0.x 1.x 2.x 5.x 6.x 7.x
我安装的elasticsearch 7.12.1 带jdk的所有不用再装jdk环境
如果安装带jdk的elasticsearch 请参照 elasticsearch 对应的jdk版本:https://www.elastic.co/cn/support/matrix#matrix_jvm
1.3)网上下载 elasticsearch 并安装
下载地址:https://www.elastic.co/cn/downloads/elasticsearch
清华源地址:https://mirrors.tuna.tsinghua.edu.cn/elasticstack/
1.3.1)三台服务器分别安装 elasticsearch:
三个主机都要做,我这里演示一个
[root@es1 ~]# cd /usr/local/src/
`上传rpm包`
[root@es1 src]# ll
total 318004
-rw-r--r-- 1 root root 325635185 Oct 11 2021 elasticsearch-7.12.1-x86_64.rpm
[root@es1 src]# yum -y localinstall elasticsearch-7.12.1-x86_64.rpm
1.3.2)修改各 elasticsearch 服务器的服务配置文件
`es1的配置`
[root@es1 ~]# grep ^[a-Z] /etc/elasticsearch/elasticsearch.yml
cluster.name: stj-cluster #这里三个主机必须保持一样
node.name: node1 #这里三个主机必须不一样
path.data: /data/elasticsearch/esdata
path.logs: /data/elasticsearch/eslog
bootstrap.memory_lock: true
network.host: 192.168.139.31
http.port: 9200
discovery.seed_hosts: ["192.168.139.31", "192.168.139.32","192.168.139.33"]
cluster.initial_master_nodes: ["192.168.139.31", "192.168.139.32","192.168.139.33"]
action.destructive_requires_name: true
`es2的配置`
[root@es2 ~]# grep ^[a-Z] /etc/elasticsearch/elasticsearch.yml
cluster.name: stj-cluster #这里三个主机必须保持一样
node.name: node2 #这里三个主机必须不一样
path.data: /data/elasticsearch/esdata
path.logs: /data/elasticsearch/eslog
bootstrap.memory_lock: true
network.host: 192.168.139.32
http.port: 9200
discovery.seed_hosts: ["192.168.139.31", "192.168.139.32","192.168.139.33"]
cluster.initial_master_nodes: ["192.168.139.31", "192.168.139.32","192.168.139.33"]
action.destructive_requires_name: true
`es3的配置`
[root@es3 ~]# grep ^[a-Z] /etc/elasticsearch/elasticsearch.yml
cluster.name: stj-cluster #这里三个主机必须保持一样
node.name: node3 #这里三个主机必须不一样
path.data: /data/elasticsearch/esdata
path.logs: /data/elasticsearch/eslog
bootstrap.memory_lock: true
network.host: 192.168.139.33
http.port: 9200
discovery.seed_hosts: ["192.168.139.31", "192.168.139.32","192.168.139.33"]
cluster.initial_master_nodes: ["192.168.139.31", "192.168.139.32","192.168.139.33"]
action.destructive_requires_name: true
1.3.2.1)配置文件参数解释
cluster.name: ELK-Cluster #ELK 的集群名称,名称相同即属于是同一个集群
node.name: elk-node1 #当前节点在集群内的节点名称
path.data: /elk/data #ES 数据保存目录
path.logs: /elk/logs #ES 日志保存目
bootstrap.memory_lock: true #服务启动的时候锁定足够的内存,防止数据写入swap
network.host: 0.0.0.0 #监听 IP
http.port: 9200 #监听端口
#集群中 node 节点发现列表
discovery.seed_hosts: ["192.168.139.31", "192.168.139.32","192.168.139.33"]
#集群初始化那些节点可以被选举为 master
cluster.initial_master_nodes: ["192.168.139.31", "192.168.139.32","192.168.139.33"]
#2.x 5.x 6.x 配置节点发现列表
discovery.zen.ping.unicast.hosts: ["192.168.15.11", "192.168.15.12"]
#一个集群中的 N 个节点启动后,才允许进行数据恢复处理,默认是 1
gateway.recover_after_nodes: 2
# 设置是否可以通过正则或者_all 删除或者关闭索引库,默认 true 表示必须需要显式指定索引库名称,生产环境建议设置为 true,删除索引库的时候必须指定,否则可能会误删索引库中的索引库。
action.destructive_requires_name: true
1.3.3)修改内存限制,并同步配置文件
三个主机都要做,我这里演示一个
[root@es1 ~]# vim /etc/elasticsearch/jvm.options
........
-Xms1g #31行
-Xmx1g #32行
........
[root@es1 ~]# vim /usr/lib/systemd/system/elasticsearch.service
.........
LimitMEMLOCK=infinity #无限制使用内存
.........
[root@es1 ~]# systemctl daemon-reload
1.3.4)目录权限更改
三个主机都要做,我这里演示一个
[root@es1 ~]# chown -R elasticsearch:elasticsearch /data/
[root@es1 ~]# ll /data/ -d
drwxr-xr-x 2 elasticsearch elasticsearch 6 Nov 11 12:14 /data/
1.3.5)启动 elasticsearch 服务并验证
三个主机都要做,我这里演示一个
[root@es1 ~]# systemctl enable --now elasticsearch.service
[root@es1 ~]# tail -f /data/elasticsearch/eslog/stj-cluster.log
1.3.6)通过浏览器访问 elasticsearch 服务端口: