Linux集群部署Elasticsearch7.6.2和Kibana7.6.2

目录

下载

配置免密

Elasticsearch部署

1 创建用户

2 解压

3 配置

3.1 环境变量配置

3.2 elasticsearch.yml 配置

3.3 jvm.options配置

3.4 sysctl.conf 配置

3.5 limits.conf 配置

4 分发到集群其他机器

5 启动集群

6 验证

7 可能遇到的问题

7.1 要求JDK版本11

7.2 脚本错误

7.3 要求修改vm.max_map_count

Kibana部署

1 解压

2 修改配置

3 启动

4 验证

5 可能遇到的问题

5.1 Error: [index_not_found_exception] no such index...

5.2 无法连接ES


下载

官网下载:

Elasticsearch 7.6.2 | Elastic

Kibana 7.6.2 | Elastic

下载es和kibana的 linux包

这里版本是7.6.2

配置免密

集群规划如下:

172.16.10.244 es_node_1 初始设置为主节点。

172.16.10.250 es_node_2 从节点1

172.16.10.230 es_node_2 从节点2

# 先修改集群内所有机器hostname
$ sudo vi /etc/hosts
********************************************
172.16.10.230 dsj-node230
172.16.10.244 dsj-node244
172.16.10.250 dsj-node250
********************************************
$ sudo vi /etc/hostname
********************************************
dsj-node244
********************************************

# 应用更改
$ sudo hostname dsj-node244
$ sudo hostname dsj-node250
$ sudo hostname dsj-node230


# 源服务器上执行 
# 会在 ~/.ssh 目录下生成 id_rsa 和 id_rsa.pub 两个密钥文件。
$ ssh-keygen -t rsa -b 4096

# 在 dsj-node244 上 
# 这会把源服务器的 ~/.ssh/id_rsa.pub 公钥内容复制到目标服务器的 ~/.ssh/authorized_keys 文件中。
ssh-copy-id root@172.16.10.250 && \
ssh-copy-id root@172.16.10.230

ssh-copy-id es_user@172.16.10.250 && \
ssh-copy-id es_user@172.16.10.230


# es_user 和 root 的密码:
# $ whdsj@123$
# 重复此过程
# 从 dsj-node230 复制公钥到其他两台机器,
# 从 dsj-node250 复制公钥到其他两台机器。

# 然后试一下ssh免密登录
$ ssh 172.16.10.250

# 配置以上后重新连接就不需要密码了

Elasticsearch部署

1 创建用户

        注意如果是集群搭建则需要再每台机器上面进行 配置创建用户等操作,确保每台机器上面都配置好。

由于es运行不能在root用户下,需要创建非root用户。

# 创建Es用户
# es_user
# whdsj@123$
$ useradd es_user -p whdsj@123$

# 文件授权
$ chown -R es_user $ELASTICSEARCH_HOME/../


# 删除用户,保留home
$ sudo userdel es_user
# 删除用户,删除home
$ sudo userdel -r es_user
# 删除系统上所有属于 es_user 的文件
$ sudo find / -user es_user -delete
# root 强制改密码
$ sudo passwd es_user

2 解压

$ mkdir -p /data/elasticsearch
# 传包到 /data/elasticsearch 并解压
$ tar -zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz
# 重命名 并删除安装包
$ mv /data/elasticsearch/elasticsearch-7.6.2 /data/elasticsearch/elasticsearch_7_6_2 && \
rm -f /data/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz

3 配置

3.1 环境变量配置



$ vi /etc/profile 
***********************************增加配置******************************
export ELASTICSEARCH_HOME=/data/elasticsearch/elasticsearch_7_6_2
************************************************************************

$ source /etc/profile
# 检查配置
$ echo $ELASTICSEARCH_HOME

# 创建data目录
$ mkdir -p  $ELASTICSEARCH_HOME/data

3.2 elasticsearch.yml 配置

$ vi $ELASTICSEARCH_HOME/config/elasticsearch.yml

修改如下配置项:

# 集群名称
cluster.name: bdcp_es_cluster

# 节点名称
node.name: es_node_1

# 日志 数据目录
path.data: /data/elasticsearch/elasticsearch_7_6_2/data
path.logs: /data/elasticsearch/elasticsearch_7_6_2/logs

# 开启远程访问监听
network.host: 0.0.0.0
# 集群内部通信地址,多网卡环境建议使用IP
network.publish_host: 172.16.10.244
http.port: 9200

discovery.seed_hosts: ["172.16.10.244", "172.16.10.230","172.16.10.250",]
cluster.initial_master_nodes: ["es_node_1", "es_node_2","es_node_3"]

# 开启跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

Elasticsearch 配置项说明

  1. cluster.name
    • 作用: 指定Elasticsearch集群的名称。
    • 重要性: 高。用于区分不同的集群,确保节点只加入到特定的集群中。
  1. node.name
    • 作用: 设置当前节点的名称。
    • 重要性: 中等。有助于在集群中识别和管理不同的节点。
  1. path.data
    • 作用: 指定Elasticsearch存储数据的路径。
    • 重要性: 中等。对于数据存储和访问速度至关重要。
  1. path.logs
    • 作用: 指定Elasticsearch日志文件的存储路径。
    • 重要性: 中等。对于日志管理和故障排查非常重要。
  1. network.host
    • 作用: 设置Elasticsearch绑定和监听的网络地址。
    • 重要性: 高。影响Elasticsearch服务的可访问性和安全性。
  1. http.port
    • 作用: 指定Elasticsearch HTTP服务的端口。
    • 重要性: 中等。用于客户端访问Elasticsearch API。
  1. cluster.initial_master_nodes
    • 作用: 在集群首次启动时,指定哪些节点是主节点的候选者。
    • 重要性: 高。用于Elasticsearch 7.x及更高版本中的集群引导和防止脑裂。
  1. network.publish_host
    • 作用: 设置节点在集群内通信时使用的主机地址。
    • 重要性: 中等。确保集群内部正确通信,尤其在复杂的网络环境中。
  1. discovery.seed_hosts
    • 作用: 指定集群中的初始主机,用于新节点发现并加入集群。
    • 重要性: 高。对于节点发现和集群形成至关重要,特别是在大型或动态变化的集群中。
  1. http.cors.enabled: true
    • 作用: 启用跨源资源共享(CORS),允许从不同源的客户端访问Elasticsearch。
    • 重要性: 中等。对于需要跨域访问Elasticsearch的Web应用程序来说至关重要。
  1. http.cors.allow-origin: "*"
    • 作用: 设置允许访问Elasticsearch的来源域。"*" 表示接受所有域的请求。
    • 重要性: 中等。适用于那些需要从任何来源接收请求的环境,但需注意安全风险。

补充说明

  • 确保网络配置符合你的部署环境,特别是network.hosthttp.port,以确保安全和可访问性。
  • 考虑设置资源限制,如indices.memory.index_buffer_sizethread_pool,以优化性能。
  • 根据需要,配置安全相关的设置,如启用SSL/TLS,设置用户认证等。
  • 考虑开启和配置监控和日志记录的相关选项,以便于维护和故障排查。
  • 备份策略也很重要,确保有定期备份的计划和实施。

3.3 jvm.options配置

限制内存

# 内存设置为4G
$ vi $ELASTICSEARCH_HOME/config/jvm.options

***********************************修改配置******************************
-Xms4g
-Xmx4g
************************************************************************

3.4 sysctl.conf 配置

$ vi /etc/sysctl.conf
***********************************增加配置******************************
vm.max_map_count=655360
************************************************************************

3.5 limits.conf 配置

软限制(soft)

软限制可以在程序的进程中自行改变

硬限制(hard)

而硬限制则不行(除非程序进程有root权限)

-H :hard limit ,严格的设定,必定不能超过这个设定的数值,超过会报错

-S :soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告信息

$ vi /etc/security/limits.conf
***********************************增加配置******************************
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
************************************************************************

# 使配置生效
$ sysctl -p

至此配置完成。

4 分发到集群其他机器

这一步需要将当前这台机器 244 的es包分发到集群中其他机器中 230 和 250。

这里给一个分发命令。

# 1 执行分发 es 文件夹
rsync -avr $ELASTICSEARCH_HOME root@dsj-node250:/data/elasticsearch/ && \
rsync -avr $ELASTICSEARCH_HOME root@dsj-node230:/data/elasticsearch/

# 2 执行分发 sysctl.conf 配置
rsync -av /etc/sysctl.conf root@dsj-node250:/etc/ && \
rsync -av /etc/sysctl.conf root@dsj-node230:/etc/

# 3 执行分发 limits.conf 配置
rsync -av /etc/security/limits.conf root@dsj-node250:/etc/security/ && \
rsync -av /etc/security/limits.conf root@dsj-node230:/etc/security/

# 4 执行 sysctl -p 指令
ssh root@dsj-node250 'sysctl -p' && \
ssh root@dsj-node230 'sysctl -p'


# 备用,分发 elasticsearch-env
rsync -av $ELASTICSEARCH_HOME/bin/elasticsearch-env root@dsj-node250:$ELASTICSEARCH_HOME/bin/ && \
rsync -av $ELASTICSEARCH_HOME/bin/elasticsearch-env root@dsj-node230:$ELASTICSEARCH_HOME/bin/

然后需要去每台集群机器上做一些前置配置。2.1\2.2\2.3\2.4\2.5 以及 3

5 启动集群

切换到 es_user

$ su es_user
# 启动 elasticsearch
$ cd $ELASTICSEARCH_HOME/bin &&  nohup sh elasticsearch > ../logs/elasticsearch.log 2>&1 &

# 查看日志
$ tail -f $ELASTICSEARCH_HOME/logs/elasticsearch.log -n 20

6 验证

curl http://172.16.10.244:9200
# 或者直接浏览器访问
http://172.16.10.244:9200

# 检查集群状态
curl http://172.16.10.244:9200/_cluster/state?pretty

# 检查集群健康度
curl http://172.16.10.244:9200/_cluster/health?pretty

7 可能遇到的问题

7.1 要求JDK版本11

可以使用es内置的jdk11解决。

future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_341/jre] does not meet this requirement

7.2 脚本错误

./elasticsearch-env: line 116: syntax error near unexpected token `<'

将116行语法修改成即可

将 		done < <(env) 
修改为 done <<< 'env'

7.3 要求修改vm.max_map_count

看下 3.4 中是否改了,然后看看是否在root下执行了 sysctl -p 让改动生效。

Kibana部署

1 解压

配环境变量。传包到es工作目录,解压。

$ tar -zxvf kibana-7.6.2-linux-x86_64.tar.gz
$ mv /data/elasticsearch/kibana-7.6.2-linux-x86_64 /data/elasticsearch/kibana_7_6_2 && \
rm -f /data/elasticsearch/kibana-7.6.2-linux-x86_64.tar.gz

$ vi /etc/profile 
***********************************增加配置******************************
export KIBANA_HOME=/data/elasticsearch/kibana_7_6_2
************************************************************************
$ source /etc/profile
$ echo $KIBANA_HOME

2 修改配置

$ vi $KIBANA_HOME/config/kibana.yml
# 添加以下内容:
***********************************增加配置******************************
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://172.16.10.244:9200","http://172.16.10.230:9200","http://172.16.10.250:9200"]
************************************************************************

$ source /etc/profile

3 启动

# 创建日志文件夹 然后启动
$ mkdir -p $KIBANA_HOME/logs
$ $KIBANA_HOME/bin/kibana  > $KIBANA_HOME/logs/kibana.log 2>&1 &

# 查看日志
$ tail -f -n 19 $KIBANA_HOME/logs/kibana.log

4 验证

启动后访问 http://172.16.10.244:5601

5 可能遇到的问题

5.1 Error: [index_not_found_exception] no such index...

        检查配置、检查集群健康度、删除集群中kibana相关索引然后重启kibana、检查每台机器磁盘是否吃满、检查网络

5.2 无法连接ES

检查3.2中es配置 ,支持跨域

http.cors.enabled: true

http.cors.allow-origin: "*"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值