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 可以理解为一个支持模糊查询的数据库,用来存储日志
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进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50% 我在这里做了如下更改 将-Xmx1g改成-Xmx20g 将-Xms1g改成-Xms20g
vim /usr/local/elasticsearch/config/jvm.options #默认是1g官方建议对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50% -Xms20g -Xmx20g增加内容
* 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 &