#查看是否为固定ip cat /etc/sysconfig/network-scripts/ifcfg-ens33 #如果不是自己去网上查设置固定ip方法1.2、关闭防火墙
#查看防火墙状态,以下两种方式,任选其一 systemctl status firewalld service iptables status #暂时关闭防火墙,以下两种方式,任选其一 systemctl stop firewalld service iptables stop #永久关闭防火墙,以下两种方式,任选其一 systemctl disable firewalld chkconfig iptables off #重启防火墙,以下两种方式,任选其一 systemctl enable firewalld service iptables restart1.3、关闭SELinux
#查询SELinux状态 getenforce #设置SELinux 成为permissive模式,或enforcing模式,临时关闭(无需重启) setenforce 0 或 setenforce 1 #永久关闭(需要重启) 修改/etc/selinux/config 文件 将 SELINUX=enforcing 改为 SELINUX=disabled1.4、查看防火墙策略
iptables -nL1.5、清理源和下载源
rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum -y install wget wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo2、安装java环境 2.1、设置java环境变量
echo ' JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH ' >>/etc/profile.d/java.sh3、ElasticSearch部署 3.1、创建运行ES的普通用户,因为ES不能以root用户运行
useradd ela echo "密码" | passwd --stdin ela3.2、安装ES
#解压es安装包 tar zxvf /usr/local/src/elasticsearch-6.8.3.tar.gz -C /usr/local/3.3、配置ES
echo ' #集群名称,个节点配置相同集群名称 cluster.name: leyou-elk #节点名称,各节点配置不同 node.name: elk01 #表示该节点为主节点 Mater与data节点分离,当data节点大于三个的时候,建议责任分离 node.master: true #表示该节点为数据节点 node.data: true #数据存储目录 path.data: /data/elasticsearch/data #日志存储目录 path.logs: /data/elasticsearch/logs #内存锁定是否禁用交换 bootstrap.memory_lock: true #系统调用过滤器 bootstrap.system_call_filter: false #绑定节点ip network.host: 0.0.0.0 #rest api端口 http.port: 9200 #提供其他es服务节点的单点广播发现功能 #discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192"] #集群中可工作的具有master节点资格的最小数量,官方推荐(N/2)+1,其中N是具有master资格的节点的数量 #discovery.zen.minimum_master_nodes: 2 #节点在发现过程中的等待时间 #discovery.zen.ping_timeout: 150s #节点发现重试次数 #discovery.zen.fd.ping_retries: 10 #client.transport.ping_timeout: 60s #是否允许跨源REST请求,用于允许head插件访问es http.cors.enabled: true #允许的源地址 http.cors.allow-origin: "*" #xpack 插件的授权类型,basic是免费的,还有其他收费版本 xpack.license.self_generated.type: basic #是否开启安全验证 xpack.security.enabled: true #是否开启远程访问安全验证 xpack.security.transport.ssl.enabled: true http.cors.allow-headers: Authorization,Content-Type ' >>/usr/local/elasticsearch-6.8.3/config/elasticsearch.yml3.4、设置JVM堆大小
sed -i 's/-Xms2g/-Xms1g/' /usr/local/elasticsearch-6.8.3/config/jvm.options sed -i 's/-Xmx2g/-Xmx1g/' /usr/local/elasticsearch-6.8.3/config/jvm.options
注意:
1.确保堆内存的最大值与最小值得大小相同,防止程序在运行时改变堆内存大小。
2.如果系统内存足够大,将堆内存最大值和最小是设置为31g,因为有一个32g的性能瓶颈问题。
3.堆内存大小不要超过系统内存的50%
3.5、创建es数据及日志存储目录mkdir -pv /data/elasticsearch/data mkdir -pv /data/elasticsearch/logs3.6、修改安装目录及存储目录权限
chown -R ela:ela /data/elasticsearch chown -R ela:ela /usr/local/elasticsearch-6.8.33.7、系统优化
3.7.1、增加最大文件打开数
永久生效方法:
echo"*-nofile 65536" >> /etc/security/limits.conf
3.7.2、增加最大进程数
echo"*soft nproc 31717" >> /etc/security/limits.conf * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
3.7.3、最大内存映射数
echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p
3.7.4、启动如果报下列错误
memory locking requested for elasticsearch process but memory is not locked elasticsearch.yml bootstrap.memory_lock: false /etc/sysctl.conf文件 vm.swappiness=0 错误: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] 意思是elasticsearch用户拥有的客串建文件描述的权限太低,知道需要65536个 解决: 切换到root用户下面 vim /etc/security/limits.conf 在最后添加 * hard nofile 65536 * soft nofile 65536 重新启动elasticsearch,还是无效? 必须重新登录启动elasticsearch的账户才可以,例如我的账户名是elasticsearch,退出重新登录 另外*也可以换为启动elasticsearch的账户也可以, *代表所有,其实比较不合适 其实还会遇到另外一个问题,就是 max virtual memory areas areas vm.max_map_count [65530] is too low, increase to at least [262144] 意思是:elasticsearch用户拥有的内存权限太小了,至少需要262114,这个比较简单,也不需要重启,直接执行 sysctl -w vm.max_map_count=2621443.8、启动ES
su - ela cd /usr/local/elasticsearch-6.8.3 nohup bin/elasticsearch & #设置密码 ./bin/elasticsearch-setup-passwords interactive3.9、安装配置head监控插件
3.9.1、安装node
wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz tar zxvf node-v10.14.1-linux-x64.tar.gz -C /usr/local/ echo ' NODE_HOME=/usr/local/node-v10.14.1-linux-x64 PATH=$NODE_HOME/bin:$PATH export NODE_HOME PATH ' >> /etc/profile.d/node.sh source /etc/profile.d/node.sh node --version
3.9.2、下载head插件
wget http://github.com/mobz/elasticsearch-head/archive/master.zip unzip -d /usr/local/ master.zip
3.9.3、安装grunt
cd /usr/local/elasticsearch-head-master npm install -g grunt-cli grunt --version
3.9.4、修改head源代码
vi /usr/local/elasticsearch-head-master/Gruntfile.js #95行左右 connect: { server: { options: { port: 9100, base: '.', keepalive: true, houstname: '*' } } }
vi /usr/local/elasticsearch-head-master/_site/app.js #4374行左右 app.App = ui.AbstractWidget.extend({ defaults: { base_uri: null }, init: function(parent) { this._super(); this.prefs = services.Preferences.instance(); this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://head和es不在同一节点修改为es的ip地址:9200";
3.9.5、下载head必要的文件
wget http://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2 mkdir /tmp/phantomjs/ cp phantomjs-2.1.1-linux-x86_64.tar.bz2 /tmp/phantomjs/
3.9.6、运行head
cd /usr/local/elasticsearch-head-master/ npm install --registry=https://registry.npm.taobao.org nohup grunt server & #es加密码后插件访问格式 http://node1:9100/?auth_user=elastic&auth_password=changeme4、kibana部署 4.1、安装配置kibana
tar zxvf kibana-6.8.3-linux-x86_64.tar.gz -C /usr/local/ echo ' #服务端口 server.port: 5601 #kibana主机ip地址 server.host: "本机ip" #查询es节点的url elasticsearch.url: "http://esIp:9200" #kibana在elasticsearch中使用索引来存储保存的searches,visualizations和dashboards,默认.kibana kibana.index: ".kibana" #设置es的账号密码 elasticsearch.username: "kibana" elasticsearch.password: "密码" '>>/usr/local/kibana-6.8.3-linux-x86_64/config/kibana.yml4.2、启动
cd /usr/local/kibana-6.8.3-linux-x86_64 nohup ./bin/kibana &5、Kafka部署 5.1、安装配置ZK
wget http://archive.apache.org/dist/kafka/2.4.0/kafka_2.11-2.4.0.tgz tar zxvf kafka_2.11-2.4.0.tgz -C /usr/local/ sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.4.0/config/zookeeper.properties echo ' #zk数据存放目录 dataDir=/opt/data/zookeeper/data #zk日志存放目录 dataLogDir=/opt/data/zookeeper/logs #客户端连接zk服务端口 clientPort=2181 #zk服务器之间或客户端与服务器之间维持心跳的时间间隔 tickTime=2000 #允许follower(相对leaderer言的客户端)连接并同步到leader的初始化连接时间,以tickTime为单位,当初始化连接时间超过该值,则表示连接失败 initLimit=20 #leader与follower之间发送消息时,请求和应答时间长度,如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。 syncLimit=10 #2888是follower与leader交换信息的端口,3888是当leader挂了时用来执行选举时服务器相互通信的端口 server.1=ip:2888:3888 '>>/usr/local/kafka_2.11-2.4.0/config/zookeeper.properties5.2、创建data、log目录、myid文件
mkdir -p /opt/data/zookeeper/{data,logs} #每台kafka机器都要做成唯一id echo 1 > /opt/data/zookeeper/data/myid5.3、配置kafka
sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.4.0/config/server.properties echo ' #每个server需要单独配置,如果不配置系统会自动配置,需要和上一步id保持一致 broker.id=1 #监听地址 listeners=PLAINTEXT://ip:9092 #接收和发送网络信息的线程数 num.network.threads=3 #服务器由于处理请求的线程数,其中肯能包含磁盘I/O num.io.threads=8 #套接字服务器使用的发送缓冲区SO_SNDBUF socket.send.buffer.bytes=102400 #套接字服务器使用的接收缓冲区SO_RCVBUF socket.receive.buffer.bytes=102400 #套接字服务器将接收的请求的最大大小,防止OOM socket.request.max.bytes=104857600 #日志文件目录 log.dirs=/opt/data/kafka/logs #partitions数量 num.partitions=6 #启动是恢复日志,关闭是刷盘日志每个数据目录的线程的数量默认1 num.recovery.threads.per.data.dir=1 #片偏移量话题的复制因子,设置更高保证可用,为了保证有效的复制,偏移话题的复制因子是可配置的,在偏移话题的第一次请求的时候可用的broker的数量至少为复制因子的大小,否则要么话题创建失败,要目复制因子取可用broker的数量和配置复制因子的最小值 offsets.topic.replication.factor=2 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 #日志文件删除之前保留的时间,单位小时,默认168 log.retention.hours=168 #单位日志文件的大小默认1073741824 log.segment.bytes=536870912 #检查日志段以查看是否可以根据保留策略删除和他们的时间间隔 log.retention.check.interval.ms=300000 #zk主机地址,如果是机器已逗号隔开 zookeeper.connect=ip:2181 #连接到zk的超时时间 zookeeoer.connection.timeout.ms=6000 group.initial.rebalance.delay.ms=0 #以下密码配置 #使用的认证协议 security.inter.broker.protocol=SASL_PLAINTEXT #SASL机制 sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN ' >> /usr/local/kafka_2.11-2.4.0/config/server.properties #以下为配置密码 #在config下面新建kafka_client_jaas.conf文件内容如下 KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="admin"; }; #在config下面新建kafka_server_jaas.conf文件内容如下 KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="admin" user_admin="kafka"; }; #修改启动脚本 vim bin/kafka-server-start.sh # 最上面加上(路径改为自己的) export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka_2.11-2.4.0/config/kafka_server_jaas.conf" vim bin/kafka-console-producer.sh , vim bin/kafka-console-consumer.sh #最上面加上(路径改为自己的) export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka_2.11-2.4.0/config/kafka_client_jaas.conf" #config下consumer.properties和producer.properties添加命令 security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN5.4、创建log目录
mkdir -p /opt/data/kafka/logs5.5、配置其他节点
只需要把配置好的安装包分发到其他节点,然后修改zk的myid,kafka的broker.id和listeners就可以了
5.6、启动验证zk集群cd /usr/local/kafka_2.11-2.4.0/ nohup bin/zookeeper-server-start.sh config/zookeeper.properties & 安装nc yum -y install nc echo conf | nc 127.0.0.1 21815.7、启动验证kafka
cd /usr/local/kafka_2.11-2.4.0/ nohup bin/kafka-server-start.sh config/server.properties & #验证,创建topic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testtopic #查询创建的topic bin/kafka-topics.sh --zookeeper ip:2181 --list6、logstash部署 6.1、安装配置
tar zxvf logstash-6.8.3.tar.gz -C /usr/local/ mkdir -p /usr/local/logstash-6.8.3/etc/conf.d vi /usr/local/logstash-6.8.3/etc/conf.d/input.conf input{ kafka{ type => "leyou" codec => "json" topics => "leyou_item_log" decorate_events => true bootstrap_servers => "ip:9092" } } vi /usr/local/logstash-6.8.3/etc/conf.d/output.conf output{ if [type] == "leyou" { elasticsearch { hosts => ["ip"] index => 'leyou_item_log-%{+yyyy-MM-dd}' } } }6.2、启动
cd /usr/local/logstash-6.8.3 nohup bin/logstash -f etc/conf.d/ --config.reload.automatic &7、Filebeat部署 7.1、安装配置
tar zxvf filebeat-6.8.3-linux-x86_64.tar.gz -C /usr/local/ vi filebeat.yml filebeat.inputs: - type : log enabled: true paths: - /usr/local/leyou/ly-item/logs/app.log encoding: UTF-8 exclude_files: ['.gz$'] fields: leyou-log-type: leyou-app-log leyou-index-per-sys: false multiline.pattern: '^-d{4}-d{2}-d{2}' multiline.negate: true multiline.match: after multiline.max_lines: 500 output.kafka: enabled: true hosts: ['ip:9092'] topic: 'leyou_item_log' username: "kafka" password: "密码" max_retries:3 #最大重试次数 bulk_max_size: 2048 #在单个 Kafka 请求中批量处理的最大事件数。默认值为 2048。 timeout: 30s #超时前等待 Kafka 代理响应的秒数。默认值为 30(秒)。 broket_timeout: 10s #代理等待所需 ACK 数量的最长时间。默认为 10 秒。 channel_buffer_size: 256 #每个 Kafka 代理在输出管道中缓冲的消息数。默认值为 256。 keep_alive: 60 #活动网络连接的保持活动期。如果为 0,则保持连接被禁用。默认值为 0 秒。 required_acks: 1 #borker要求的 ACK 可靠性级别。0=无响应,1=等待本地提交,-1=等待所有副本提交。默认值为 1。注意:如果设置为 0,则 Kafka 不会返回任何 ACK。消息可能会在出错时静默丢失。 compression: gzip #设置输出压缩编解码器。必须是none,snappy,lz4和gzip其中一个。默认为gzip。 max_message_bytes: 1000000 #大于max_message_bytes的事件将被丢弃,确保Filebeat发出的事件小于max_message_bytes client_id : 'leyou-filebeats'7.2、启动
cd /usr/local/filebeat-6.8.3-linux-x86_64 nohup ./filebeat -e -c filebeat.yml &
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)