Es集群搭建以及Head插件安装
部署环境:
安装系统为:centos7
Docker版本为:dockers:18.06.3
三台虚机机ip为:192.1x8.1x2.3,192.1x8.1x2.4,192.1x8.1x2.5
Es端口我会在接下来的部署说明
部署docker:
首先我们部署docker,已经部署完docker的同学可以直接前往下一步
centos7:docker官方要求的至少是3.8以上,建议3.10以上
2, 下载阿里云docker社区版 yum源
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo
注:最新的版本建议自行百度官方
查看docker安装包
yum list | grep docker
4.安装Docker Ce 社区版本(不下载阿里云yum源的话默认是没有社区版的镜像的)
yum install -y docker-ce.x86_64
5.设置开机启动
systemctl enable docker
6.更新xfsprogs
yum -y update xfsprogs
7.启动docker
systemctl start docker
8.查看版本
docker --version
到此我们的docker已经部署完毕。
部署Es
拉取Es镜像
我是使用docker pull 来拉取镜像
出现拉取镜像太慢的情况 我配置的为阿里云加速
配置方法:
登陆阿里云:找到右上角控制台 点击进入之后找到:容器镜像服务,点击进去有 一个镜像加速器
命令:vi /etc/docker/daemon.json
将拷贝的加速器改为自己的就可以。
重启docker:systemctl restart docker
拉取所需要的镜像:docker pull elasticSearch:7.8.0
备注;三台机器分别这样配置
Es集群搭建:
1.运行容器:
docker run-d -p 9200:9200 -p 9300:9300 --name es-node-1 elasticsearch:7.8.0
进入容器修改配置文件:
docker exec -it containerID /bin/bash
cd config
vi elasticsearch.yml
下面是我的yml文件配置并有相应的注解:
#集群名称
cluster.name: my-es
#当前该节点的名称
node.name: node-1
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#给当前节点自定义属性(可以省略)
#node.attr.rack: r1
#数据存档位置
path.data: /usr/share/elasticsearch/data
#日志存放位置
path.logs: /usr/share/elasticsearch/log
#是否开启时锁定内存(默认为是)
#bootstrap.memory_lock: true
#设置网关地址
network.host: 0.0.0.0
#设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址,
#如果是docker安装节点的IP将会是配置的IP而不是docker网管ip
network.publish_host: 192.1x8.1X2.3
#设置映射端口
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9300
#集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
discovery.seed_hosts: ["192.1x8.1X2.3:9300","192.1x8.1X2.4:9301","192.1x8.1X2.5:9302"]
#elasticsearch自己选举,这里我们把三个节点都写上
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#在群集完全重新启动后阻止初始恢复,直到启动N个节点
#简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
gateway.recover_after_nodes: 2
#删除索引是是否需要显示其名称,默认为显示
#action.destructive_requires_name: true
2.运行容器:
docker run -d -p 9201:9201 -p 9301:9301--name es-node-2 elasticsearch:7.8.0
进入容器修改配置文件:
docker exec -it containerID /bin/bash
cd config
vi elasticsearch.yml
下面是我的yml文件配置并有相应的注解:
#集群名称
cluster.name: my-es
#当前该节点的名称
node.name: node-2
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#给当前节点自定义属性(可以省略)
#node.attr.rack: r1
#数据存档位置
path.data: /usr/share/elasticsearch/data
#日志存放位置
path.logs: /usr/share/elasticsearch/log
#是否开启时锁定内存(默认为是)
#bootstrap.memory_lock: true
#设置网关地址
network.host: 0.0.0.0
#设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址,
#如果是docker安装节点的IP将会是配置的IP而不是docker网管ip
network.publish_host: 192.1x8.1X2.4
#设置映射端口
http.port: 9201
#内部节点之间沟通端口
transport.tcp.port: 9301
#集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
discovery.seed_hosts: ["192.1x8.1X2.3:9300","192.1x8.1X2.4:9301","192.1x8.1X2.5:9302"]
#elasticsearch自己选举,这里我们把三个节点都写上
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#在群集完全重新启动后阻止初始恢复,直到启动N个节点
#简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
gateway.recover_after_nodes: 2
#删除索引是是否需要显示其名称,默认为显示
#action.destructive_requires_name: true
3.运行容器:
docker run -d -p 9202:9202 -p 9302:9302 --name es-node-3 elasticsearch:7.8.0
进入容器修改配置文件:
docker exec -it containerID /bin/bash
cd config
vi elasticsearch.yml
下面是我的yml文件配置并有相应的注解:
#集群名称
cluster.name: my-es
#当前该节点的名称
node.name: node-3
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#给当前节点自定义属性(可以省略)
#node.attr.rack: r1
#数据存档位置
path.data: /usr/share/elasticsearch/data
#日志存放位置
path.logs: /usr/share/elasticsearch/log
#是否开启时锁定内存(默认为是)
#bootstrap.memory_lock: true
#设置网关地址
network.host: 0.0.0.0
#设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址,
#如果是docker安装节点的IP将会是配置的IP而不是docker网管ip
network.publish_host: 192.1x8.1x2.5
#设置映射端口
http.port: 9202
#内部节点之间沟通端口
transport.tcp.port: 9302
#集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
discovery.seed_hosts: ["192.1x8.1X2.3:9300","192.1x8.1X2.4:9301","192.1x8.1X2.5:9302"]
#搭建集群的时候,选出合格的节点集群
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#在群集完全重新启动后阻止初始恢复,直到启动N个节点
#简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
gateway.recover_after_nodes: 2
#删除索引是是否需要显示其名称,默认为显示
#action.destructive_requires_name: true
访问:http://192.1x8.1x2.3:9200/_cat/nodes?pretty
出现下面的内容
注:Es如果出现闪退情况
可以查看日志:docker logs -f 容器ID
这边是我遇见的问题
ERROR: bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
分配内存太小,需要将vm.max_map_count的值调大,
命令:sysctl -w vm.max_map_count=262144
查看vm.max_map_count命令:
sysctl -a|grep vm.max_map_count
但是以上方法在重启虚拟机之后就不生效,如果想要一直生效的话,到 /etc目录下编辑sysctl.conf文件,添加vm.max_map_count=262144就可以 了
**
部署Es-head:
**
拉取head镜像:docker pull mobz/elasticsearch-head:5
创建容器:docker run -p 9100:9100 --name head mobz/elasticsearch-head:5
安装好以后,访问9100端口。此时无法访问ES
在elasticsearch的yml配置文件中添加:
#跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
重启Es就可以了。
可以查看到我们所有的节点了。
当然也可以查看到我们的插入的数据:这边是我插入的几条测试数据
以上就是我的Es集群搭建全部过程,希望对大家有所帮助。