elasticsearch+ kibana+ logstash+ filebeat构建高可用分布式日志集群系统(一):elasticsearch集群的安装

    xiaoxiao2022-07-13  150

    elk 提供了完备且成熟的日志存储和分析的解决方案,本文主要介绍 elasticsearch 集群的环境搭建

    安装准备工作

    准备3台机器,这样才能完成分布式集群的实验,当然能有更多机器更好:

    192.168.77.120192.168.77.130192.168.77.140

    角色划分:

    3台机器全部安装jdk1.8,因为elasticsearch是java开发的3台全部安装elasticsearch (后续都简称为es)192.168.77.120作为主节点192.168.77.130作为从备节点192.168.77.140作为数据节点

    elasticsearch 

    elasticsearch 可以理解为一个支持模糊查询的数据库,用来存储日志

    下载 elasticsearch(120/130/140节点操作)

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz

    解压至安装目录(120/130/140节点操作)

    tar -zxvf elasticsearch-7.1.0-linux-x86_64.tar.gz -C /usr/local cd /usr/local

    重命名安装目录(120/130/140节点操作)

    mv elasticsearch-7.1.0 elasticsearch

    创建数据存放路径(120/130/140节点操作)

    mkdir /opt/ELK/elasticsearch

    创建日志存放路径(120/130/140节点操作)

    mkdir /opt/ELK/elasticsearch/logs

    建立用户并授权(es不能用root运行)(120/130/140节点操作)

    useradd elasticsearch #赋予文件夹权限 chown -R elasticsearch.elasticsearch /usr/local/elasticsearch

    修改elasticsearch配置文件(120/130/140节点操作)

    vim /usr/local/elasticsearch/config/elasticsearch.yml

    192.168.77.120 主节点

    #集群的名称 cluster.name: es_cluster #节点名称 node.name: master #指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master node.master: true #允许该节点存储数据(默认开启) node.data: true #索引数据的存储路径 path.data: /opt/ELk/elasticsearch #日志文件的存储路径 path.logs: /opt/ELk/elasticsearch/logs #绑定的ip地址 network.host: 0.0.0.0 #设置对外服务的http端口,默认为9200 http.port: 9200 #是否支持跨域,默认为false http.cors.enabled: true #当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 http.cors.allow-origin: "*" #发现集群,Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。 #这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host discovery.seed_hosts: ["192.168.77.120","192.168.77.130"]

    192.168.77.130从节点

    #集群的名称 cluster.name: es_cluster #节点名称 node.name: slave1 #指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master node.master: true #允许该节点存储数据(默认开启) node.data: true #该节点机器最大运行实例 node.max_local_storage_nodes: 1 #索引数据的存储路径 path.data: /opt/ELk/elasticsearch #日志文件的存储路径 path.logs: /opt/ELk/elasticsearch/logs #绑定的ip地址 network.host: 0.0.0.0 #设置对外服务的http端口,默认为9200 http.port: 9200 #是否支持跨域,默认为false http.cors.enabled: true #当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 http.cors.allow-origin: "*" #发现集群,Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。 #这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host discovery.seed_hosts: ["192.168.77.120","192.168.77.130"]

    192.168.77.140数据节点

    #集群的名称 cluster.name: es_cluster #节点名称 node.name: slave2 #指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master node.master: false #允许该节点存储数据(默认开启) node.data: true #该节点机器最大运行实例 node.max_local_storage_nodes: 1 #索引数据的存储路径 path.data: /opt/ELk/elasticsearch #日志文件的存储路径 path.logs: /opt/ELk/elasticsearch/logs #绑定的ip地址 network.host: 0.0.0.0 #设置对外服务的http端口,默认为9200 http.port: 9200 #是否支持跨域,默认为false http.cors.enabled: true #当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 http.cors.allow-origin: "*" #发现集群,Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。 #这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host discovery.seed_hosts: ["192.168.77.120","192.168.77.130","192.168.77.140"]

    调整三个节点jvm内存(120/130/140节点操作)

    根据官方文档相关建议需要对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50%  我在这里做了如下更改 将-Xmx1g改成-Xmx20g 将-Xms1g改成-Xms20g

    vim /usr/local/elasticsearch/config/jvm.options #默认是1g官方建议对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50% -Xms20g -Xmx20g

    更改三个系统配置文件 (120/130/140节点操作)

    修改一 vi /etc/security/limits.conf

      增加内容

    * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096

    官方建议锁住swapping(因为内存交换到磁盘对服务器性能来说是致命的,当然你可以根据自己的需求去选择),我选择锁住swapping因此需要在这个配置文件下再增加两行代码

    elk soft memlock unlimited elk hard memlock unlimited 修改二 vi /etc/sysctl.conf

      增加内容

    vm.max_map_count=262144

    之后需要执行一句命令使系统配置生效

    sysctl -p

    注:不能在root下启动需要切换到添加的用户下启动elasticsearch服务

    nohup ./usr/local/elasticsearch &

     

     

     

    最新回复(0)