使用Docker搭建ES5.6.16集群

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便(后续用ES代替)

ES官网:https://www.elastic.co/cn/
Docker安装ES官网教程:https://www.elastic.co/guide/en/elasticsearch/reference/6.7/docker.html
ES配置文件详解(参考博客):https://www.cnblogs.com/sunxucool/p/3799190.html

1.jdk安装:es的安装时必须要有java的环境,所以我们要先安装jdk,版本我们选择1.8,这样对es的版本兼容更多,如果以后想换其他的es版本比较方便

(1)在Linux系统下安装jdk1.8,使用MobaXterm作为连接工具,因为他可以直接选择文件夹进行文件的上传,我们这里上传jdk-8u171-linux-x64.tar.gz(目前下载jdk好像需要注册Oracle账号)

①在usr下创建java文件夹

mkdir java

②将上传的压缩包移动到/usr/java下

mv jdk-8u171-linux-x64.tar.gz /usr/java

③解压文件

tar zxvf jdk-8u121-linux-x64.tar.gz

具体操作后的效果如下:

image

④使用vi编辑器,配置java环境变量

sudo vi /etc/profile

在文件最后,添加如下配置,设置java环境变量

#Java Env

export JAVA_HOME=/usr/jdk1.8.0_121

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

效果如下:

image

⑤退出vi编辑器,使环境变量设置立即生效:
source /etc/profile

⑥查看jdk版本:
java -version

image

2.安装ES:安装ES可以从官网下载压缩包进行安装,但是目前docker比较流行方便,拉取相对应的镜像,所以采用docker进行ES集群的安装,ES的版本我们选择5.6.16,需要注意的是ES的集群至少需要三台才能达到集群效果

(1)拉取ES镜像:

docker pull elasticsearch:5.6.16

命令执行结束后,可以使用docker images 查询镜像是否下载成功,如下

image

(2)使用docker安装ES时,为了方便以后修改配置文件相关的东西,我们使用文件挂载的方式启动docker,所以我们要准备一些文件夹存放数据,然后对文件夹的权限进行修改,为启动ES做准备

①创建docker文件挂载目录,并开发端口通信

进入勽目录下:
cd /usr

创建ES配置的文件夹:
mkdir -p jayes/ES/config

进入ES目录:
cd ES

创建ES数据存放的文件

mkdir data1

mkdir data2

mkdir data3
image

开发端口通信:后续ES配置文件中所需要的端口,不然ES之间无法进行通信


firewall-cmd --add-port=9300/tcp

firewall-cmd --add-port=9301/tcp

firewall-cmd --add-port=9302/tcp

将data1、data2、data3文件夹开启777权限,防止启动ES时出现没有权限操作文件夹的报错:
chmod 777 data1 data2 data3

(3)创建ES的配置文件,因为之后使用docker启动可以使用目录挂载,所以我们在/usr/jayes/ES/config下创建相应的配置文件即可(配置文件中是作者的服务器IP,使用时需要根据实际情况修改)

es-master.yml

#集群名
cluster.name: jay-es

#节点名
node.name: jay-master

#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,指绑定这台机器的任何一个ip
network.bind_host: 0.0.0.0

#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
network.publish_host: 118.25.153.239

#设置对外服务的http端口,默认为9200
http.port: 9200

#设置节点之间交互的tcp端口,默认是9300
transport.tcp.port: 9300

#是否允许跨域REST请求
http.cors.enabled: true

#允许 REST 请求来自何处
http.cors.allow-origin: "*"

#节点角色设置
node.master: true 
node.data: true  

#有成为主节点资格的节点列表
discovery.zen.ping.unicast.hosts: ["118.25.153.239:9300","118.25.153.239:9301","118.25.153.239:9302"]

#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1) 
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 2

es-nodeone.yml

#集群名
cluster.name: jay-es

#节点名
node.name: jay-nodeone

#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,指绑定这台机器的任何一个ip
network.bind_host: 0.0.0.0

#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
network.publish_host: 118.25.153.239

#设置对外服务的http端口,默认为9200,该节点为9201
http.port: 9201

#设置节点之间交互的tcp端口,默认是9300,该es的ip端口为9301
transport.tcp.port: 9301

#是否允许跨域REST请求
http.cors.enabled: true

#允许 REST 请求来自何处
http.cors.allow-origin: "*"

#节点角色设置
node.master: true 
node.data: true  

#有成为主节点资格的节点列表
discovery.zen.ping.unicast.hosts: ["118.25.153.239:9300","118.25.153.239:9301","118.25.153.239:9302"]

#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1) 
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 2

es-nodetwo.yml

#集群名
cluster.name: jay-es

#节点名
node.name: jay-nodetwo

#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,指绑定这台机器的任何一个ip
network.bind_host: 0.0.0.0

#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
network.publish_host: 118.25.153.239

#设置对外服务的http端口,默认为9200,该节点为9202
http.port: 9202

#设置节点之间交互的tcp端口,默认是9300,该es的ip端口为9302
transport.tcp.port: 9302

#是否允许跨域REST请求
http.cors.enabled: true

#允许 REST 请求来自何处
http.cors.allow-origin: "*"

#节点角色设置
node.master: true 
node.data: true  

#有成为主节点资格的节点列表
discovery.zen.ping.unicast.hosts: ["118.25.153.239:9300","118.25.153.239:9301","118.25.153.239:9302"]

#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1) 
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 2

(3)调高JVM线程数限制数量:ES对JVA的线程数有最低要求,如果不配置的话在启动时会报错,报出如下错误:
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
①修改配置文件:sysctl.conf
vim /etc/sysctl.conf
②在配置文件加入如下配置值
vm.max_map_count=262144
③启用修改后的配置
sysctl -p
(4)启动ES集群

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -di -p 9200:9200 -p 9300:9300 -v /usr/jayes/ES/config/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/jayes/ES/data1:/usr/share/elasticsearch/data --name ES01 docker.elastic.co/elasticsearch/elasticsearch:5.6.16
 
 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -di -p 9201:9201 -p 9301:9301 -v /usr/jayes/ES/config/es-nodeone.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/jayes/ES/data2:/usr/share/elasticsearch/data --name ES02 docker.elastic.co/elasticsearch/elasticsearch:5.6.16

 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -di -p 9202:9202 -p 9302:9302 -v /usr/jayes/ES/config/es-nodetwo.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/jayes/ES/data3:/usr/share/elasticsearch/data --name ES03 docker.elastic.co/elasticsearch/elasticsearch:5.6.16

注意:设置-e ES_JAVA_OPTS="-Xms256m -Xmx256m" 是因为/etc/elasticsearch/jvm.options 默认jvm最大最小内存是2G,启动容器后 可用docker stats命令查看
(5)检测ES集群搭建是否成功
http://118.25.153.239:9200/_cat/nodes?pretty

image.png

注意:输入上诉地址后可能会在页面显示如下报错, { "error" : { "root_cause" : [ { "type" : "master_not_discovered_exception", "reason" : null } ], "type" : "master_not_discovered_exception", "reason" : null }, "status" : 503 },因为使用docker安装ES时,会自动去下载x-pack,它相当于一个权限拦截使用,具体不在这里说明,因为使用它需要收费,所以我们选择不使用,将其卸载,卸载后就可以正常显示图片所示,操作如下

a.查看所有容器
docker ps
b.进入es容器
docker exec -it 容器名or容器id /bin/bash
c.卸载x-pack插件
./bin/elasticsearch-plugin remove x-pack
d.删除配置文件(由于配置文件保护,需要手动删除)
cd /usr/share/elasticsearch/config
rm -rf x-pack

(6)安装ES图形化操作工具:elasticsearch-head
①拉取elasticsearch-head镜像
docker pull mobz/elasticsearch-head:5
②使用docker启动
docker run -di -p 9100:9100 --name es-manager mobz/elasticsearch-head:5

image.png

注意:* 为master节点,服务器内存太小,只能启动两个es容器,第三个会报错,所以展示中只有两个,但是ES集群最低是三个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容