ES集群部署

1. 安装部署ElasticSearch集群

1.1. 下载并安装

官方网站下载地址:https://www.elastic.co/cn/downloads/elasticsearch

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-x86_64.rpm
$ rpm -ivh elasticsearch-7.14.0-x86_64.rpm

1.2. 修改相关文件夹权限(用户名随意)

出于安全考虑,elasticsearch默认不允许以root账号运行。
通过rpm安装时,其中默认创建elasticsearch用户和用户组.所以,需要把配置文件夹及文件的对应用户组改变即可. 需要注意一下es文件的用户和用户组,并修改为elasticsearch; 在es的服务文件中,将以elasticsearch用户和用户组运行程序。

#创建用户:useradd elasticsearch
#设置密码:passwd elasticsearch
#切换用户:su - elasticsearch
chown -R elasticsearch:elasticsearch /home/elasticsearch #用户目录
chown -R elasticsearch:elasticsearch /etc/elasticsearch #配置文件目录
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/  #es安装目录
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch #运行目录
chown -R elasticsearch:elasticsearch /var/log/elasticsearch #日志目录

1.3. 修改配置文件

配置文件保持三台服务器一样(node.name要改成自己的)

$ grep -vE '#' /etc/elasticsearch/elasticsearch.yml 
cluster.name: myels  # 集群名称
node.name: node-1   # 节点名称

path.data: /var/lib/elasticsearch  # 数据存储路径
path.logs: /var/log/elasticsearch  # ES日志存储路径
network.host: 11.32.16.13   # 监听地址
http.port: 9200     # http端口
discovery.seed_hosts: ["11.32.16.13", "11.32.16.14", "11.32.16.15"] #集群主机列表
cluster.initial_master_nodes: ["11.32.16.13", "11.32.16.14"] #启动全新的集群时需要此参数,再次重新启动时此参数可免。集群初始化master节点

http.cors.enabled: true  #是否开启跨域访问
http.cors.allow-origin: "*" #开启跨域访问后的地址限制,*表示无限制

#开启安全模式,警告需要验证
#xpack.security.enabled: false

这里集群配置是重点,参数seed_hosts和initial_master_nodes.
第一次配置集群时,一定要配置好合适的initial_master_nodes,当所有可选主节点启动后将通过9300端口建立连接并在其中选择主节点.建立连接文件存储在/var/lig/elaticsearch目录中.

  • initial_master_nodes在第一次配置集群之后,最好删掉.不要用该方式添加节点.如果想要添加,可以采用官方API进行临时性/永久性/配置文件的修改,即热修改.文档见important-settings

1.4. 启动ES

$ systemctl enable elasticsearch
$ systemctl start elasticsearch

1.5. 检查ES集群和节点状态

#查看是否启动端口
$ curl -XGET http://11.32.16.13:9200/

#查看节点,查看到主节点13
$ curl -XGET http://11.32.16.13:9200/_cat/nodes?v
ip          heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
11.32.16.14            4          19   0    0.63    0.47     0.52 cdfhilmrstw -      test-env-zj01-control-11e32e16e14
11.32.16.13            2          67   0    0.11    0.09     0.13 cdfhilmrstw *      test-env-zj01-control-11e32e16e13
11.32.16.15            3          28   0    0.16    0.49     0.37 cdfhilmrstw -      test-env-zj01-control-11e32e16e15

这里可以看到,这几点时
#查看集群状态,"status":"green"表示正常运行
$ curl -XGET http://11.32.16.13:9200/_cluster/health
{"cluster_name":"vnet","status":"green","timed_out":false,"number_of_nodes":3,"number_of_data_nodes":3,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}

#放开端口
iptables -I INPUT -p tcp -m multiport --dports 9200 -j ACCEPT

#删除index库
curl -XDELETE localhost:9200/eip-metric-2021-9-6
curl -XDELETE localhost:9200/eip-metric-2021-9-7

2. 安装部署Kibana

官方网站下载地址:[https://www.elastic.co/cn/downloads/kibana}

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-x86_64.rpm
$ rpm -ivh kibana-7.14.0-x86_64.rpm

2.1. 修改配置文件

$ vim config/kibana.yml
# 放开注释,将默认配置改成如下:
server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://11.32.16.13:9200"
kibana.index: ".kibana"

2.2. 启动kibana

$ systemctl enable kibana
$ systemctl start kibana
$ systemctl status kibana

# 查看kibana
$ curl 127.0.0.1:5601/app/kibana

#放开端口
iptables -I INPUT -p tcp -m multiport --dports 5601 -j ACCEPT

3. 问题排查

查看日志排查问题:

less /var/log/elasticsearch/stockQA.log

也可以通过直接运行二进制文件,查看问题;这里使用elasticsearch执行该二进制文件。

su - elasticsearch -c /usr/share/elasticsearch/bin/elasticsearch
su - elasticsearch -c /usr/share/elasticsearch/bin/systemd-entrypoint

3.1. 最大文件描述符和虚拟存储

  • 问题
ERROR: [5] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  • 方法
#切换root用户
vi /etc/security/limits.conf

#在倒数第二行
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
# End of file

vi /etc/sysctl.conf
#添加

vm.max_map_count=655360

#保存后执行
sysctl -p

3.2. 最大线程数

>[1]: max number of threads [1024] for user [es] is too low, increase to at least [4096]
vi /etc/security/limits.d/90-nproc.conf
#修改
*          soft    nproc     1024
#为
*          soft    nproc     4096

3.3. 最大线程数

bin/service/elasticsearch +
console 在前台运行es
start 在后台运行es
stop 停止es
install 使es作为服务在服务器启动时自动启动
remove 取消启动时自动启动

在service目录下有个elasticsearch.conf配置文件,主要是设置一些java运行环境参数,其中比较重要的是下面的

参数:

#es的home路径,不用用默认值就可以
set.default.ES_HOME=<Path to ElasticSearch Home>

#分配给es的最小内存
set.default.ES_MIN_MEM=256

#分配给es的最大内存
set.default.ES_MAX_MEM=1024

# 启动等待超时时间(以秒为单位)
wrapper.startup.timeout=300
# 关闭等待超时时间(以秒为单位)
wrapper.shutdown.timeout=300
# ping超时时间(以秒为单位)
wrapper.ping.timeout=300
## 运行ES服务
#https://blog.csdn.net/choulao8648/article/details/100745709

3.4. ES服务启动超时

超时启动 elasticsearch.service start operation timed out. Terminating

#排除服务问题To tail the journal:
sudo journalctl -f
#排除服务问题To list journal entries for the elasticsearch service:
sudo journalctl --unit elasticsearch

vim /usr/lib/systemd/system/elasticsearch.service
# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
TimeoutStartSec=300

https://www.elastic.co/guide/en/elasticsearch/reference/current/starting-elasticsearch.html


发表评论

邮箱地址不会被公开。 必填项已用*标注