新手搭建项目系列——elasticsearch集群搭建

elasticsearch集群搭建

集群配置信息

主要自己使用验证技术实现,所以一主一从能够达到相互容灾效果就行

节点名ip
es-node-01192.168.136.131
es-node-02192.168.136.132

创建所需目录

  • es-node-01
# 创建docker目录用来摆放所有docker所需要用的东西
mkdir /docker
# 创建es目录存放elasticsearch相关文件
mkdir /docker/es
# 创建data、config、plugins分类存放es的文件
mkdir /docker/es/data
mkdir /docker/es/config
mkdir /docker/es/plugins
  • es-node-02
# 创建docker目录用来摆放所有docker所需要用的东西
mkdir /docker
# 创建es目录存放elasticsearch相关文件
mkdir /docker/es
# 创建data、config、plugins分类存放es的文件
mkdir /docker/es/data
mkdir /docker/es/config
mkdir /docker/es/plugins

集群配置

es-node-01

下载elasticsearch镜像
# 下载7.13.2版本elasticsearch
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.13.2
下载elasticsearch-hd镜像
# 下载latest版本elasticsearch,不填写版本号默认下载latest版本
docker pull containerize/elastichd
下载elasticsearch-ik、elasticsearch-pinyin插件

ik分词器插件
在这里插入图片描述

pinyin支持拼音搜索的插件
在这里插入图片描述

下载与elasticsearch同版本号7.13.2的包,插件版本和elasticsearch必须一致不否则会出现报错

解压插件至plugins

使用FanalShell上传插件包至/docker/es/plugins文件夹中
在这里插入图片描述

# 安装unzip解压插件
yum install -y unzip

# 进入plugins文件夹中
cd /docker/es/plugins
# 解压ik、pinyin
unzip elasticsearch-analysis-ik-7.13.2.zip -d elasticsearch-analysis-ik
unzip elasticsearch-analysis-pinyin-7.13.2.zip -d elasticsearch-analysis-pinyin
配置elasticsearch.yml
# 创建并编辑elasticsearch.yml
vi /docker/es/config/elasticsearch.yml


# 填写如下内容
# 绑定地址0.0.0.0代表绑定自身ip
network.host: 0.0.0.0
# 下面两个配置用来解决跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"
配置docker-compose.yml
# 创建并编辑docker-compose.yml
vi /docker/es/docker-compose.yml


# 填写如下内容
version: '2.2'
services:
  # 集群节点名称
  es-node-01:
    # 节点镜像名称
    image: docker.elastic.co/elasticsearch/elasticsearch:7.13.2
    # 节点容器名称
    container_name: es-node-01
    # 重启后自动启动
    restart: always
    # 节点环境配置
    environment:
      # 节点名称
      - node.name=es-node-01
      # 所属集群名称
      - cluster.name=es-elasticsearch-cluster
      # 对外发布地址
      - network.publish_host=192.168.136.131
      # 服务绑定地址
      - network.host=0.0.0.0
      # 集群主机池
      - discovery.seed_hosts=192.168.136.131,192.168.136.132
      # 初始化主节点池
      - cluster.initial_master_nodes=192.168.136.131,192.168.136.132
      # 启用内存交换
      - bootstrap.memory_lock=true
      # 设置使用内存为256m  可以根据自身需求调整
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      # 不限制内存
      memlock:
        soft: -1
        hard: -1
    # 映射本地目录至容器中
    volumes:
      - data01:/docker/es/data
      - /docker/es/plugins:/usr/share/elasticsearch/plugins
      - /docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      # 访问端口
      - 9200:9200
      # 集群通讯端口
      - 9300:9300
  # 配置elasticsearch-hd
  elastichd:
    # 使用的镜像
    image: containerize/elastichd:latest
    # 使用容器名称
    container_name: elasticsearch-hd
    ports:
      # 使用节点不要改,否则打不开
      - 9800:9800
    # 依赖elasticsearch
    depends_on:
      - "es-node-01"
    # 和es-node-01进行连接
    links:
      - "es-node-01"

volumes:
  data01:
    driver: local

修改vm.max_map_count
# 编辑sysctl.conf
vi /etc/sysctl.conf
# 在最后追加
vm.max_map_count=262144

# 文件保存后刷新sysctl使之生效
sysctl -p 
启动elasticsearch
# 进入es文件夹
cd /docker/es
# docker-compose命令启动
docer-compose up -d
# 使用docker ps查看正在运行的container
docker ps

在这里插入图片描述
这时候已经可以在宿机上访问这个节点的elasticsearch了
可以先在虚拟机上使用 curl尝试连接elasticsearh

curl localhost:9200

出现如下结果就表示这个节点本机已经可以访问了 我们可以在宿机上在尝试下
在这里插入图片描述
宿机访问节点1:es-node-01
192.168.136.131:9200 与自身访问结果一直,显示如下
在这里插入图片描述

es-node-02

与es-node-01差异

es-node-02可以按照es-node-01的方法如法炮制的配置,只需要修改docker-compose.yml中一些配置参数即可

配置docker-compose.yml
# 创建并编辑docker-compose.yml
vi /docker/es/docker-compose.yml


# 填写如下内容
version: '2.2'
services:
  # 集群节点名称
  es-node-02:
    # 节点镜像名称
    image: docker.elastic.co/elasticsearch/elasticsearch:7.13.2
    # 节点容器名称
    container_name: es-node-02
    # 重启后自动启动
    restart: always
    # 节点环境配置
    environment:
      # 节点名称
      - node.name=es-node-02
      # 所属集群名称
      - cluster.name=es-elasticsearch-cluster
      # 对外发布地址
      - network.publish_host=192.168.136.132
      # 服务绑定地址
      - network.host=0.0.0.0
      # 集群主机池
      - discovery.seed_hosts=192.168.136.131,192.168.136.132
      # 初始化主节点池
      - cluster.initial_master_nodes=192.168.136.131,192.168.136.132
      # 启用内存交换
      - bootstrap.memory_lock=true
      # 设置使用内存为256m  可以根据自身需求调整
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      # 不限制内存
      memlock:
        soft: -1
        hard: -1
    # 映射本地目录至容器中
    volumes:
      - data02:/docker/es/data
      - /docker/es/plugins:/usr/share/elasticsearch/plugins
      - /docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      # 访问端口
      - 9200:9200
      # 集群通讯端口
      - 9300:9300

volumes:
  data02:
    driver: local

elasticsearch-hd 我只在es-node-01中使用了,es-node-02中未使用

elasticsearch-hd

es-node-01和es-node-02都运行起来后就可以访问es-node-01上配置的elasticsearch-hd
将默认连接的127.0.0.1:9200替换为我们配置的192.168.136.131:9200然后点击Connect
集群状态显示为Green,表示我们的集群已经建立成功,下面可以看到集群的信息。
在这里插入图片描述

查看集群状态

http://192.168.136.131:9200/_cat/health?v

查看插件

http://192.168.136.131:9200/_cat/plugins

问题排查

如果集群建立有问题,首先排查每个节点是否正在运行,如果节点未运行,可以看下节点启动时的logs,来排查问题

# 通过容器的名称或id查看容器的运行logs
docker logs 【container name/id】

可根据logs中的errors等逐个排查

总结

本章主要介绍通过docker、docker-compose配置elasticsearch集群级elasticsearch-hd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值