6.1、ELK应用案例
6.2、环境与角色说明 1.操作系统统一采用CentOS7.5版本
一、安装部署 1.安装JAVA环境 1.1、解压jdk并指定解压目录 tar zxvf jdk-8u152-linux-x64.tar.gz -C /usr/local/ 1.2.修改环境变量 vim /etc/profile #尾部添加一下内容 export JAVA_HOME=/usr/local/jdk1.8.0_152 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH #保存退出后执行 source /etc/profile 1.3.显示java版本 [root@localhost local]# java -version java version "1.8.0_152" Java(TM) SE Runtime Environment (build 1.8.0_152-b16) Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode) 显示上述内容说明环境变量配置成功了
6.4、安装并配置elasticsearch集群 1.el asticsearch集群的架构与角色
2.安装elasticsearch与授权 解压elasticsearch压缩包到指定目录 tar zxvf elasticsearch-6.3.2.tar.gz -C /usr/local 修改解压后的文件名 cd??/usr/local/ mv elasticsearch-6.3.2 elasticsearch 创建用户并授权 [root@localhost elasticsearch]# useradd elasticsearch [root@localhost elasticsearch]# passwd elasticsearch 更改用户 elasticsearch 的密码 。 新的 密码: 无效的密码: 密码少于 8 个字符 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@localhost elasticsearch]# chown -R elasticsearch:elasticsearch /usr/local/elasticsearch 3、操作系统调优 操作系统以及 JVM 调优主要是针对安装 elasticsearch 的机 器。 #修改vim??/etc/sysctl.conf文件,添加以下内容 ? fs.file-max=655360 vm.max_map_count = 262144 #fs.file-max主要是配置系统最大打开文件描述符数,建议修改为655360或者更高 #vm.max_map_count影响Java线程数量,用于限制一个进程可以拥有的VMA(虚拟内存区域)的大小,系统默认是65530,建议修改成262144或者更高 #添加如下内容到/etc/security/limits.conf文件中 *????????soft????nproc???????????20480 *????????hard????nproc???????????20480 *????????soft????nofile??????????655360 *????????hard????nofile??????????655360 *????????soft????memlock?????????unlimited *????????hard????memlock?????????unlimited ? 调整进程最大打开文件描述符(nofile)、最大用户进程数(nproc)和最大锁定内存地址空间(memlock) 修改/etc/security/limits.d/20-nproc.conf文件(centos7.x系统),将: *??????????soft????nproc?????4096 修改为: *??????????soft????nproc? ? ?40960 或者直接删除/etc/security/limits.d/20-nproc.conf文件也行。 #使用sysctl -p 使/etc/sysctl.conf文件生效 使用exit退出登录使文件生效 查看配置文件是否生效 [root@localhost ~]# ulimit -a core file size??????????(blocks, -c) 0 data seg size???????????(kbytes, -d) unlimited scheduling priority?????????????(-e) 0 file size???????????????(blocks, -f) unlimited pending signals?????????????????(-i) 3795 max locked memory???????(kbytes, -l) unlimited max memory size?????????(kbytes, -m) unlimited open files??????????????????????(-n) 655360 pipe size????????????(512 bytes, -p) 8 POSIX message queues?????(bytes, -q) 819200 real-time priority??????????????(-r) 0 stack size??????????????(kbytes, -s) 8192 cpu time???????????????(seconds, -t) unlimited max user processes??????????????(-u) 20480 virtual memory??????????(kbytes, -v) unlimited file locks??????????????????????(-x) unlimited 4、JVM调优 JVM调优主要是针对elasticsearch的JVM内存资源进行优化,elasticsearch的内存资源配置文件为jvm.options, 此文件位于 / usr /local/ elasticsearch / config 目录下,打开此文件 ,修改如下内容: JVM内存默认 为2g,? 一般设置为服务器物理内存的一半最佳。 -Xms2g -Xmx2g 5、配置elasticsearch elasticsearch 的配置文件均在 elasticsearch 根目录下的 config 文件夹,这里是 / usr /local/ elasticsearch / config 目录,主要有 jvm.options 、 elasticsearch.yml 和 log4j2.properties 三个主要配置文件 。这 里重点介绍 elasticsearch.yml 一些重要的配置项及其含义 。 创建索引数据的存储路径 mkdir -p /data1/elasticsearch mkdir -p /data2/elasticsearch 这里配置的elasticsearch.yml文件内容如下: cluster.name: elkbigdata node.name: server1 node.master: true node.data: true path.data: /data1/elasticsearch,/data2/elasticsearch path.logs: /usr/local/elasticsearch/logs bootstrap.memory_lock: true network.host: 0.0.0.0 http.port: 9200 discovery.zen.minimum_master_nodes: 1 discovery.zen.ping.unicast.hosts: ["192.168.126.128:9300","192.168.126.129:9300"] elasticsearch.yml文件注释 (1)cluster.name: elkbigdata ?????????配置elasticsearch集群名称,默认是elasticsearch。这里修改为elkbigdata,elasticsearch会自动发现在同一网段下的集群名为elkbigdata的主机。 (2)node.name: server1 ???????节点名,任意指定一个即可,这里是server1,我们这个集群环境中有三个节点,分别是server1、server2和server3,记得根据主机的不同,要修改相应的节点名称。 (3)node.master: true ?????????指定该节点是否有资格被选举成为master,默认是true,elasticsearch集群中默认第一台启动的机器为master角色,如果这台服务器宕机就会重新选举新的master。 (4)node.data: true ????????指定该节点是否存储索引数据,默认为true,表示数据存储节点,如果节点配置node.master:false并且node.data: false,则该节点就是client node。这个client node类似于一个“路由器”,负责将集群层面的请求转发到主节点,将数据相关的请求转发到数据节点。 (5)path.data:/data1/elasticsearch,/data2/elasticsearch ????????设置索引数据的存储路径,默认是elasticsearch根目录下的data文件夹,这里自定义了两个路径,可以设置多个存储路径,用逗号隔开。 (6)path.logs: /usr/local/elasticsearch/logs ????????设置日志文件的存储路径,默认是elasticsearch根目录下的logs文件夹 (7)bootstrap.memory_lock: true ??????????此配置项一般设置为true用来锁住物理内存。??linux下可以通过“ulimit -l” 命令查看最大锁定内存地址空间(memlock)是不是unlimited (8)network.host: 0.0.0.0 ???????此配置项用来设置elasticsearch提供服务的IP地址,默认值为0.0.0.0,此参数是在elasticsearch新版本中增加的,此值设置为服务器的内网IP地址即可。 (9)http.port: 9200 ????????设置elasticsearch对外提供服务的http端口,默认为9200。其实,还有一个端口配置选项transport.tcp.port,此配置项用来设置节点间交互通信的TCP端口,默认是9300。 (10)discovery.zen.minimum_master_nodes: 1 ???????配置当前集群中最少的master节点数,默认为1,也就是说,elasticsearch集群中master节点数不能低于此值,如果低于此值,elasticsearch集群将停止运行。在三个以上节点的集群环境中,建议配置大一点的值,推荐2至4个为好。 (11)discovery.zen.ping.unicast.hosts: ["172.16.213.37:9300","172.16.213.78:9300"] ?????????设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。这里需要注意,master节点初始列表中对应的端口是9300。即为集群交互通信端口。 9200与9300端口的区别: 9200 是ES节点与外部通讯使用的端口。它是http协议的RESTful接口 9300是ES节点之间通讯使用的端口。它是tcp通讯端口,集群间和TCPclient都走的它。 启动es,并将它作为后台守护进程运行 #启动路径如下 [root@localhost elasticsearch]# pwd /usr/local/elasticsearch [root@localhost elasticsearch]# bin/elasticsearch -d 注意:虽然启动没有报错,但使用ps ef |grep java,并没有发现启动进程 查看日志 不能以root用户运行es 以之前创建的普通用户启动。 [root@localhost local]# su - elasticsearch [elasticsearch@localhost ~]$ cd /usr/local/elasticsearch/ [elasticsearch@localhost elasticsearch]$ ls bin?????lib??????????logs?????NOTICE.txt??README.textile config??LICENSE.txt??modules??plugins [elasticsearch@localhost elasticsearch]$ bin/elasticsearch -d 将整个logs目录授权给普通用户 [root@localhost ~]# cd /usr/local/ [root@localhost local]# [root@localhost local]# cd elasticsearch/ [root@localhost elasticsearch]# ls bin??config??lib??LICENSE.txt??logs??modules??NOTICE.txt??plugins??README.textile [root@localhost elasticsearch]# chown -R elasticsearch:elasticsearch logs [root@localhost elasticsearch]# ll 总用量 448 drwxr-xr-x.??3 elasticsearch elasticsearch???4096 4月??16 21:44 bin drwxr-xr-x.??2 elasticsearch elasticsearch????178 4月??17 11:08 config drwxr-xr-x.??2 elasticsearch elasticsearch???4096 7月??20 2018 lib -rw-r--r--.??1 elasticsearch elasticsearch??13675 7月??20 2018 LICENSE.txt drwxr-xr-x.??2 elasticsearch elasticsearch????244 4月??17 11:08 logs drwxr-xr-x. 17 elasticsearch elasticsearch???4096 7月??20 2018 modules -rw-r--r--.??1 elasticsearch elasticsearch 416018 7月??20 2018 NOTICE.txt drwxr-xr-x.??2 elasticsearch elasticsearch??????6 7月??20 2018 plugins -rw-r--r--.??1 elasticsearch elasticsearch???8511 7月??20 2018 README.textile [root@localhost elasticsearch]# 最后可以重启一下 检验elasticsearch是否安装成功 curl http://192.168.126.128:9200/
6.5 、安装并配置 ZooKeeper 集群 注意:先要按之前要求装好JAVA环境,这里就不展示了 1、解压和重命名zookeeper [root@localhost ~]# tar -zxvf zookeeper-3.4.11.tar.gz -C /usr/local [root@localhost ~]# mv /usr/local/zookeeper-3.4.11??/usr/local/zookeeper 2、配置zookeeper zookeeper 的配置模板文件为 / usr /local/zookeeper/ conf / zoo_sample.cfg ,拷贝 zoo_sample.cfg 并重命名为 zoo.cfg ,重点配置如下内容: #源文件有对应的信息,可以直接注释掉复制下列信息 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper clientPort=2181 server.1=172.16.213.51:2888:3888 server.2=172.16.213.109:2888:3888 server.3=172.16.213.75:2888:3888 每个配置项含义如下: 每个配置项含义如下: ? tickTime:zookeeper使用的基本时间度量单位,以毫秒为单位,它用来控制心跳和超时。2000表示2 tickTime。更低的tickTime值可以更快地发现超时问题。 ? initLimit:这个配置项是用来配置Zookeeper集群中Follower服务器初始化连接到Leader时,最长能忍受多少个心跳时间间隔数(也就是tickTime) ??syncLimit:这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度最长不能超过多少个tickTime的时间长度 ? dataDir:必须配置项,用于配置存储快照文件的目录。需要事先创建好这个目录,如果没有配置dataLogDir,那么事务日志也会存储在此目录。 ? clientPort:zookeeper服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。 ? server.A=B:C:D:其中A是一个数字,表示这是第几个服务器;B是这个服务器的IP地址;C表示的是这个服务器与集群中的Leader服务器通信的端口;D 表示如果集群中的Leader服务器宕机了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 3、创建myid文件? vim /data/zookeeper/myid 在dataDir配置项指定的目录下创建myid文件, 这个文件里面只有一个数字,如果要写入1,表示第一个服务器,与zoo.cfg文本中的server.1中的1对应,以此类推,在集群的第二个服务器zoo.cfg配置文件中dataDir配置项指定的目录下创建myid文件,写入2,这个2与zoo.cfg文本中的server.2中的2对应。 Zookeeper在启动时会读取这个文件,得到里面的数据与zoo.cfg里面的配置信息比较,从而判断每个zookeeper server的对应关系 4、启动zookpeer服务器 /usr/local/zookeeper/bin ./zkServer.sh start 以同样方法安装部署另外几台zookpeer服务器。 Zookeeper 启动后,通过 jps 命令( jdk 内置命令)可以看到有一个 QuorumPeerMain 标识,这个就是 Zookeeper 启动的进程,前面的数字是 Zookeeper 进程的 PID 。 将启动路径添加到系统环境变量 / etc /profile中,在任意路径都可以执行“zkServer.sh? start”命令了 export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin #使刚修改的文件生效 source /etc/profile 接着在zookpeer服务器上安装kafka 1、解压并重命名 [root@localhost ~]# tar -zxvf kafka_2.10-0.10.0.1.tgz -C /usr/local [root@localhost ~]# mv /usr/local/kafka_2.10-0.10.0.1??/usr/local/kafka 2、配置kafka集群 kafka 的主配置文件为 / usr /local/ kafka / config / server.properties 修改文件以下内容 broker.id=1 listeners=PLAINTEXT://192.168.126.129:9092 log.dirs=/usr/local/kafka/logs num.partitions=6 log.retention.hours=60 log.segment.bytes=1073741824 zookeeper.connect=192.168.126.129:2181? ? #后面可以添加多几台服务器用逗号分开 auto.create.topics.enable=true delete.topic.enable=true 3、配置详解 * broker.id:每一个broker在集群中的唯一表示,要求是正数。当该服务器的IP地址发生改变时,broker.id没有变化,则不会影响consumers的消息情况。 * llisteners:设置kafka的监听地址与端口,可以将监听地址设置为主机名或IP地址,这里将监听地址设置为IP地址。 * llog.dirs:这个参数用于配置kafka保存数据的位置,kafka中所有的消息都会存在这个目录下。可以通过逗号来指定多个路径, kafka会根据最少被使用的原则选择目录分配新的parition。需要注意的是,kafka在分配parition的时候选择的规则不是按照磁盘的空间大小来定的,而是根据分配的 parition的个数多小而定。 * lnum.partitions:这个参数用于设置新创建的topic有多少个分区,可以根据消费者实际情况配置,配置过小会影响消费性能。这里配置6个。 * llog.retention.hours:这个参数用于配置kafka中消息保存的时间,还支持log.retention.minutes和 log.retention.ms配置项。这三个参数都会控制删除过期数据的时间,推荐使用log.retention.ms。如果多个同时设置,那么会选择最小的那个。 * llog.segment.bytes:配置partition中每个segment数据文件的大小,默认是1GB,超过这个大小会自动创建一个新的segment file。 * lzookeeper.connect:这个参数用于指定zookeeper所在的地址,它存储了broker的元信息。 这个值可以通过逗号设置多个值,每个值的格式均为:hostname:port/path,每个部分的含义如下: ????*???hostname:表示zookeeper服务器的主机名或者IP地址,这里设置为IP地址。 ????*???port: 表示是zookeeper服务器监听连接的端口号。 ????*???/path:表示kafka在zookeeper上的根目录。如果不设置,会使用根目录。 * lauto.create.topics.enable:这个参数用于设置是否自动创建topic,如果请求一个topic时发现还没有创建, kafka会在broker上自动创建一个topic,如果需要严格的控制topic的创建,那么可以设置auto.create.topics.enable为false,禁止自动创建topic。 * ldelete.topic.enable:在0.8.2版本之后,Kafka提供了删除topic的功能,但是默认并不会直接将topic数据物理删除。如果要从物理上删除(即删除topic后,数据文件也会一同删除),就需要设置此配置项为true。 4、启动kafka #执行路径 [root@localhost bin]# pwd /usr/local/kafka/bin #放到后台启动,启动后,会在启动kafka的当前目录下生成一个nohup.out文件 [root@localhost bin]#nohup ./kafka-server-start.sh ../config/server.properties & 4、验证是否启动 同样样方式在两台服务器上安装配置zookpeer和kafka服务 5 、 kafka 集群基本命令操作 1 )显示 topic 列 表 ( 2 )创建一个 topic ,并指定 topic 属性(副本数、分区数等 ) ( 3 )查看某个 topic 的状 态 ( 4 )生产消 息 ( 5 )消费消 息 ( 6 )删除 topic
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |