Elasticsearch6.7的安装部署卸载-RPM方式
文章目录
环境准备
操作系统:CentOS 7.X
rpm安装包:官网下载地址 elasticsearch-6.7.2.rpm
JDK: 官网下载地址 JDK1.8
systemctl命令:通过此命令
ps -p 1
,检查自己的Linux系统是否可以使用systemctl指令。
结果如下,说明可以使用systemd指令。
[root@tttt~]# ps -p 1
PID TTY TIME CMD
1 ? 00:00:09 systemd
系统调优
- 修改
/etc/security/limits.conf``````vim /etc/security/limits.conf
增加以下配置elasticsearch nproc 4096elasticsearch nofile 65535elasticsearch soft memlock unlimitedelasticsearch hard memlock unlimited
- 修改
/etc/sysctl.conf
增加以下配置vm.max_map_count=262144vm.swappiness=0vm.overcommit_memory=1vm.zone_reclaim_mode=0net.ipv4.tcp_retries2=5
优化项说明
配置描述elasticsearch nproc 4096确保
elasticsearch
用户可以创建的线程数至少为 4096elasticsearch nofile 65535Elasticsearch 使用大量文件描述符或文件句柄。 用完文件描述符可能是灾难性的,很可能会导致数据丢失。 确保将运行 es 的用户的打开文件描述符数量限制增加到 65536 或更高。elasticsearch soft memlock unlimitedallow user ‘elasticsearch’ mlockallelasticsearch hard memlock unlimitedallow user ‘elasticsearch’ mlockallvm.max_map_count=262144限制虚拟内存vm.swappiness=01、Linux系统上可用的另一个选项是确保sysctl值vm.swappiness设置为1。这减少了内核的交换倾向,在正常情况下不会导致交换,同时仍允许整个系统在紧急情况下交换。
2、1是elsatic官网的建议,但是我们一般都是禁止使用swappiness,所以直接将vm.swappiness设置为0。vm.overcommit_memory=1内存分配控制vm.zone_reclaim_mode=0这个参数可以取值0,1,3,4。
0
表示在local内存不够用的情况下可以去其他的内存区域分配内存;
1
表示在local内存不够用的情况下本地先回收再分配;
3
表示本地回收尽可能先回收文件缓存对象;
4
表示本地回收优先使用swap回收匿名内存。由此可见,将其设为0可以降低swap发生的概率。net.ipv4.tcp_retries2=5TCP重传超时。(此设置适用于所有TCP连接,也会影响与Elasticsearch集群以外的系统的通信可靠性。如果集群通过低质量网络与外部系统通信,则可能需要为
net.ipv4.tcp_retrys2
选择更高的值。)
安装操作
- 将JDK的tar包解压到
/opt/software
路径下,得到jdk1.8.0_131
。将JDK做成软连接到系统目录/usr/bin
中,或者将JDK配置到环境变量中# 采用已解压的JDK 将java注册到/usr/bin[root@demo ~]# ln -s /opt/software/jdk1.8.0_131/bin/java /usr/bin/java
- 执行rpm安装程序
# 执行安装# 将rpm包copy至/usr/local目录[root@demo ~]# mv /opt/elasticsearch-6.7.2.rpm /usr/local/elasticsearch-6.7.2.rpm[root@demo ~]# rpm -ivh /usr/local/elasticsearch-6.7.2.rpm
执行结果如下:[root@demo ~]# rpm -ivh /usr/local/elasticsearch-6.7.2.rpm警告:/usr/local/elasticsearch-6.7.2.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY准备中... ################################# [100%]Creating elasticsearch group... OKCreating elasticsearch user... OK正在升级/安装... 1:elasticsearch-0:6.7.2-1 ################################# [100%]### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemdsudo systemctl daemon-reload sudo systemctl enable elasticsearch.service### You can start elasticsearch service by executingsudo systemctl start elasticsearch.serviceCreated elasticsearch keystore in /etc/elasticsearch
Elasticsearch在安装后不会自动启动。通过systemd启动和停止Elasticsearch。根据elasticsearch-6.7.2.rpm中的配置,默认情况下:- rpm安装之后elasticsearch的程序位置/usr/share/elasticsearch
- rpm安装之后elasticsearch的配置文件的位置/etc/elasticsearch
- rpm安装之后elasticsearch默认日志文件的位置/var/log/elasticsearch
- 注册elasticsearch.service,可以在
/etc/systemd/system/multi-user.target.wants
目录下,查到注册的elasticsearch.service。# 注册elasticsearch.service[root@demo ~]# sudo systemctl daemon-reload[root@demo ~]# sudo systemctl enable elasticsearch.service# 进入 systemd目录 查看elasticsearch服务[root@demo ~]# ll /etc/systemd/system/multi-user.target.wants
- 修改elasticsearch配置1. 新建日志目录和数据目录
# 创建需要更改的路径[root@demo ~]# mkdir -p /opt/software/elasticsearch/data[root@demo ~]# mkdir -p /opt/software/elasticsearch/log
2. elasticsearch.yml配置项# 修改相关配置文件[root@demo ~]# vim /etc/elasticsearch/elasticsearch.yml
单机配置项说明# 集群名称cluster.name: es-cluster-demo# 节点名称node.name: es-cluster-demo-node-1# 节点角色node.master:truenode.data:true# 数据路径path.data: /opt/software/elasticsearch/data# 日志路径path.logs: /opt/software/elasticsearch/log# 内存锁bootstrap.memory_lock:truebootstrap.system_call_filter:false# 绑定地址 本机IPnetwork.host: 192.168.0.1# 服务HTTP与TCP端口,跨域http.port:9600transport.tcp.port:9601http.cors.enabled:truehttp.cors.allow-origin:"*"# 广播发现 网关地址一般是拥有master角色的地址discovery.zen.ping.unicast.hosts:["192.168.0.1"]# 线程优化配置项thread_pool:bulk:size:20queue_size:2000search:size:100queue_size:2000index:size:20queue_size:2000
集群部署需要增加以下配置# 广播发现 网关地址一般是拥有master角色的地址discovery.zen.ping.unicast.hosts:["192.168.0.1","192.168.0.2","192.168.0.3"]# 选主投票需要拥有的最低节点数(拥有master角色的节点),通过配置大多数节点(符合主控条件的节点总数/2+1)来防止 "脑裂"。discovery.zen.minimum_master_nodes:2discovery.zen.fd.connect_on_network_disconnect:truediscovery.zen.ping_timeout: 30sdiscovery.zen.fd.ping_timeout: 120sdiscovery.zen.fd.ping_retries:6discovery.zen.fd.ping_interval: 5sgateway.expected_nodes:3#设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。gateway.expected_master_nodes:3#和上一条基本相同不过这个参数限定了必须是master节点gateway.expected_data_nodes:3#和第一条基本相同不过这个参数限定了必须是data节点gateway.recover_after_time: 5m#这个参数从另一个维度进行了数据恢复的限定,配置等待时间,节点从上线到心跳交流有一个时间过程。如果在限定的时间内指定的node数量未达到,则集群开始等待5-7的条件,如果未设置则开始数据恢复。只要设置了任意一个expected_nodes参数,启用默认时间5m。和expected_nodes配置不冲突,那个配置的条件先达到那个配置就提前生效。gateway.recover_after_nodes:2#只要有足够的节点数量就开始恢复数据。足够就是此参数配置的值gateway.recover_after_master_nodes:2#只要有足够的master节点数量就开始恢复数据。足够就是此参数配置的值gateway.recover_after_data_nodes:2#只要有足够的data节点数量就开始恢复数据。足够就是此参数配置的值
3. jvm.options配置项# 修改内存[root@demo ~]# vim /etc/elasticsearch/jvm.options
配置项说明# 改成机器内存一半的大小 最大32G-Xms4g# 改成机器内存一半的大小 最大32G-Xmx4g
4. 修改系统配置 - 启动elasticsearch服务
[root@demo ~]# sudo systemctl start elasticsearch.service[root@demo ~]# sudo systemctl status elasticsearch.service
如果未对系统进行优化,可能出现以下错误,详见 【错误总结】小节。 - 验证服务1. 查看集群健康状态
[root@demo ~]# curl -XGET 'http://192.168.0.1:9600/_cat/health?v'
2. 查看节点状态[root@demo ~]# curl -XGET 'http://192.168.0.1:9600/_cat/nodes?v&s=name'
错误总结
/opt/software/elasticsearch/log/my-application.log
在日志文件中会出现以下错误
错误一:memlock unlimited
[2022-12-09T19:02:41,412][WARN][o.e.b.JNANatives][node-1]UnabletolockJVMMemory: error=12, reason=Cannot allocate memory
[2022-12-09T19:02:41,416][WARN][o.e.b.JNANatives][node-1]This can result in part of the JVM being swapped out.[2022-12-09T19:02:41,417][WARN][o.e.b.JNANatives][node-1]IncreaseRLIMIT_MEMLOCK, soft limit:65536, hard limit:65536[2022-12-09T19:02:41,417][WARN][o.e.b.JNANatives][node-1]These can be adjusted by modifying /etc/security/limits.conf,for example:
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
解决方式
修改
vim /etc/security/limits.conf
,
* soft nofile 51200
* hard nofile 51200
* soft nproc 65536
* hard nproc 65536
* soft memlock unlimited
* hard memlock unlimited
错误二:memory is not locked
[2022-12-09T19:02:51,467][ERROR][o.e.b.Bootstrap][node-1] node valida
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked
针对锁定内存配置增加以下内容
[root@demo ~]# systemctl edit elasticsearch
添加:
[Service]LimitMEMLOCK=infinity
卸载
# 检查elasticsearch服务状态
systemctl status elasticsearch.service;# 停止elasticsearch服务状态
systemctl stop elasticsearch.service;# 提出elasticsearch服务
systemctl disable elasticsearch;# 重载系统服务
systemctl daemon-reload;# 查询rpm安装的elasticsearchrpm-qa|grep elasticsearch;# rpm卸载elasticsearch,elasticsearch-6.7.2-1.noarch名称 需要根据查询上一步查询结果来rpm-e--nodeps elasticsearch-6.7.2-1.noarch;# 删除残留文件rm-rf /etc/elasticsearch;# 删除elasticsearch自定义文件rm-rf /opt/software/elasticsearch;
补充知识
systemctl 常用指令表格
/bin/systemctl daemon-reload
:重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载。
systemctl 常用指令表格
systemctl 指令说明举例systemctl enable XXX.service使服务自启动systemctl enable elasticsearch.servicesystemctl disable XXX.service使服务不自启动systemctl disable elasticsearch.servicesystemctl status XXX.service检查服务状态,展示详细信息systemctl status elasticsearch.servicesystemctl is-enable XXX.service仅仅显示是否activesystemctl is-enableelasticsearch.servicesystemctl list-units --type=service显示所有已启动服务list-units --type=servicesystemctl start XXX.service启动服务systemctl start elasticsearch.servicesystemctl stop XXX.service停止服务systemctl stop elasticsearch.servicesystemctl restart XXX.service重启服务systemctl restart elasticsearch.servicesystemctl reload XXX.service服务重新加载配置文件systemctl reload elasticsearch.service
RPM 包采用系统默认的安装路径
rpm安装不建议自定义路径
路径说明/usr/bin普通可执行程序文件目录/usr/sbin服务器执行程序文件和管理程序文件目录/etc应用程序配置文件(安装目录)/var/log日志文件目录/usr/share/doc应用程序文档文件目录/usr/share/man应用程序手册页文件目录/usr/lib程序使用的动态函数库目录
版权归原作者 顧棟 所有, 如有侵权,请联系我们删除。