环境准备
节点名称 | ip地址 |
---|---|
node1 | 192.168.130.20 |
node2 | 192.168.130.19 |
node2 | 192.168.130.21 |
安装docker
略
操作系统限制修改
vim /etc/sysctl.conf
在最后面追加以下内容
vm.max_map_count=655360
使配置生效
sysctl -p
创建es配置
创建目录(三个节点)
# 创建主节点数据存放目录
mkdir -p /root/elasticsearch/data
# 创建主节点配置存放目录
mkdir -p /root/elasticsearch/config
# 创建主节点日志存放目录
mkdir -p /root/elasticsearch/logs
# 创建主节点插件存放目录
mkdir -p /root/elasticsearch/plugins
编辑配置文件(三个节点)
cd /root/elasticsearch/config
vi elasticsearch.yml
写入配置信息(三个节点)
node1配置
# 设置集群名称,集群内所有节点的名称必须一致。
cluster.name: kont
# 设置节点名称,集群内节点名称必须唯一。
node.name: node1
# 表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true
# 索引数据存放的位置
#path.data: /usr/share/elasticsearch/data
# 日志文件存放的位置
#path.logs: /usr/share/elasticsearch/logs
# 需求锁住物理内存,是:true、否:false
#bootstrap.memory_lock: true
# 监听地址,用于访问该es
network.host: 192.168.130.20
# es对外提供的http端口,默认 9200
http.port: 9200
# TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"
node2配置
# 设置集群名称,集群内所有节点的名称必须一致。
cluster.name: kont
# 设置节点名称,集群内节点名称必须唯一。
node.name: node2
# 表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true
# 索引数据存放的位置
#path.data: /usr/share/elasticsearch/data
# 日志文件存放的位置
#path.logs: /usr/share/elasticsearch/logs
# 需求锁住物理内存,是:true、否:false
#bootstrap.memory_lock: true
# 监听地址,用于访问该es
network.host: 192.168.130.19
# es对外提供的http端口,默认 9200
http.port: 9200
# TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"
node3配置
# 设置集群名称,集群内所有节点的名称必须一致。
cluster.name: kont
# 设置节点名称,集群内节点名称必须唯一。
node.name: node3
# 表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true
# 索引数据存放的位置
#path.data: /usr/share/elasticsearch/data
# 日志文件存放的位置
#path.logs: /usr/share/elasticsearch/logs
# 需求锁住物理内存,是:true、否:false
#bootstrap.memory_lock: true
# 监听地址,用于访问该es
network.host: 192.168.130.21
# es对外提供的http端口,默认 9200
http.port: 9200
# TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"
启动es
node1
docker run -d --network=host --privileged=true \
-e ES_JAVA_OPTS="-Xms2048m -Xmx2048m" \
-e TAKE_FILE_OWNERSHIP=true --name es-node1 \
-v /root/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /root/elasticsearch/data:/usr/share/elasticsearch/data \
-v /root/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /root/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.6.1
node2
docker run -d --network=host --privileged=true \
-e ES_JAVA_OPTS="-Xms2048m -Xmx2048m" \
-e TAKE_FILE_OWNERSHIP=true --name es-node2 \
-v /root/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /root/elasticsearch/data:/usr/share/elasticsearch/data \
-v /root/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /root/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.6.1
node3
docker run -d --network=host --privileged=true \
-e ES_JAVA_OPTS="-Xms2048m -Xmx2048m" \
-e TAKE_FILE_OWNERSHIP=true --name es-node3 \
-v /root/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /root/elasticsearch/data:/usr/share/elasticsearch/data \
-v /root/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /root/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.6.1
打开浏览器,检查集群是否正常
http://xx.xx.xx.xx:9200/_cat/nodes?pretty
安装es-head(可选)
docker run -d --name es-head -p 9100:9100 mobz/elasticsearch-head:5
打开http://xx.xx.xx.xx:9100 连接上面任意一个节点