CentOS7下Elasticsearch集群部署记录
Posted 散尽浮华
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7下Elasticsearch集群部署记录相关的知识,希望对你有一定的参考价值。
Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard的方式保证数据安全,并且提供自动resharding的功能,github等大型的站点也都采用Elasticsearch作为其搜索服务。废话在此就不多赘述了,下面记录下CentOS7下Elasticsearch集群部署过程:
之前在三台服务器部署Elasticsearch集群: qd-vpc-op-es01 101.119.92.247 qd-vpc-op-es02 101.119.92.249 qd-vpc-op-es03 101.119.92.254 下面再追加一台es04机器到集群中,操作如下: qd-vpc-op-es04 101.119.92.16 1)安装jdk和elasticsearch jdk-8u5-linux-x64.rpm下载地址: https://pan.baidu.com/s/1bpxtX5X (提取密码:df6s) elasticsearch-5.5.0.rpm下载地址: https://pan.baidu.com/s/1mibwWeG (提取密码:vtm2) [[email protected] ~]# cd tools/ [[email protected] tools]# ls elasticsearch-5.5.0.rpm jdk-8u5-linux-x64.rpm [[email protected] tools]# rpm -ivh elasticsearch-5.5.0.rpm [[email protected] tools]# rpm -ivh jdk-8u5-linux-x64.rpm [[email protected] tools]# java -version java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode) 2)配置elasticsearch [[email protected] ~]# cd /etc/elasticsearch/ [[email protected] elasticsearch]# ls elasticsearch.yml elasticsearch.yml.bak jvm.options log4j2.properties nohup.out scripts [[email protected] elasticsearch]# cat elasticsearch.yml|grep -v "#" //集群中每个节点的配置内容都基本一致 cluster.name: image_search //集群名称 node.name: image_search_node_4 //集群中本节点的节点名称,这里定义即可 path.data: /data/es/data //服务目录路径 path.logs: /data/es/logs //服务日志路径 discovery.zen.ping.unicast.hosts: ["101.119.92.247","101.119.92.249","101.119.92.254","10.111.233.16"] //这里是各节点的ip地址 network.host: 0.0.0.0 //服务绑定的网络地址 默认elasticsearch服务端口时9200 [[email protected] elasticsearch]# cat elasticsearch.yml|grep 9200 #http.port: 9200 [[email protected] elasticsearch]# systemctl start elasticsearch.service [[email protected] elasticsearch]# systemctl restart elasticsearch.service [[email protected] elasticsearch]# systemctl status elasticsearch.service [[email protected] elasticsearch]# ps -ef|grep elasticsearch [[email protected] elasticsearch]# lsof -i:9200 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 10998 elasticsearch 320u IPv4 39255 0t0 TCP *:wap-wsp (LISTEN) 检查elasticsearch的健康状态 [[email protected] elasticsearch]# curl ‘localhost:9200/_cat/indices?v‘ health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open video_filter Bx7He6ZtTEWuRBqXYC6gRw 5 1 458013 0 4.1gb 2gb green open recommend_history_image svYo_Do4SM6wUiv6taUWug 5 1 2865902 0 24.9gb 12.4gb green open recommend_history_gif rhN3MDN2TbuYILqEDksQSg 5 1 265731 0 2.4gb 1.2gb green open post_images TMsMsMEoR5Sdb7UEQJsR5Q 5 1 48724932 0 407.3gb 203.9gb green open review_images_v2 qzqnknpgTniU4rCsvXzs0w 5 1 50375955 0 61.6gb 30.9gb green open review_images rWC4WlfMS8aGe-GOkTauZg 5 1 51810877 0 439.3gb 219.7gb green open sensitive_images KxSrjvXdSz-y8YcqwBMsZA 5 1 13393 0 128.1mb 64mb green open post_images_v2 FDphBV4-QuKVoD4_G3vRtA 5 1 49340491 0 55.8gb 27.8gb 从上面的命令结果中可以看出,本节点已经成功加入到名为image_search的elasticsearch集群中了,green表示节点状态很健康,数据也已经在同步中了。 3)在代码中更新elasticsearch的配置 通知开发同事,在代码中增加新增elasticsearch节点的配置,上线更新后,到新节点上查看elasticsearch日志是否有信息写入: [[email protected] ~]# cd /data/es/logs/ [[email protected] ~]# chown -R elasticsearch.elasticsearch /data/es [[email protected] logs]# ls image_search_deprecation.log image_search_index_indexing_slowlog.log image_search_index_search_slowlog.log image_search.log ---------------------------------------------------------------------------------------------------------------- 注意: 如果往elasticsearch集群中新增一个节点,做法如下: 1)在新节点上安装jdk和elasticsearch服务,配置elasticsearch.yml文件了,启动elasticsearch服务 2)在集群中其他节点上配置elasticsearch.yml文件,不需要启动elasticsearch服务 3)在新节点上执行curl ‘localhost:9200/_cat/indices?v‘命令,查看健康状态以及数据同步情况 4)在代码中增加新增elasticsearch节点的配置,上线更新后,查看新增节点的elasticsearch日志是否有信息写入 ---------------------------------------------------------------------------------------------------------------- 最后顺便贴一下其他三个节点的elasticsearch.yml文件配置: [[email protected] ~]# cat /etc/elasticsearch/elasticsearch.yml |grep -v "#" cluster.name: image_search node.name: image_search_node_1 path.data: /data/es/data path.logs: /data/es/logs discovery.zen.ping.unicast.hosts: ["10.111.233.16","101.119.92.247","101.119.92.249","101.119.92.254"] network.host: 0.0.0.0 [[email protected] ~]# cat /etc/elasticsearch/elasticsearch.yml |grep -v "#" cluster.name: image_search node.name: image_search_node_2 path.data: /data/es/data path.logs: /data/es/logs discovery.zen.ping.unicast.hosts: ["10.111.233.16","101.119.92.247","101.119.92.249","101.119.92.254"] network.host: 0.0.0.0 [[email protected] ~]# cat /etc/elasticsearch/elasticsearch.yml|grep -v "#" cluster.name: image_search node.name: image_search_node_3 path.data: /data/es/data path.logs: /data/es/logs discovery.zen.ping.unicast.hosts: ["101.119.92.247","101.119.92.249","101.119.92.254","10.111.233.16"] network.host: 0.0.0.0 ---------------------------------------------------------------------------------------------------------------- 如果关闭某个节点或将其从集群中提出来,需要提前通知该节点停止同步数据(迁移的时候会用到): # curl -XPUT ‘localhost:9200/_cluster/settings‘ -d ‘{"transient" : {"cluster.routing.allocation.enable" : "none”}}’
以上是关于CentOS7下Elasticsearch集群部署记录的主要内容,如果未能解决你的问题,请参考以下文章
Centos7.4 安装elasticsearch6.1.3集群部署
CentOS7 部署 ElasticSearch7.0.1 集群