Hwang's Blog

在 Ubuntu 中部署 Elasticsearch 集群

2021-04-19 · 5 min read
elasticsearch

Step 1. Install Java

给每一台服务器安装 java 环境

sudo apt install openjdk-15-jdk

Step 2. Download Elasticsearch

下载 Elasticsearch 的安装包:::https://www.elastic.co/cn/start:: 选择Linux 版本,下载 Elasticsearch 与 Kibana 的 tar 包。

考虑到复杂的网络环境问题,我这边直接使用下载到本地再上传到服务器的方式。

文件上传:

  • 你可以使用 scp 进行上传:

    scp [local path] [your-server]:[remote path]

  • 也可以使用 VScode remote shell 进行上传;

  • 还可以使用 sftp 进行上传;

文件上传后,将Elasticsearch的包文件传给局域网内的机器中;

Step3. Install Elasticsearch

3.1 创建一个标准用户

::Elasticsearch 会动态执行一些脚本,所以为了安全起见,务必创建一个新用户(没有管理员权限那种):::

adduser [username]

之后设置密码。

3.2 创建项目目录

cd /home/[your es user]
mkdir -p elasticsearch/data
mkdir -p elasticsearch/logs

data:存储Elasticsearch索引文件数据

logs:存储日志文件

3.3 解压文件、修改配置

将将Elasticsearch的包文件移动到 elasticsearch 目录下,使用以下命令进行解压缩:

tar -xvf elasticsearch-7.12.0-linux-x86_64.tar.gz

接下来,修改配置:

vim elasticsearch-7.12.0/config/elasticsearch.yml

其中需要修改的是:

  • cluster.name: 名称
  • node.name: 节点名称
  • path.data: 数据文件目录,修改为上面data目录,即 /home/[your es user]/elasticsearch/data
  • path.logs: 日志文件目录,修改为上面logs目录,即 /home/[your es user]/elasticsearch/logs
  • network.host: 本机IP
  • discovery.seed_hosts: 子节点的ip
  • cluster.initial_master_nodes: 参与竞选的节点

之后可以直接将 这个 elasticsearch 文件夹通过 scp 发送到另外两台服务器中::,注意修改IP地址;::

3.4 逐一启动 elasticsearch ,检查是否有错误

使用后台启动的方式:

./bin/elasticsearch -d -p pid

使用:

curl http://192.168.28.129:9200/_cat/health?v

查看返回的结果是否是 “green”

3.5 最后可能会有的问题(参考链接):

3.5.1 设置虚拟内存

将虚拟内存设置大一些,否则在启动elasticsearch时会出错导致启动失败:

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

输入 vi /etc/sysctl.conf 命令在 sysctl.conf 中配置如下内容:

vm.max_map_count=655360

接着输入如下命令让配置生效:

sysctl -p

3.5.2 设置最大文件描述符

在启动Elasticsearch有可能会出现如下错误:

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

错误说明:elasticsearch过程的最大文件描述符 [4096] 太低,增加到

最少 [65536]

接下来我们修改最大文件描述符,输入 vi /etc/security/limits.conf 命令在 limits.conf 中配置如下内容:

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

3.5.3 设置最大线程数

在启动Elasticsearch有可能会出现如下错误:

[2]: max number of threads [1024] for user [elsearch] is too low, increase to atleast[4096]

错误说明:线程[1024]用户[elsearch]的最大数量太低,增加至少[4096]

接下来我们修改线程数,输入 vi /etc/security/limits.d/20-nproc.conf 命令在 20-nproc.conf中配置如下内容:

* soft nproc 4096

3.5.4 SecComp

在启动Elasticsearch有可能会出现如下错误:

[3]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

错误说明:系统调用过滤器安装失败;检查日志和修复配置或禁用系统调用过滤器需要您自担风险

这是在因为 Centos7 不支持 SecComp ,而ES5.2.0之后默认 bootstrap.system_call_filtertrue进行检测,所以导致检测失败,失败后直接导致ES不能启动。

接下来我们修改配置文件,输入 vim config/elasticsearch.yml 命令,在 elasticsearch.yml 中配置如下内容:

# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
# 设置为false不进行检测
bootstrap.system_call_filter: false
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#

Step4.Install kibana

安装 kibana 作为 elasticsearch 的管理软件。下载 tar 包,之后scp传输到对应的服务器中;

使用 tar 进行解压缩。运行 ./bin/kibana 即可前台启动,运行 nohup ./bin/kibana & 即可后台启动。

其配置文件和es一样,在 ./config/kibana.yml 其中可能要修改的有:

  • server.port: 服务的端口号
  • server.host: 服务的ip地址
  • elasticsearch.hosts: es 集群们的地址,如果大于一个,可以使用[ "http://yourEsHost:yourEsPort", "http://yourEsHost:yourEsPort","http://yourEsHost:yourEsPort"] 的方式。

生而为人,应该能够换尿布、策划入侵、杀猪、开船、造房子、 写十四行诗、算账、建墙、正骨、抚慰临终之人、接受命令、 下达命令、合作、独行、解决方程式、分析新问题、 清理马粪、编程、烹饪美食、高效战斗、英勇牺牲。 专业分工是给昆虫准备的。



Powered by Gridea

...