Docer 安装 ELasticSearch 集群

Posted 夜空中的萤火虫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docer 安装 ELasticSearch 集群相关的知识,希望对你有一定的参考价值。

docker安装请参考本博主另一篇文章:https://www.cnblogs.com/zhouganqing/p/docker.html

准备三台服务器,本文按照三台服务器方式部署集群

 

一、下载ELasticSearch(本文使用6.8.15版本)

 docker pull elasticsearch:6.8.15

二、创建es配置文件目录和数据存放目录

mkdir /data/es/{config,data} -p

#因为我使用的管理员创建的目录,需要给其他用户权限,进入es文件夹
chmod 777 config data

三、编写配置文件

#
vim es.yml

#文件内容

#集群名,同一个集群下名称相同
cluster.name: elasticsearch-cluster
#节点名,每个节点的名称不能重复
node.name: es-node1
#IP地址(其它节点和该节点交互的ip地址),每个节点的地址不能重复;该参数等于同时设置bind_host(设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0)和publish_host(设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址),只要设置该参数,前面两个参数就不需要单独设置了;
network.host: 0.0.0.0
#本来只想设置host,但是运行时会报错:BindTransportException[Failed to bind to [9300],目前没明白原因,有知道的请回复,多谢;分开设置后正常运行
network.publish_host: 服务器1的ip
#是否有资格被选举成为主节点,默认为true node.master:
true #指定该节点是否存储索引数据,默认为true node.data: true #设置对外服务的http端口 http.port: 9200 #设置节点间交互的tcp端口,默认是9300 transport.tcp.port: 9300 #head插件需要打开这两个配置,不使用插件可以不用配置 http.cors.enabled: true http.cors.allow-origin: "*" #设置内容的最大容量,默认100mb http.max_content_length: 200mb #设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点 discovery.zen.ping.unicast.hosts: ["服务器1的ip:9300","服务器2的ip:9300"] #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4) discovery.zen.minimum_master_nodes: 1

四、修改VMA配置

#max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。如果你的操作系统在NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用

#这一步是为了防止启动容器时,报出如下错误:bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
#查看当前值 sysctl
-a|grep vm.max_map_count #编辑 vim /etc/sysctl.conf #添加配置 vm.max_map_count=262144 #执行生效 sysctl –p
#如果执行sysctl –p失败,出现下面的提示,请继续往下执行命令
sysctl: cannot stat /proc/sys/–p: No such file or directory

执行下面的命令即可
1modprobe br_netfilter
2ls /proc/sys/net/bridge
3、sysctl -p

五、启动容器,运行es

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /data/es/config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/es/data:/usr/share/elasticsearch/data  --name ES01 b71dbc55f668(镜像ID或者镜像名称加版本号) 

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /data/es/config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/es/data:/usr/share/elasticsearch/data  --name ES02 elasticsearch:6.8.15 

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /data/es/config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/es/data:/usr/share/elasticsearch/data  --name ES03 elasticsearch:6.8.15 

六、查看是否启动成功

http://192.168.79.50:9200/_cat/nodes?pretty

 

节点带 * 的为主节点

 

以上是关于Docer 安装 ELasticSearch 集群的主要内容,如果未能解决你的问题,请参考以下文章

Docker分布式安装GreenPlum集群

「扫盲」elasticsearch(二)—集群安装篇

elasticsearch集群安装

Elasticsearch7.8.0版本进阶——分布式集群(故障转移)

Elasticsearch7.8.0版本进阶——分布式集群(单节点集群)

ElasticSearch2.2 集群安装部署