ELK
ELK---->>>Elasticsearch7集群部署
下载二进制包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
部署
1 在每个节点创建用户 ela
useradd ela
2 在每个节点上解压到指定目录
tar -xf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /usr/local/
3 在每个节点上修改安装主目录的属主和属组
chown -R ela.ela /usr/local/elasticsearch-7.10.0
4 在每个节点上设置系统内核参数
设置内存映射
sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p
还需要设置关于这个进程可以打开的文件描述符数量
[root@prod ~]# tail /etc/security/limits.conf
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
-
编辑配置文件:
/usr/local/elasticsearch-7.10.0/config/elasticsearch.yml
- ela1节点
cluster.name: elk #集群的名字
node.name: ela1 #节点的名字
node.data: true
network.host: 0.0.0.0 #监听的地址
http.port: 9200 #开放的端口
discovery.seed_hosts: #下面是集群的ip 三种写法
- ela1
- 192.168.122.106:9300
- 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"] #节点的名字
- ela2节点
cluster.name: elk #集群的名字
node.name: ela2 #节点的名字
node.data: true
network.host: 0.0.0.0 #监听的地址
http.port: 9200 #开放的端口
discovery.seed_hosts: #下面是集群的ip 三种写法
- ela1
- 192.168.122.106:9300
- 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"] #节点的名字
- ela3节点
cluster.name: elk #集群的名字
node.name: ela3 #节点的名字
node.data: true
network.host: 0.0.0.0 #监听的地址
http.port: 9200 #开放的端口
discovery.seed_hosts: #下面是集群的ip 三种写法
- ela1
- 192.168.122.106:9300
- 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"] #节点的名字
参数解释:
cluster.name 集群名称,各节点配成相同的集群名称。
node.name 节点名称,各节点配置不同。
node.data 指示节点是否为数据节点。数据节点包含并管理索引的一部分。
network.host 绑定节点IP。
http.port 监听端口。
path.data 数据存储目录。
path.logs 日志存储目录。
discovery.seed_hosts 指定集群成员,用于主动发现他们,所有成员都要写进来,包括自己,每个节点中应该写一样的信息。
cluster.initial_master_nodes 指定有资格成为 master 的节点
http.cors.enabled 用于允许head插件访问ES。
http.cors.allow-origin 允许的源地址。
注意事项:
当您为提供自定义设置时 network.host,Elasticsearch会假设您正在从开发模式过渡到生产模式,并将许多系统启动检查从警告升级到异常。
cluster.initial_master_nodes 中的节点名称需要和 node.name 的名称一致。
启动集群
在每个节点上启动 elasticsearch 进程 切换到普通用户 ela
su - ela
执行如下命令:
cd /usr/local/elasticsearch-7.10.0
./bin/elasticsearch -d -p /tmp/elasticsearch.pid
参数
-d
后台运行
-p
指定一个文件,用于存放进程的 pid
查看日志:
日志消息可以在 /usr/local/elasticsearch-7.10.0/logs 目录中找到
[root@ela1 logs]# ls elk.log
elk.log
查看集群健康状态
curl -X GET "localhost:9200/_cat/health?v"
[elastic@ela3 elasticsearch-7.10.0]$ curl -X GET "localhost:9200/_cat/health?v"
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1609065251 10:34:11 elk green 3 3 0 0 0 0 0 0 - 100.0%
三种不同状态的含义
- 黄色 如果您仅运行单个Elasticsearch实例,则集群状态将保持黄色。单
节点群集具有完整的功能,但是无法将数据复制到另一个节点以提供弹性。 - 绿色 副本分片必须可用,群集状态为绿色。
- 红色 如果群集状态为红色,则某些数据不可用。
查看集群节点信息
[elastic@ela3 elasticsearch-7.10.0]$ curl -X GET "localhost:9200/_cat/nodes?v"
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.66.66.102 59 93 0 0.00 0.01 0.05 cdhilmrstw - ela2
192.66.66.103 65 94 0 0.00 0.02 0.06 cdhilmrstw - ela3
192.66.66.104 49 94 0 0.07 0.05 0.05 cdhilmrstw * ela1
设置java占用堆大小
vim /usr/local/elasticsearch-7.10.0/config/jvm.options
Xms(最小堆大小 )和 Xmx(最大堆大小)的大小来设置 整个堆 。这两个设置必须彼此相等。
可以把1g改成512m
排错:
- 如果不小心用root用户启动了 会启动失败
# 找到进程
[ela@ela1 elasticsearch-7.10.0]$ jdk/bin/jps
8244 Jps
7526 Elasticsearch
# 杀死进程
[ela@ela1 elasticsearch-7.10.0]$ kill -9 7526
# 删除数据目录中的所有文件
[ela@ela1 elasticsearch-7.10.0]$ rm -rf data/*
# 删除 keystore 文件
[ela@ela1 elasticsearch-7.10.0]$ rm -rf config/elasticsearch.keystore
# 重新启动进程
[ela@ela1 elasticsearch-7.10.0]$ bin/elasticsearch -d -p /tmp/elk.pid
用docker-compose启动集群
docker-compose.yml 文件
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
运行集群
首先需要设置一下系统内核参数
sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p
1
2
还需要设置关于这个进程可以打开的文件描述符数量
[root@prod ~]# tail /etc/security/limits.conf
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
进入含有 docker-compose.yml 文件的目录,之后执行如下命令启动集群
docker-compose up -d
查看集群:
curl -X GET "localhost:9200/_cat/nodes?v&pretty"
hard nproc 0
#@student - maxlogins 4
End of file
- soft nofile 65536
- hard nofile 131072
- soft nproc 2048
- hard nproc 4096
进入含有 docker-compose.yml 文件的目录,之后执行如下命令启动集群
```bash
docker-compose up -d
查看集群:
curl -X GET "localhost:9200/_cat/nodes?v&pretty"