当前位置: > > > Elasticsearch - 集群安装部署教程

Elasticsearch - 集群安装部署教程

    ElasticSearch 是一个基于 Lucene 的分布式、高扩展、高实时的搜索与数据分析引擎。我之前写过文章演示如何在 CentOS 系统下安装部署单机版的 Elasticsearch 服务(点击查看),下面我接着演示如何使用分布式集群的方式进行 Elasticsearch 服务部署。

1,准备工作

(1)首先我们准备三台 linux 服务器进行集群搭建,具体信息如下:
主机名 内网 IP 外网 IP
node1 172.31.4.99 13.211.44.248
node2 172.31.3.72 3.106.170.197
node3 172.31.6.103 3.25.88.196

(2)为方便后续 Kafka 集群的配置,我们在三台服务上均执行如下命令编辑的 host 文件,使得可以通过主机名相互访问:
echo '
172.31.4.99 node1
172.31.3.72 node2
172.31.6.103 node3' >> /etc/hosts

2,创建新用户

(1)因为 Elasticsearch 目前不支持使用 root 用户启动,因此我们需要在三台服务器上都创建一个普通用户。首先我们执行如下命令创建一个名为 es 的新用户:
useradd -d /home/es -m es

(2)接着执行如下命令为这个新用户添加密码(需要输入两次密码,如果密码位数太短比如 123,会提示无效,可以不管它):
passwd es

3,修改 Linux 系统参数

(1)因为 ElasticsearchLinux 的最大文件描述符及最大虚拟内存有一定要求,所以需要三台服务器的相关修改,否则 Elasticsearch 无法正常启动。

(2)首先是修改最大文件描述符:
vi /etc/security/limits.conf
  • 修改或新增文件中的如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

(3)接着修改最大虚拟内存:
vi /etc/sysctl.conf
  • 修改或新增文件中如下内容:
vm.max_map_count=262144

(4)最后重启三台服务器让前面修改的参数生效:
reboot -h now

4,下载并解压 Elasticsearch 安装包

(1)我们访问 Elasticsearch 的官网获取需要的版本安装包(点击访问),然后将其下载到三台服务器上:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.0-linux-x86_64.tar.gz

(2)接着执行如下命令解压下载下来的压缩:
tar -zxvf elasticsearch-8.12.0-linux-x86_64.tar.gz

(3)最后将解压出来的文件夹移动到合适的位置,这个可以根据个人习惯修改:
mv elasticsearch-8.12.0 /usr/local/elasticsearch

(4)因为前面是使用 root 用户解压缩的,所以,es 用户对 elasticsearc 目录下的文件是没有权限的,我们执行如下命令修改权限:
chmod 777 -R /usr/local/elasticsearch

5,修改环境变量

(1)Elasticsearch7.2.1 版本起就内置了 JDK,我们系统无需另外安装 JDK。不过我们需要在三台服务器中配置 ES_JAVA_HOME 环境变量,指向 Elasticsearch 内置的 JDK。首先执行如下命令编辑系统 profile 文件:
vi /etc/profile

(2)在文件尾部添加如下内容:
export ES_JAVA_HOME=/usr/local/elasticsearch/jdk

(3)保存退出后执行如下命令使配置生效:
source /etc/profile

6,修改 Elasticsearch 配置文件

(1)执行如下命令编辑 elasticsearch.yml 配置文件:
cd /usr/local/elasticsearch
vi config/elasticsearch.yml

(2)主要修改 network.hostdiscovery.seed_hostscluster.initial_master_nodesxpack.security.enabled4 个参数(前面的 # 号需要去掉)
注意:在 YAML 文件中,在参数和值之间必须有一个空格,否则会报错。
  • 下面是 node1 节点的配置参数:
network.host: node1
discovery.seed_hosts: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
xpack.security.enabled: false

  • 下面是 node2 节点的配置参数:
network.host: node2
discovery.seed_hosts: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
xpack.security.enabled: false

  • 下面是 node3 节点的配置参数:
network.host: node3
discovery.seed_hosts: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
xpack.security.enabled: false

7,启动服务

(1)三台服务器都切换到 es 用户:
su es

(2)然后各服务器分别进入 elasticsearch 目录后执行如下命令即可启动服务:
./bin/elasticsearch

(3)我们也可以使用后台运行的方式启动服务:
nohup ./bin/elasticsearch 2>&1 &

8,验证测试

(1)启动后我们可以执行 jps 命令查看集群中的进程是否存在:

(2)Elasticsearch 默认会在 9200 端口运行。我们打开另一个命令行窗口,执行如下命令请求该端口,如得到相关返回信息则说明启动成功:
curl localhost:9200

(3)如果 elasticsearch 服务设置了允许远程访问,我们也可以直接使用浏览器访问 http://IP:9200 进行测试:

(4)通过 ElasticsearchREST API 可以很方便地查看集群中的节点信息(访问“http://IP:9200/_nodes/_all?pretty”):

评论0