docker安装elasticsearch集群、kibana、IK分词器、设置密码【笔记】

安装elasticsearch

  1. 基于docker-compose.yml安装ElasticSearch集群

ElasticSearch是基于java的,而新版本需要支持LTS,所以需要安装jdk9以上版本,这里选择11

docker pull openjdk:11
  1. vm.max_map_count内核设置,需要至少为262144用于生产
sysctl -w vm.max_map_count=262144
  1. 新建目录创建docker-compose.yml文件
    注意,docker-compose.yml中network1是提前创建好的网络名称,具体操作指令如下
docker network create -d bridge --subnet 100.0.0.0/16 --gateway 100.0.0.1 network1

docker-compose.yml文件内容如下

version: '2.2'
services:
  es01:
    image: elasticsearch:7.14.1
    container_name: es01
    environment:
      - node.name=es01
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - cluster.name=es-docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms4G -Xmx4G"
    ulimits:
      memlock:
        soft: -1
        hard: -1
#    volumes:
#      - /data/docker/es/es1/data:/usr/share/elasticsearch/data
#      - /data/docker/es/es1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
#      - /data/docker/es/es1/logs:/usr/share/elasticsearch/logs
#      - /data/docker/es/es1/plugins:/usr/share/elasticsearch/plugins
#      - /data/docker/es/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
    ports:
      - 9200:9200
    networks:
      default:
        ipv4_address: 100.0.0.100
  es02:
    image: elasticsearch:7.14.1
    container_name: es02
    environment:
      - node.name=es02
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - cluster.name=es-docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms4G -Xmx4G"
    ulimits:
      memlock:
        soft: -1
        hard: -1
#    volumes:
#      - /data/docker/es/es2/data:/usr/share/elasticsearch/data
#      - /data/docker/es/es2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
#      - /data/docker/es/es2/logs:/usr/share/elasticsearch/logs
#      - /data/docker/es/es2/plugins:/usr/share/elasticsearch/plugins
#      - /data/docker/es/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
    ports:
      - 9201:9200
    networks:
      default:
        ipv4_address: 100.0.0.101
  es03:
    image: elasticsearch:7.14.1
    container_name: es03
    environment:
      - node.name=es03
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - cluster.name=es-docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms4G -Xmx4G"
    ulimits:
      memlock:
        soft: -1
        hard: -1
#    volumes:
#      - /data/docker/es/es3/data:/usr/share/elasticsearch/data
#      - /data/docker/es/es3/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
#      - /data/docker/es/es3/logs:/usr/share/elasticsearch/logs
#      - /data/docker/es/es3/plugins:/usr/share/elasticsearch/plugins
#      - /data/docker/es/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
    ports:
      - 9202:9200
    networks:
      default:
        ipv4_address: 100.0.0.102
networks:
  default:
    external:
      name: network1
  1. 执行指令docker-compose up -d
  2. 分别复制配置文件到对应的挂载目录
    5.0 mkdir /data/docker/es/{es1,es2,es3}
    5.1 es1
    docker cp es01:/usr/share/elasticsearch/data/ /data/docker/es/es1/data/
    docker cp es01:/usr/share/elasticsearch/logs/ /data/docker/es/es1/logs/
    docker cp es01:/usr/share/elasticsearch/plugins/ /data/docker/es/es1/plugins/
    docker cp es01:/usr/share/elasticsearch/config/elasticsearch.yml /data/docker/es/es1/elasticsearch.yml
    5.2 es2
    docker cp es02:/usr/share/elasticsearch/data/ /data/docker/es/es2/data/
    docker cp es02:/usr/share/elasticsearch/logs/ /data/docker/es/es2/logs/
    docker cp es02:/usr/share/elasticsearch/plugins/ /data/docker/es/es2/plugins/
    docker cp es02:/usr/share/elasticsearch/config/elasticsearch.yml /data/docker/es/es2/elasticsearch.yml
    5.3 es3
    docker cp es03:/usr/share/elasticsearch/data/ /data/docker/es/es3/data/
    docker cp es03:/usr/share/elasticsearch/logs/ /data/docker/es/es3/logs/
    docker cp es03:/usr/share/elasticsearch/plugins/ /data/docker/es/es3/plugins/
    docker cp es03:/usr/share/elasticsearch/config/elasticsearch.yml /data/docker/es/es3/elasticsearch.yml

如果不需要安装x-pach,则打开docker-compose.yml注释,停止并删除已启动的es01,es02,es03,再次运行docker-compose up -d,此时elasticsearch已经可以正常使用了

  1. 进入容器内部生成证书
docker exec -it es01 bash
/usr/share/elasticsearch/bin/elasticsearch-certutil ca

一路按回车,不建议输入密码,防止出错
在这里插入图片描述
执行完成后会生成elastic-stack-ca.p12文件
在这里插入图片描述

/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca /usr/share/elasticsearch/elastic-stack-ca.p12

一路按回车,不建议输入密码,防止出错
会生成新的文件elastic-certificates.p12
在这里插入图片描述
退出容器exit

  1. 复制生成的证书文件到挂载目录
docker cp es01:/usr/share/elasticsearch/elastic-stack-ca.p12 /data/docker/es/
docker cp es01:/usr/share/elasticsearch/elastic-certificates.p12 /data/docker/es/
  1. 给挂载目录的证书文件授权
    chmod 777 elastic-*.p12
  2. 停止并删除启动的容器
    docker stop es01 es02 es03 && docker rm es01 es02 es03
  3. 修改docker-compose.yml文件(打开注释,也就是挂载目录部分)
  4. 分别进入到各个节点挂载目录
cd /data/docker/es1/
  1. 修改es1下的elasticsearch.yml文件,主要是为安装x-pach做准备
    添加内容:
# 是否支持跨域,默认为false
http.cors.enabled: true
# 表示这个节点是否可以充当主节点
node.master: true
# 是否充当数据节点
node.data: true
# 这条配置表示开启xpack认证机制,使用密码登录                
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
  1. 重新执行docker-compose up -d

  2. 进入容器中设置密码(任意一台设置即可)

docker exec -it es01 bash
cd /usr/share/elasticsearch/bin
  1. 设置登录密码
    自定义密码则使用./elasticsearch-setup-passwords interactive
    自动生成密码则使用 ./elasticsearch-setup-passwords auto
    注意保存密码
./elasticsearch-setup-passwords interactive

根据提示设置密码
默认账号elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
密码为上述步骤设置的

  1. 重启服务
docker restart es01 es02 es03

自动生成的密码忘记处理办法

  • 进入容器内部
docker exec -it es01 bash
  • 创建一个超级用户 vick (名称任意,不要和默认重复即可),按照提示输入密码
./bin/elasticsearch-users useradd vick -r superuser
  • 使用创建的超级账号来修改密码
curl -XPUT -u vick:密码 http://localhost:9200/_xpack/security/user/elastic/_password -H "Content-Type: application/json" -d '
{
 "password": "新密码"
}'

安装kibana(和es保持一致)

  • 拉取同版本镜像
docker pull kibana:7.14.1
  • 新建目录/root/data/docker/kibana/config用来保存kibana配置文件
mkdir -p /data/docker/kibana/config
  • 新建kibana.yml配置文件,输入内容如下
#Kibana的映射端口
server.port: 5601
#网关地址
server.host: "0.0.0.0"
#Kibana实例对外展示的名称
server.name: "kibana"
#Elasticsearch的集群地址,也就是说所有的集群IP
elasticsearch.hosts: ["http://100.0.0.100:9200","http://100.0.0.101:9201","http://100.0.0.102:9202"]
#设置页面语言,中文使用zh-CN,英文使用en
i18n.locale: "zh-CN"
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "kibana_system"
elasticsearch.password: "上面设置时输入的密码"
  • 启动kibana
docker run -d -p 5601:5601 --network network1 --ip 100.0.0.103 -v /data/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml  --name kibana kibana:7.14.1

安装IK分词器

原因就不多说了,默认分词器对中文不友好

  • 下载IK分词器下载地址

  • 上传到挂载的插件目录【对应上述:/data/docker/es1/plugins/】下,scp elasticsearch-analysis-ik.zip root@xxxx.xxx.xx:/xxx/x/

  • 解压 unzip elasticsearch-analysis-ik.zip将解压内容放在plugins/ik/下

  • es2、es3对应也复制一份cp -r ./plugins/ik ../es2/plugins/

  • 重启服务

docker restart es01 es02 es03
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值