参考资料

http://www.baiyp.ren/elasticsearch-集群部署.html

说明

一个服务器,三个es服务节点,一个kibana容器,一个elasticsearch-head服务节点。es版本为7.17.5。服务器地址:192.168.127.142。elasticsearch 不建议使用docker,容器部署不适合有状态服务。这里是为了学习方便。

安装流程

安装docker

安装docker-compose

打开https://github.com/docker/compose/releases/tag/v2.14.1 页面找到docker-compose-linux-x86_64上传到/usr/local/bin目录下,改名为docker-compose。使用docker-compose --version命令测试。 初始化环境

虚拟机新建虚拟服务器,名称elasticsearch。防火墙初始化修改Liunx句柄数

查看最大句柄 sysctl -a | grep vm.max_map_count

修改句柄数 vi /etc/sysctl.conf

在末尾添加vm.max_map_count=262144

让系统读取这个新的配置 sysctl -p

检查,如果返回值为vm.max_map_count = 262144证明修改成功。 sysctl vm.max_map_count

句柄就是用户可以同时打开的文件句柄(包括文件、套接字等)的数量。 修改最大线程数vi /etc/security/limits.conf

# 添加以下内容

* soft nofile 65536

* hard nofile 65536

* soft nproc 4096

* hard nproc 4096

limits.conf用于设置系统资源限制的配置文件。它可以帮助管理员限制用户或进程能够使用的系统资源量。

每一行表示对一个用户或用户组的限制,格式为 。其中domain:限制的对象,用户/用户组(@groupname)/所有用户(*);type表示限制类型,如soft(软限制)、hard(硬限制)和 -(不设置限制)等;item表示限制的资源;value表示限制的具体数量。软限制是超过会提示,硬限制是超过会阻塞等待。第一行和第二行表示:限制系统中所有用户可以最多打开的文件数为65536。第三行和第四行表示:限制所有用户可以最多启动的进程数为4096。 重新启动服务reboot

创建挂载目录

创建ES节点配置目录 mkdir -p /etc/es/elasticsearch/node-{1..3}/{config,plugins}

创建ES节点数据目录 mkdir -p /home/es/elasticsearch/node-{1..3}/{data,log}

创建kibana配置目录 mkdir -p /etc/es/kibana/config

目录授权 chmod 777 /etc/es/elasticsearch/node-{1..3}/{config,plugins}

chmod 777 /home/es/elasticsearch/node-{1..3}/{data,log}

chmod 777 /etc/es/kibana/config

下载分词器

打开下载页面,地址 https://github.com/medcl/elasticsearch-analysis-ik/releases,下载7.17.5版本分词器。切换上传目录mkdir -p /home/download/es/ik/ && cd /home/download/es/ik/

上传解压unzip elasticsearch-analysis-ik-7.17.5.zip

删除zip压缩包,并返回上级rm -rf elasticsearch-analysis-ik-7.17.5.zip && cd ../

复制到对应目录cp -R ik/ /etc/es/elasticsearch/node-1/plugins/

cp -R ik/ /etc/es/elasticsearch/node-2/plugins/

cp -R ik/ /etc/es/elasticsearch/node-3/plugins/

编写配置文件

node-1vi /etc/es/elasticsearch/node-1/config/elasticsearch.yml

#集群名称

cluster.name: elastic

#当前该节点的名称

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

#设置网关地址,我是被这个坑死了,这个地址我原先填写了自己的实际物理IP地址,

#然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0

network.host: 0.0.0.0

#设置映射端口

http.port: 9200

#内部节点之间沟通端口

transport.tcp.port: 9300

# 寻找集群中的主节点,默认值为127.0.0.1:9300,也就是自己。如果要发现已存在的群集需要填写对应集群的服务节点信息,如果单节点可以忽略。es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,建议把所有的节点都写上。

discovery.seed_hosts: ["node-1","node-2","node-3"]

#当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,

#其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,

#如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

#在群集完全重新启动后阻止初始恢复,直到启动N个节点

#简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用

gateway.recover_after_nodes: 2

#删除索引是是否需要显示其名称,默认为显示

#action.destructive_requires_name: true

#禁用安全配置,否则查询的时候会提示警告

xpack.security.enabled: false

#配置允许跨域访问

http.cors.enabled: true

http.cors.allow-origin: "*"

node-2vi /etc/es/elasticsearch/node-2/config/elasticsearch.yml

#集群名称

cluster.name: elastic

#当前该节点的名称

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

#设置网关地址,我是被这个坑死了,这个地址我原先填写了自己的实际物理IP地址,

#然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0

network.host: 0.0.0.0

#设置映射端口

http.port: 9200

#内部节点之间沟通端口

transport.tcp.port: 9300

#寻找集群中的主节点,默认值为127.0.0.1:9300,也就是自己。如果要发现已存在的群集需要填写对应集群的服务节点信息,如果单节点可以忽略。es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,建议把所有的节点都写上。

discovery.seed_hosts: ["node-1","node-2","node-3"]

#当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,

#其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,

#如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

#在群集完全重新启动后阻止初始恢复,直到启动N个节点

#简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用

gateway.recover_after_nodes: 2

#删除索引是是否需要显示其名称,默认为显示

#action.destructive_requires_name: true

#禁用安全配置,否则查询的时候会提示警告

xpack.security.enabled: false

#配置允许跨域访问

http.cors.enabled: true

http.cors.allow-origin: "*"

node-3vi /etc/es/elasticsearch/node-3/config/elasticsearch.yml

#集群名称

cluster.name: elastic

#当前该节点的名称

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

#设置网关地址,我是被这个坑死了,这个地址我原先填写了自己的实际物理IP地址,

#然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0

network.host: 0.0.0.0

#设置映射端口

http.port: 9200

#内部节点之间沟通端口

transport.tcp.port: 9300

#寻找集群中的主节点,默认值为127.0.0.1:9300,也就是自己。如果要发现已存在的群集需要填写对应集群的服务节点信息,如果单节点可以忽略。es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,建议把所有的节点都写上。

discovery.seed_hosts: ["node-1","node-2","node-3"]

#当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,

#其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,

#如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

#在群集完全重新启动后阻止初始恢复,直到启动N个节点

#简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用

gateway.recover_after_nodes: 2

#删除索引是是否需要显示其名称,默认为显示

#action.destructive_requires_name: true

#禁用安全配置,否则查询的时候会提示警告

xpack.security.enabled: false

#配置允许跨域访问

http.cors.enabled: true

http.cors.allow-origin: "*"

kibanavi /etc/es/kibana/config/kibana.yml

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://node-1:9200","http://node-2:9200","http://node-3:9200"]

#下面两项,需要开启RBAC时需要打开配合es使用

#elasticsearch.username: "user"

#elasticsearch.password: "pass"

# 设置中文

i18n.locale: "zh-CN"

创建docker-compose文件

创建目录并打开mkdir -p /opt/docker/es && vi /opt/docker/es/docker-compose.yaml

编写文件version: "3"

services:

node-1:

image: elasticsearch:7.17.5

container_name: node-1

environment:

- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"

- "TZ=Asia/Shanghai"

ulimits:

memlock:

soft: -1

hard: -1

nofile:

soft: 65536

hard: 65536

ports:

- "9200:9200"

logging:

driver: "json-file"

options:

max-size: "50m"

volumes:

- /etc/es/elasticsearch/node-1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

- /etc/es/elasticsearch/node-1/plugins:/usr/share/elasticsearch/plugins

- /home/es/elasticsearch/node-1/data:/usr/share/elasticsearch/data

- /home/es/elasticsearch/node-1/log:/usr/share/elasticsearch/log

networks:

- elastic

node-2:

image: elasticsearch:7.17.5

container_name: node-2

environment:

- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"

- "TZ=Asia/Shanghai"

ulimits:

memlock:

soft: -1

hard: -1

nofile:

soft: 65536

hard: 65536

ports:

- "9201:9200"

logging:

driver: "json-file"

options:

max-size: "50m"

volumes:

- /etc/es/elasticsearch/node-2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

- /etc/es/elasticsearch/node-2/plugins:/usr/share/elasticsearch/plugins

- /home/es/elasticsearch/node-2/data:/usr/share/elasticsearch/data

- /home/es/elasticsearch/node-2/log:/usr/share/elasticsearch/log

networks:

- elastic

node-3:

image: elasticsearch:7.17.5

container_name: node-3

environment:

- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"

- "TZ=Asia/Shanghai"

ulimits:

memlock:

soft: -1

hard: -1

nofile:

soft: 65536

hard: 65536

ports:

- "9202:9200"

logging:

driver: "json-file"

options:

max-size: "50m"

volumes:

- /etc/es/elasticsearch/node-3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

- /etc/es/elasticsearch/node-3/plugins:/usr/share/elasticsearch/plugins

- /home/es/elasticsearch/node-3/data:/usr/share/elasticsearch/data

- /home/es/elasticsearch/node-3/log:/usr/share/elasticsearch/log

networks:

- elastic

kibana:

container_name: kibana

image: kibana:7.17.5

volumes:

- /etc/es/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml

ports:

- 5601:5601

networks:

- elastic

elasticsearch-head:

image: wallbase/elasticsearch-head:6-alpine

container_name: elasticsearch-head

environment:

TZ: 'Asia/Shanghai'

ports:

- '9100:9100'

networks:

- elastic

networks:

elastic:

driver: bridge

启动docker-compose up -d

验证

查看docker容器 docker-compose ps查看kibana,打开:http://192.168.127.142:5601查看es,打开:http://192.168.127.142:9200

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: