跳到主要内容

简介与安装

简介

elasticsearch 是一个实时分布式存储、搜索分析的搜索引擎。

安装

基于docker

此处使用docker部署单节点。非docker的集群部署可以见参考部分的链接。

  1. 下载docker镜像
docker pull elasticsearch:7.17.16
  1. 创建并运行docker容器
docker run -p 9200:9200 -p 9300:9300 --name es-test \
-e "discovery.type=single-node" \
-d elasticsearch:7.17.16
  • docker-compose.yaml
version: "3"

services:
elasticsearch:
image: elasticsearch:7.17.16
container_name: es-test
ports:
- 9200:9200
- 9300:9300
volumes:
- ./elasticsearch/data/:/usr/share/elasticsearch/data
- ./elasticsearch/logs/:/usr/share/elasticsearch/logs
- ./elasticsearch/plugins/:/usr/share/elasticsearch/plugins
environment:
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
nofile:
soft: 65535
hard: 65535

安装完成后,可以访问9200端口查看是否正常

curl http://127.0.0.1:9200
{
"name" : "113f7d847ae2",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "T7s6dOouRUmHWMeRWwli0g",
"version" : {
"number" : "7.17.16",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "2b23fa076334f8d4651aeebe458a955a2ae23218",
"build_date" : "2023-12-08T10:06:54.672540567Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

使用压缩包安装

  1. 创建安装目录
mkdir -p /home/apps
  1. 获取安装包:(这里用的是内网地址,实际下载地址可前往 官网 下载,ik插件如不需要可忽略)
wget http://172.29.50.31/download/ProgramPackage/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
wget http://172.29.50.31/download/ProgramPackage/elasticsearch/elasticsearch-analysis-ik-7.6.2.zip
  1. 解压安装包:
tar xf elasticsearch-7.6.2-linux-x86_64.tar.gz -C /home/apps
  1. (可选)重命名
cd /home/apps
mv elasticsearch-7.6.2 elasticsearch
  1. (可选)安装ik插件
unzip elasticsearch-analysis-ik-7.6.2.zip
cp -r elasticsearch-analysis-ik-7.6.2 /usr/local/elasticsearch/plugins
  1. 修改配置文件:cd elasticsearch/config/,进入到es安装目录下的config文件夹中,修改elasticsearch.yml 文件,修改如下配置
cluster.name: robot-elastic
node.name: node-1
path.data: /home/apps/elasticsearch/data
path.logs: /home/apps/elasticsearch/logs
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["node-1"]
  1. 补齐数据存储目录和日志目录
mkdir -p /home/apps/elasticsearch/{data,logs}
  1. 因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户
useradd admin
# 修改密码
echo -en '123456' | passwd admin --stdin
# 授予权限
chown -R admin:admin /home/apps/elasticsearch
  1. 修改系统参数:vim /etc/security/limits.conf ,最后追加
* soft nproc 20480
* hard nproc 20480
* soft nofile 65536
* hard nofile 65536
* soft memlock unlimited
* hard memlock unlimited
  • vim /etc/security/limits.d/20-nproc.conf 修改如下
*     soft  nproc   20480
  • vim /etc/sysctl.conf 修改如下,若无则新增。修改完成后,执行sysctl -p使配置生效
fs.file-max = 655360
vm.max_map_count = 262144
  1. 切换用户启动ES (验证是否初步安装成功)
su - admin
cd /home/apps/elasticsearch
./bin/elasticsearch &

使用压缩包搭建ES集群

IP说明
172.50.13.103使用jdk8,es版本v7.12.0-x86_64
172.50.13.104使用jdk8,es版本v7.12.0-x86_64
172.50.13.105使用jdk8,es版本v7.12.0-x86_64

1. 准备工作

  1. 获取安装包:elasticsearch-7.12.0-linux-x86_64.tar.gz
  2. 解压:tar xf elasticsearch-7.12.0-linux-x86_64.tar.gz
  3. 创建安装目录:mkdir -p /home/{web,data,logs}/elasticsearch
  4. 转移压缩包内容:mv ./elasticsearch-7.12.0/* /home/web/elasticsearch/
  5. 删除es安装包
  6. 创建es用户:
    1. useradd -M elasticsearch
    2. passwd elasticsearch
  7. 授权:
    1. chown -R elasticsearch:elasticsearch /home/web/elasticsearch
    2. chown -R elasticsearch:elasticsearch /home/data/elasticsearch
    3. chown -R elasticsearch:elasticsearch /home/logs/elasticsearch

2. 修改系统参数

/etc/sysctl.conf
fs.file-max = 655360
vm.max_map_count = 262144

执行sysctl -p生效

/etc/security/limits.conf
* soft nproc 20480
* hard nproc 20480
* soft nofile 65536
* hard nofile 65536
* soft memlock unlimited
* hard memlock unlimited
/etc/security/limits.d/20-nproc.conf

修改内容如下:

*     soft  nproc   20480

3. 修改es配置文件

config/jvm.options
-Xms1g
-Xmx1g

以实际情况为准,一般设置为内存的一半最佳。

config/elasticsearch.yml
  • 172.50.13.103
cluster.name: esbigdata
node.name: server1
node.master: true
node.data: true
path.data: /home/data/elasticsearch
path.logs: /home/logs/elasticsearch
bootstrap.memory_lock: true
bootstrap.system_call_filter: true
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["172.50.13.103:9300","172.50.13.105:9300"]
cluster.initial_master_nodes: ["server1","server3"]
  • 172.50.13.104
cluster.name: esbigdata
node.name: server2
node.master: true
node.data: true
path.data: /home/data/elasticsearch
path.logs: /home/logs/elasticsearch
bootstrap.memory_lock: true
bootstrap.system_call_filter: true
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["172.50.13.103:9300","172.50.13.105:9300"]
cluster.initial_master_nodes: ["server1","server3"]
  • 172.50.13.105
cluster.name: esbigdata
node.name: server3
node.master: true
node.data: true
path.data: /home/data/elasticsearch
path.logs: /home/logs/elasticsearch
bootstrap.memory_lock: true
bootstrap.system_call_filter: true
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["172.50.13.103:9300","172.50.13.105:9300"]
cluster.initial_master_nodes: ["server1","server3"]

参数说明:

  • cluster.name:集群名称
  • node.name:节点名
  • node.master:该节点是否有资格被选举为主节点,默认为true
  • node.data:该节点是否存储索引数据,默认为true。如果master和data都为false,则该节点为客户端,负责将集群中的请求转发到主节点
  • path.data:数据存储路径
  • path.logs:日志存储路径
  • bootstrap.memory_lock:锁定只使用物理内存,不使用swap虚拟内存
  • bootstrap.system_call_filter:检测SecComp
  • network.host:若安全起见,可以设置为本机IP
  • http.port:http请求的端口,默认9200
  • transport.port:集群之间通信端口
  • discovery.seed_hosts,用于发现集群节点的主机IP和端口,一般是master节点
  • cluster.initial_master_nodes:初始化⼀个新的集群时需要此配置来选举master

4. 启动

  1. 切换用户:su elasticsearch
  2. 启动:/home/web/elasticsearch/bin/elasticsearch -d
  3. 验证:curl http://172.50.13.103:9300,出现以下内容则集群搭建成功。(如果cluster_uuid为 _na_,则搭建失败)
{
"name" : "server1",
"cluster_name" : "esbigdata",
"cluster_uuid" : "UzHTBNaWSxiyOIJWAUP7Vg",
"version" : {
"number" : "7.12.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a",
"build_date" : "2021-03-18T06:17:15.410153305Z",
"build_snapshot" : false,
"lucene_version" : "8.8.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

参考