linux搭建单机es及伪集群

先上传linux然后进行解压

tar -zxvf elasticsearch-6.8.2.tar.gz 

es从5.0版本开始, 不允许使用root用户启动es, 所以需要创建一个新用户

创建用户

useradd es

目录权限赋予es用户

chown -R es:es /opt/elasticsearch-6.8.2

配置elasticsearch.yml

#es集群名称
cluster.name: my-application
#集群节点名称
node.name: node-1
#es数据存放地址(如果注释则es目录默认创建data)
path.data: /path/to/data
#es日志存放地址(如果注释则默es目录认创建logs)
path.logs: /path/to/logs
#连接地址(本机ip,但如果外网连接不上可改为0.0.0.0)
network.host: 127.0.0.1
#es端口
http.port: 9200

切换es用户

su es

直接在es的用户启动

[es@VM-0-3-centos bin]$ ./elasticsearch
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007e8652330000, 536783683584, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 536783683584 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid5575.log

出现这个报错表示内存不够

切换root用户并修改配置文件

修改es启动内存大小

vim jvm.options

#默认为1g, 将这两个值修改小一点
-Xms1g -Xmx1g

出现这个报错则需要编辑sysctl.conf

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量

vim /etc/sysctl.conf

在末尾加上 vm.max_map_count = 2621441

该配置生效命令

sudo sysctl -p /etc/sysctl.conf

执行命令结果

[root@VM-0-3-centos bin]# sudo sysctl -p /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh3 = 4096
kernel.softlockup_panic = 1
kernel.sysrq = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
kernel.numa_balancing = 0
kernel.shmmax = 68719476736
kernel.printk = 5
vm.max_map_count = 2621441

还有这种启动报错

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

1. 修改limits.conf

vim /etc/security/limits.conf
在文件的最后面加上

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

然后再切换到es用户进行启动

su es

#前台启动
./elasticsearch
#es后台启动
./elasticsearch -d

es伪集群搭建

 先将elasticsearch1文件夹复制多份为elasticsearch2, elasticsearch3

 

[root@hecs-102947 opt]# ls
elasticsearch1  elasticsearch2  elasticsearch3  elasticsearch-6.8.2.tar.gz  jdk-8u351-linux-x64.tar.gz
[root@hecs-102947 opt]# 

 

 

 

elasticsearch1的elasticsearch.yml配置

# 集群名称(---------必须一致-------------)
cluster.name: my-elasticsearch

# 节点名称(---------必须不一致-------------)
node.name: node-1

# 是否可以成为master节点
node.master: true

# 是否允许该节点存储数据,默认开启
node.data: true

# 网络绑定0.0.0.0 (---------其他机器访问需要设置为0.0.0.0或者是自己的实际IP-------------)
network.host: 0.0.0.0

# 设置对外服务的http端口es默认9200(---------必须不一致,避免端口冲突-------------)
http.port: 9201

# 设置节点间交互的tcp端口,默认是9300(---------必须不一致-------------)
transport.tcp.port: 9301

# 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算

#(---------必须依据实际设置的集群名称配置es7.0以上版本-------------)

#这两es7.0以上才有的配置
cluster.initial_master_nodes, discovery.seed_hosts

#cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

##设置集群自动发现机器ip的集合(--------依据实际设置的集群节点间交互的tcp端口配置,可改为实际IP---------)
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
discovery.zen.minimum_master_nodes: 1

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

#允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"

elasticsearch2的elasticsearch.yml配置

# 集群名称(---------必须一致-------------)
cluster.name: my-elasticsearch

# 节点名称(---------必须不一致-------------)
node.name: node-2

# 是否可以成为master节点
node.master: true

# 是否允许该节点存储数据,默认开启
node.data: true

# 网络绑定0.0.0.0 (---------其他机器访问需要设置为0.0.0.0或者是自己的实际IP-------------)
network.host: 0.0.0.0

# 设置对外服务的http端口es默认9200(---------必须不一致,避免端口冲突-------------)
http.port: 9202

# 设置节点间交互的tcp端口,默认是9300(---------必须不一致-------------)
transport.tcp.port: 9302

# 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算

#(---------必须依据实际设置的集群名称配置es7.0以上版本-------------)
#cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

##设置集群自动发现机器ip的集合(--------依据实际设置的集群节点间交互的tcp端口配置,可改为实际IP---------)
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
discovery.zen.minimum_master_nodes: 1

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

#允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"

 

elasticsearch3也类似配置好, 别忘了用es用户进行授权目录

chown -R es:es /opt/elasticsearch2
chown -R es:es /opt/elasticsearch3

然后切换es用户依次启动

上面配置也写到了es7版本和6版本的集群配置有些差异, 我在采用7版本集群会报错不知道这个配置 unknown setting [cluster.initial_master_nodes]

验证一下集群是否成功

查看集群健康

curl http://127.0.0.1:9201/_cat/health?v
[root@hecs-102947 bin]# curl http://127.0.0.1:9201/_cat/health?v
epoch      timestamp cluster          status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1671628356 13:12:36  my-elasticsearch green           3         3      0   0    0    0        0             0                  -                100.0%
[root@hecs-102947 bin]# 

显示有三个节点, 集群状态为green

posted @ 2022-12-21 19:27  马革皮  阅读(133)  评论(0编辑  收藏  举报