如果之前的安装你没有操作,去安装一遍。Docker安装ES、Kibana、head、IK
如果安装过了并且之前启动过ES,执行下下面这个命令,删除nodes文件夹,否则会导致ES各节点的UUID不一致。
# 我的data挂载文件夹是这个目录 /elasticsearch/data rm -rf /elasticsearch/data/nodes/
前期准备
服务器 | 主机名称 |
192.168.206.212 | node1 |
192.168.206.213 | node2 |
192.168.206.214 | node3 |
1、操作系统限制修改
vim /etc/sysctl.conf vm.max_map_count=655360 sysctl -p
2、配置elasticsearch.yml
之前我们配置的elasticsearch.yml内容是针对单节点的,下面是三台机子的elasticsearch.yml内容
三台主机内容只有两处不一样:node.name 和 network.host
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.206.212 # 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.206.212:9300", "192.168.206.213:9300","192.168.206.214:9300"] discovery.zen.fd.ping_timeout: 1m discovery.zen.fd.ping_retries: 5 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["192.168.206.212:9300", "192.168.206.213:9300","192.168.206.214: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.206.213 # 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.206.212:9300", "192.168.206.213:9300","192.168.206.214:9300"] discovery.zen.fd.ping_timeout: 1m discovery.zen.fd.ping_retries: 5 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["192.168.206.212:9300", "192.168.206.213:9300","192.168.206.214:9300"] # 是否支持跨域,是:true,在使用head插件时需要此配置 http.cors.enabled: true # “*” 表示支持所有域名 http.cors.allow-origin: "*"
node3主机
# 设置集群名称,集群内所有节点的名称必须一致。 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.206.213 # 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.206.212:9300", "192.168.206.213:9300","192.168.206.214:9300"] discovery.zen.fd.ping_timeout: 1m discovery.zen.fd.ping_retries: 5 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["192.168.206.212:9300", "192.168.206.213:9300","192.168.206.214:9300"] # 是否支持跨域,是:true,在使用head插件时需要此配置 http.cors.enabled: true # “*” 表示支持所有域名 http.cors.allow-origin: "*"
3、启动ES
# node1主机 docker run -d --network=host --privileged=true \ -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ -e TAKE_FILE_OWNERSHIP=true --name es-node1 \ -v /elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /elasticsearch/data:/usr/share/elasticsearch/data \ -v /elasticsearch/logs:/usr/share/elasticsearch/logs \ -v /elasticsearch/plugins:/usr/share/elasticsearch/plugins \ elasticsearch:7.4.2 # node2主机 docker run -d --network=host --privileged=true \ -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ -e TAKE_FILE_OWNERSHIP=true --name es-node2 \ -v /elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /elasticsearch/data:/usr/share/elasticsearch/data \ -v /elasticsearch/logs:/usr/share/elasticsearch/logs \ -v /elasticsearch/plugins:/usr/share/elasticsearch/plugins \ elasticsearch:7.4.2 # node3主机 docker run -d --network=host --privileged=true \ -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ -e TAKE_FILE_OWNERSHIP=true --name es-node3 \ -v /elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /elasticsearch/data:/usr/share/elasticsearch/data \ -v /elasticsearch/logs:/usr/share/elasticsearch/logs \ -v /elasticsearch/plugins:/usr/share/elasticsearch/plugins \ elasticsearch:7.4.2
192.168.206.212:9100