ES官网:www.elastic.co/cn/ Docker安装ES官网教程:www.elastic.co/guide/en/el… ES配置文件详解(参考博客):www.cnblogs.com/sunxucool/p…html
1.jdk安装:es的安装时必需要有java的环境,因此咱们要先安装jdk,版本咱们选择1.8,这样对es的版本兼容更多,若是之后想换其余的es版本比较方便java
(1)在Linux系统下安装jdk1.8,使用MobaXterm做为链接工具,由于他能够直接选择文件夹进行文件的上传,咱们这里上传jdk-8u171-linux-x64.tar.gz(目前下载jdk好像须要注册Oracle帐号)node
①在usr下建立java文件夹linux
mkdir java
web
②将上传的压缩包移动到/usr/java下docker
mv jdk-8u171-linux-x64.tar.gz /usr/java
bootstrap
③解压文件vim
tar zxvf jdk-8u121-linux-x64.tar.gz
跨域
具体操做后的效果以下:bash
④使用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
复制代码
效果以下:
⑤退出vi编辑器,使环境变量设置当即生效: source /etc/profile
⑥查看jdk版本: java -version
2.安装ES:安装ES能够从官网下载压缩包进行安装,可是目前docker比较流行方便,拉取相对应的镜像,因此采用docker进行ES集群的安装,ES的版本咱们选择5.6.16,须要注意的是ES的集群至少须要三台才能达到集群效果
(1)拉取ES镜像:
docker pull elasticsearch:5.6.16
命令执行结束后,可使用docker images 查询镜像是否下载成功,以下
(2)使用docker安装ES时,为了方便之后修改配置文件相关的东西,咱们使用文件挂载的方式启动docker,因此咱们要准备一些文件夹存放数据,而后对文件夹的权限进行修改,为启动ES作准备
①建立docker文件挂载目录,并开发端口通讯
进入勽目录下: cd /usr
建立ES配置的文件夹: mkdir -p jayes/ES/config
进入ES目录: cd ES
建立ES数据存放的文件
mkdir data1
mkdir data2
mkdir data3
复制代码
开发端口通讯:后续ES配置文件中所须要的端口,否则ES之间没法进行通讯
firewall-cmd --add-port=9300/tcp
firewall-cmd --add-port=9301/tcp
firewall-cmd --add-port=9302/tcp
复制代码
将data一、data二、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
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