一、YUM 方式安装
Centos5及以下不支持这种方式
Elasticsearch包含 来自JDK维护者(GPLv2 + CE)的OpenJDK捆绑版。
所以不需要额外部署 JDK 环境即可。
1 下载并安装公共签名密钥
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2 安装
首先在 /etc/yum.repos.d/
目录下创建一个文件 elasticsearch.repo
,并写入如下内容:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
之后可以使用如下命令安装
yum install --enablerepo=elasticsearch elasticsearch
默认情况下,已配置的存储库是禁用的。这样就消除了elasticsearch在升级系统其余部分时意外升级的可能性。每个安装或升级命令必须显式启用存储库,如上面的示例命令所示。
二、docker-compose 方式
下面的 Docker Compose 文件示例 创建了一个三节点的Elasticsearch集群。节点es01上监听宿主机的 9200
端口,并es02和es03交谈es01过泊坞网络。
请注意,此配置在所有网络接口上公开端口9200,并且鉴于Docker iptables在Linux上的操作方式,这意味着您的Elasticsearch集群是可公开访问的,可能会忽略任何防火墙设置。如果您不想公开端口9200,而是使用反向代理,请在docker-compose.yml文件中替换9200:9200为127.0.0.1:9200:9200。然后,只能从主机本身访问Elasticsearch。
确保为Docker Engine分配了至少4GiB的内存。
1 docker-compose.yml 文件
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
2 运行集群
首先需要设置一下系统内核参数
sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p
还需要设置关于这个进程可以打开的文件描述符数量
[root@prod ~]# tail /etc/security/limits.conf
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
进入含有 docker-compose.yml
文件的目录,之后执行如下命令启动集群
docker-compose up -d
默认情况下,Elasticsearch 在 Docker 容器中是使用用户
elasticsearch
运行的,并且对应的uid:pid
为1000:0
。
3 查看集群节点信息
curl -X GET "localhost:9200/_cat/nodes?v&pretty"
4 使用自定义配置文件
容器内的 /usr/share/elasticsearch/config/
目录用于存放配置文件,可以把自定义的配置文件挂载到此目录下实现。
当然,您可以使用Docker环境变量来设置各个Elasticsearch配置参数。