docker+elasticsearch的安装

Elasticsearch 基本概念

  node:运行单个ES实例的服务器
  cluster:一个或多个节点组成的集群
  index:索引多个文档的集合
  type:一个 index 可以定义一个或多个类型,将 document 逻辑份组
  document:index 里的每条记录
  field:ES存储最小单元
  shards:ES将index分片
  replicas:index 一份或多份副本


和关系型数据库对照:

Elasticsearch​        MySQL
index                database
type                 table
document             row
field                Column

 

安装 


查询镜像

[root@0006 elasticsearch]# docker search elasticsearch
INDEX       NAME                                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/elasticsearch                         Elasticsearch is a powerful open source se...   3521      [OK]       
docker.io   docker.io/nshou/elasticsearch-kibana            Elasticsearch-6.5.4 Kibana-6.5.4                96                   [OK]
docker.io   docker.io/itzg/elasticsearch                    Provides an easily configurable Elasticsea...   67                   [OK]
docker.io   docker.io/elastichq/elasticsearch-hq            Official Docker image for ElasticHQ: Elast...   26                   [OK]
docker.io   docker.io/kubernetes/fluentd-elasticsearch      An image that ingests Docker container log...   25                   
docker.io   docker.io/lmenezes/elasticsearch-kopf           elasticsearch kopf                              17                   [OK]
docker.io   docker.io/bitnami/elasticsearch                 Bitnami Docker Image for Elasticsearch          16                   [OK]
docker.io   docker.io/taskrabbit/elasticsearch-dump         Import and export tools for elasticsearch       15                   [OK]
docker.io   docker.io/esystemstech/elasticsearch            Debian based Elasticsearch packing for Lif...   14                   
docker.io   docker.io/monsantoco/elasticsearch              ElasticSearch Docker image                      11                   [OK]
docker.io   docker.io/mesoscloud/elasticsearch              [UNMAINTAINED] Elasticsearch                    9                    [OK]
docker.io   docker.io/blacktop/elasticsearch                Alpine Linux based Elasticsearch Docker Image   8                    [OK]
docker.io   docker.io/justwatch/elasticsearch_exporter      Elasticsearch stats exporter for Prometheus     8                    
docker.io   docker.io/centerforopenscience/elasticsearch    Elasticsearch                                   4                    [OK]
docker.io   docker.io/barchart/elasticsearch-aws            Elasticsearch AWS node                          3                    
docker.io   docker.io/forkdelta/fluentd-elasticsearch       fluent/fluentd with fluent-plugin-elastics...   1                    [OK]
docker.io   docker.io/jetstack/elasticsearch-pet            An elasticsearch image for kubernetes PetSets   1                    [OK]
docker.io   docker.io/phenompeople/elasticsearch            Elasticsearch is a powerful open source se...   1                    [OK]
docker.io   docker.io/thingswise/elasticsearch              Elasticsearch + etcd2 peer discovery            1                    [OK]
docker.io   docker.io/18fgsa/elasticsearch                  Built from https://github.com/docker-libra...   0                    
docker.io   docker.io/axway/elasticsearch-docker-beat       "Beat" extension to read logs of container...   0                    [OK]
docker.io   docker.io/driveclutch/infra-elasticsearch-aws   Elasticsearch Docker for use in AWS             0                    [OK]
docker.io   docker.io/igneoussystems/base-elasticsearch     A base image containing 3p tools for elast...   0                    
docker.io   docker.io/igneoussystems/base-elasticsearch-5   Base elasticsearch 5.1.1 container              0                    
docker.io   docker.io/wreulicke/elasticsearch               elasticsearch                                   0                    [OK]

拉取镜像

[root@0006 elasticsearch]# docker pull elasticsearch:5.6.12
Using default tag: latest
Trying to pull repository docker.io/library/elasticsearch ... 
latest: Pulling from docker.io/library/elasticsearch
05d1a5232b46: Pull complete 
5cee356eda6b: Pull complete 
89d3385f0fd3: Pull complete 
65dd87f6620b: Pull complete 
78a183a01190: Pull complete 
1a4499c85f97: Pull complete 
2c9d39b4bfc1: Pull complete 
1b1cec2222c9: Pull complete 
59ff4ce9df68: Pull complete 
1976bc3ee432: Pull complete 
5af49e8af381: Pull complete 
42c8b75ff7af: Pull complete 
7e6902915254: Pull complete 
99853874fa54: Pull complete 
596fbad6fcff: Pull complete 
Digest: sha256:a8081d995ef3443dc6d077093172a5931e02cdb8ffddbf05c67e01d348a9770e
Status: Downloaded newer image for docker.io/elasticsearch:latest

运行镜像

[root@0006 elasticsearch]# docker run -e ES_JAVA_OPTS="-Xms4G -Xmx4G" -d -p 9200:9200 -p 9300:9300 --restart=always -v /elasticsearch/data:/usr/share/elasticsearch/data --name elasticsearch docker.io/elasticsearch:5.6.12
4862c1bfee14081445a636d7d51c8b65607574d1881e6a41fb02272ad60a546f

[root@pg-pro ~]# docker run -e ES_JAVA_OPTS="-Xms4G -Xmx4G" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --restart=always --name elasticsearch docker.io/elasticsearch:7.13.2
[root@pg-pro ~]# docker cp elasticsearch:/usr/share/elasticsearch/data /data/elasticsearch
[root@pg-pro ~]# docker rm -f elasticsearch
[root@pg-pro ~]# docker run -e ES_JAVA_OPTS="-Xms4G -Xmx4G" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --restart=always -v /data/elasticsearch:/usr/share/elasticsearch/data --name elasticsearch docker.io/elasticsearch:7.13.2


//查看否是已经监听9200和9300
[root@0006 elasticsearch]# netstat -tnpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name             
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      1318/java           
tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      644/node            
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      6065/mysqld         
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6688/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1032/sshd           
tcp6       0      0 :::9092                 :::*                    LISTEN      3749/docker-proxy-c 
tcp6       0      0 :::10086                :::*                    LISTEN      85540/docker-proxy- 
tcp6       0      0 :::6732                 :::*                    LISTEN      1291/dockerd-curren 
tcp6       0      0 :::9200                 :::*                    LISTEN      104656/docker-proxy 
tcp6       0      0 :::50000                :::*                    LISTEN      68374/docker-proxy- 
tcp6       0      0 :::9300                 :::*                    LISTEN      104645/docker-proxy 
tcp6       0      0 :::22                   :::*                    LISTEN      1032/sshd 

 

 

ES_JAVA_OPTS="-Xms4G -Xmx4G"  //设置只允许4G的jvm运行空间

 

检查安装是否成功

[root@0006 ~]# curl http://172.16.10.383:9200/
{
  "name" : "gqsc0ge",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "7KPSH7V6R-mBDaIHCetkDg",
  "version" : {
    "number" : "5.6.12",
    "build_hash" : "cfe3d9f",
    "build_date" : "2018-09-10T20:12:43.732Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}
[root@0006 ~]# 

 

集群安装

官网安装:https://www.elastic.co/guide/en/elasticsearch/reference/7.7/docker.html
REST APIs文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/rest-apis.html

docker run -dit --name es01 --restart=always \
    -e node.name=es01 \
    -e cluster.name=es-docker-cluster \
    -e discovery.seed_hosts=es02,es03 \
    -e cluster.initial_master_nodes=es01,es02,es03 \
    -e bootstrap.memory_lock=true  --ulimit memlock=-1:-1 \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -v /data/escluster/:/usr/share/elasticsearch/data \
    -p 9200:9200 \
    docker.elastic.co/elasticsearch/elasticsearch:7.7.1
    
    
docker run -dit --name es02 --restart=always \
    -e node.name=es02 \
    -e cluster.name=es-docker-cluster \
    -e discovery.seed_hosts=es01,es03 \
    -e cluster.initial_master_nodes=es01,es02,es03 \
    -e bootstrap.memory_lock=true  --ulimit memlock=-1:-1 \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -v /data/escluster/:/usr/share/elasticsearch/data \
    -p 9200:9200 \
    docker.elastic.co/elasticsearch/elasticsearch:7.7.1
    
    
docker run -dit --name es03 --restart=always \
    -e node.name=es03 \
    -e cluster.name=es-docker-cluster \
    -e discovery.seed_hosts=es01,es02 \
    -e cluster.initial_master_nodes=es01,es02,es03 \
    -e bootstrap.memory_lock=true  --ulimit memlock=-1:-1 \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -v /data/escluster/:/usr/share/elasticsearch/data \
    -p 9200:9200 \
    docker.elastic.co/elasticsearch/elasticsearch:7.7.1

提交_cat/nodes请求以查看节点是否已启动并正在运行:

curl -X GET "localhost:9200/_cat/nodes?v&pretty"

虚拟内存设置

在生产环境中在Docker中运行Elasticsearch时,以下要求和建议适用。
vm.max_map_count至少设置为262144
该vm.max_map_count内核设置必须至少设置为262144用于生产。

grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144


sysctl -p

要将设置配置于实时生效:

sysctl -w vm.max_map_count=262144

 数据目录访问权限

默认情况下,Elasticsearch elasticsearch使用uid:gid 作为用户在容器内运行1000:0。
迁移时确保授予组0对本地目录的gid的访问权限

chmod g + rwx /data/escluster
chgrp 0 /data/escluster

增加nofile和nproc的ulimit
nofile和nproc的增加的ulimit 必须可用于Elasticsearch容器。验证 Docker守护程序的初始化系统是否将它们设置为可接受的值。

要检查Docker守护程序默认值是否为ulimits,请运行:

docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su'

如果需要,请在守护程序中调整它们,或按每个容器覆盖它们。例如,使用时docker run,请设置:

--ulimit nofile=65535:65535

禁用交换
为了性能和节点稳定性,需要禁用交换。

如果选择该bootstrap.memory_lock:true方法,则还需要memlock:true

posted @ 2019-03-25 11:44  linyouyi  阅读(786)  评论(0编辑  收藏  举报