Elasticsearch集群部署

服务器

安装软件 主机名 IP地址 系统版本 配置
Elasticsearch Elk 10.3.145.14 centos7.5.1804 2核4G
Elasticsearch Es1 10.3.145.57 centos7.5.1804 2核3G
Elasticsearch Es2 10.3.145.57 centos7.5.1804 2核3G
  • 软件版本:elasticsearch-7.13.2.tar.gz

  • 示例节点:10.3.145.14

1、安装配置jdk
复制代码
可以自行安装,es安装包中自带了jdk
2、安装配置ES
(1)创建运行ES的普通用户
cpp 复制代码
[root@elk ~]# useradd es
[root@elk ~]# echo "123456" | passwd --stdin "es"
(2)安装配置ES
cpp 复制代码
[root@elk ~]# tar zxvf /usr/local/package/elasticsearch-7.13.2-linux-x86_64.tar.gz -C /usr/local/
[root@elk ~]# vim /usr/local/es/config/elasticsearch.yml
cluster.name: bjbpe01-elk
cluster.initial_master_nodes: ["192.168.249.156","192.168.249.132","192.168.249.133"] # 单节点模式这里的地址只填写本机地址
node.name: elk01
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
# 单节点模式下,将discovery开头的行注释
discovery.seed_hosts: ["192.168.249.132", "192.168.249.133"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"
​
​
# 由于我们的笔记本性能有限,如果要使用单节点多实例的话,添加在原有配置中添加
node.max_local_storage_nodes:  这个配置限制了单节点上可以开启的ES存储实例的个数

配置项含义:

复制代码
cluster.name    集群名称,各节点配成相同的集群名称。
cluster.initial_master_nodes 集群ip,默认为空,如果为空则加入现有集群,第一次需配置
node.name       节点名称,各节点配置不同。
node.master     指示某个节点是否符合成为主节点的条件。
node.data       指示节点是否为数据节点。数据节点包含并管理索引的一部分。
path.data       数据存储目录。
path.logs       日志存储目录。
bootstrap.memory_lock       内存锁定,是否禁用交换,测试环境建议改为false。
bootstrap.system_call_filter    系统调用过滤器。
network.host    绑定节点IP。
http.port       rest api端口。
discovery.seed_hosts    提供其他 Elasticsearch 服务节点的单点广播发现功能,这里填写除了本机的其他ip
discovery.zen.minimum_master_nodes  集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。
discovery.zen.ping_timeout      节点在发现过程中的等待时间。
discovery.zen.fd.ping_retries        节点发现重试次数。
http.cors.enabled               是否允许跨源 REST 请求,用于允许head插件访问ES。
http.cors.allow-origin              允许的源地址。
(3)设置JVM堆大小 #7.0默认为4G
cpp 复制代码
[root@elk ~]# sed -i 's/## -Xms4g/-Xms4g/' /usr/local/es/config/jvm.options  
[root@elk ~]# sed -i 's/## -Xmx4g/-Xmx4g/' /usr/local/es/config/jvm.options

注意: 确保堆内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存大小。 如果系统内存足够大,将堆内存最大和最小值设置为31G,因为有一个32G性能瓶颈问题。 堆内存大小不要超过系统内存的50%

(4)创建ES数据及日志存储目录
cpp 复制代码
[root@elk ~]# mkdir -p /data/elasticsearch/data       (/data/elasticsearch)
[root@elk ~]# mkdir -p /data/elasticsearch/logs       (/log/elasticsearch)
(5)修改安装目录及存储目录权限
cs 复制代码
[root@elk ~]# chown -R es.es /data/elasticsearch
[root@elk ~]# chown -R es.es /usr/local/es
3、系统优化
(1)增加最大文件打开数

永久生效方法:

cpp 复制代码
 [root@elk ~]# echo "* soft nofile 65536" >> /etc/security/limits.conf
(2)增加最大进程数
cpp 复制代码
[root@elk ~]# echo "* soft nproc 65536" >> /etc/security/limits.conf
复制代码
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
更多的参数调整可以直接用这个
(3)增加最大内存映射数
cpp 复制代码
[root@elk ~]# echo "vm.max_map_count=262144" >> /etc/sysctl.conf
[root@elk ~]# sysctl -p

启动如果报下列错误

复制代码
memory locking requested for elasticsearch process but memory is not locked
elasticsearch.yml文件
bootstrap.memory_lock : false
/etc/sysctl.conf文件
vm.swappiness=0

错误:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

意思是elasticsearch用户拥有的客串建文件描述的权限太低,知道需要65536个

解决:

切换到root用户下面,

vim   /etc/security/limits.conf

在最后添加
* hard nofile 65536
* hard nofile 65536
重新启动elasticsearch,还是无效?
必须重新登录启动elasticsearch的账户才可以,例如我的账户名是elasticsearch,退出重新登录。
另外*也可以换为启动elasticsearch的账户也可以,* 代表所有,其实比较不合适

启动还会遇到另外一个问题,就是
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
意思是:elasticsearch用户拥有的内存权限太小了,至少需要262114。这个比较简单,也不需要重启,直接执行
sysctl -w vm.max_map_count=262144
就可以了
4、启动ES
cpp 复制代码
[root@elk ~]# su - es -c "cd /usr/local/es && nohup bin/elasticsearch &"

测试:浏览器访问http://10.3.145.14:9200

相关推荐
笨鸟贤妃1 小时前
离线安装(升级)Jenkins和pipeline、multijob等插件【无痛版】
pipeline·jenkins·jenkins插件
哇哈哈&8 小时前
gcc9.2的离线安装,支持gcc++19及以上版本
linux·运维·服务器
一条咸鱼¥¥¥9 小时前
【运维经验】使用QQ邮箱SMTP服务器设置ssms计划任务完成时邮件发送
运维·服务器·经验分享·sql·sqlserver
【上下求索】9 小时前
学习笔记095——Ubuntu 安装 lrzsz 服务?
运维·笔记·学习·ubuntu
Caster_Z11 小时前
WinServer安装VM虚拟机运行Linux-(失败,云服务器不支持虚拟化)
linux·运维·服务器
小小测试开发11 小时前
提升WebUI自动化效率与性能:从脚本到架构的全链路优化指南
运维·架构·自动化
GeminiJM11 小时前
Elasticsearch minimum_should_match 参数详解
大数据·elasticsearch·jenkins
The star"'12 小时前
mysql(1-3)
运维·mysql·云计算
model200512 小时前
Alibaba linux 3安装LAMP(5)
linux·运维·服务器
weixin_3077791313 小时前
Jenkins中的Jakarta Activation API插件:功能、使用与最佳实践
运维·开发语言·ci/cd·自动化·jenkins