搭建elk kafka 集群

三台ES的集群

cd /opt
 
mkdir elasticsearch
 
rz   #上传es的压缩包
 
tar -zxvf elasticsearch-7.8.1-linux-x86_64.tar #解压
 
vim /etc/sysctl.conf   #修改内核参数
vm.max_map_count=655360  #在文件最后加入
:wq  #保存退出
 
sysctl -p  #使配置生效
 
vim /opt/elasticsearch/elasticsearch-7.8.1/config/elasticsearch.yml  #修改配置文件
cluster.name: my-application #集群名称
 
node.name: master   #主master  另外两台slave1 slave2

node.master: true #具备竞选资格

node.data: true
 
path.data: /opt/elasticsearch/elasticsearch-7.8.1/data #数据存放路径
 
path.logs: /opt/elasticsearch/elasticsearch-7.8.1/logs #日志存放路径
 
network.host: 0.0.0.0 #允许连接ElasticSearch的ip,0.0.0.0表示所有ip
 
http.port: 9200 #端口号
 
discovery.seed_hosts: ["es1IP", "es2IP", "es3IP"]

cluster.initial_master_nodes: ["master", "slave1 ","slave2"]
:wq  #保存退出
 
adduser es #添加新用户 root用户启动会失败
 
passwd es  #然后给创建的用户加密码  输入两次密码.
 
chown -R es /opt/elasticsearch/  #给新建的es赋权限
 
vim /etc/security/limits.conf  #修改资源参数,增加配置,文件打开数太小限制.用户退出后重新登录生效
es soft nofile 65536
 
es hard nofile 131072
 
root soft nproc 65536
 
root hard nproc 131072
:wq  #保存退出
 
su es #切换到es用户启动服务,root用户启动会报错,
 
cd /opt/elasticsearch/elasticsearch-7.8.1/bin/  #cd到启动目录
 
./elasticsearch -d #后台启动elasticsearch
 
curl 本机IP:9200 #验证
#查看集群的健康信息
curl '任意esIP:9200/_cluster/health?pretty'

#查看集群的详细信息
curl ' 任意esIP:9200/_cluster/state?pretty'

在ES的master服务器安装Kibana

cd /opt
 
mkdir kibana
 
rz   #上传kibana的压缩包
 
tar -zxvf kibana-7.8.1-linux-x86_64.tar #解压
 
vim kibana-7.7.0-linux-x86_64/config/kibana.yml  #修改配置文件
server.port:5601  #一定不要和ES的端口号一致,默认为5601
 
server.host: "0.0.0.0" #监听IP
 
elasticsearch.hosts: ["http://ES主机IP1:9200","http://ES主机IP2:9200","http://ES主机IP3:9200"]   #一定要带双引号和http://

i18n.locale: "zh-CN" #中文UI

启动kibana

cd /opt/kibana/kibana-7.7.0-linux-x86_64/bin

nohup ./kibana &

停止kibana方法

# 先根据端口号找到进程
fuser -n tcp 5601
# 获取进程id后杀死进程(假设进程号是1111)
kill -9 1111

另外三台服务器安装kafka

cd /opt
 
mkdir kafka
 
rz   #上传kafka的压缩包
 
tar -zxvf  kafka_2.13-2.6.0.tgz
cd kafka_2.13-2.6.0
 
vim config/zookeeper.properties  #编辑配置文件
dataDir=/opt/kafka/kafka_2.13-2.6.0/data   #事先建好
 
dataLogDir=/opt/kafka/kafka_2.13-2.6.0/log  #事先建好
 
clientPort=2181

maxClientCnxns=1024

#这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心
tickTime=2000  

initLimit=20

syncLimit=10

#2888 端口:表示的是这个服务器与集群中的 Leader 服务器交换信息的端口。 3888 端口:表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader ,而这个端口就是用来执行选举时服务器相互通信的端口。
server.1=kafka1IP:2888:3888

server.2=kafka2IP:2888:3888

server.3=kafka3IP:2888:3888
 
:wq #保存退出

mkdir /opt/kafka/kafka_2.13-2.6.0/data

echo 1 > /opt/kafka/kafka_2.13-2.6.0/data/myid   #另两台机器分别输入2/3,每台机器id不同即可
mkdir -p /opt/kafka/kafka_2.13-2.6.0/kafka-logs

vim /opt/kafka/kafka_2.13-2.6.0/config/server.properties
broker.id=1                 #ID唯一,填数字,其他两台为2,3
port=9092
host.name=本机ip               #本机ip
log.dirs=/opt/kafka/kafka_2.13-2.6.0/kafka-logs       #数据存放目录,不是日志目录
num.partitions=16               #每个topic的默认分区数
log.retention.hours=168             #过期时间,默认为1周
zookeeper.connect=kafka1IP:2181,kafka2IP:2181,kafka3IP:2181                #zookeeper ip及端口
vim /opt/kafka/kafka_2.13-2.6.0/zk_kafka #制作kafka zk 脚本
#!/bin/bash
#chkconfig: 2345 55 24
#description: zookeeper and kafka service manager

BASE_DIR=/opt/kafka/kafka_2.13-2.6.0
SERVICE=$1

START_ZK()
{
    cd $BASE_DIR
    nohup $BASE_DIR/bin/zookeeper-server-start.sh $BASE_DIR/config/zookeeper.properties &>/dev/null &
}
STOP_ZK()
{
    cd $BASE_DIR
    nohup $BASE_DIR/bin/zookeeper-server-stop.sh &>/dev/null &
}
START_KAFKA()
{
    cd $BASE_DIR
    nohup $BASE_DIR/bin/kafka-server-start.sh $BASE_DIR/config/server.properties &>/dev/null &
}
STOP_KAFKA()
{
    cd $BASE_DIR
    nohup $BASE_DIR/bin/kafka-server-stop.sh &>/dev/null &
}

if [ -z "$1" ];
then
    echo $"Usage: $0 {zookeeper|kafka} {start|stop|restart}"
    exit 0
else
    if [ "$1" != "zookeeper" ] && [ "$1" != "kafka" ];
    then
        echo $"Usage: $0 {zookeeper|kafka} {start|stop|restart}"
        exit 1
    fi
fi

START()
{
    if [ "$SERVICE" = "zookeeper" ];
    then
        START_ZK
        if [ $? -eq 0 ];
        then
            echo -e "\033[32m Start $SERVICE OK. \033[0m"
        fi
    else
        START_KAFKA
        if [ $? -eq 0 ];
        then
            echo -e "\033[32m Start $SERVICE OK. \033[0m"
        fi
    fi
}

STOP()
{
    if [ "$SERVICE" = "zookeeper" ];
    then
        STOP_ZK
        if [ $? -eq 0 ];
        then
            echo -e "\033[32m Stop $SERVICE OK. \033[0m"
        fi
    else
        STOP_KAFKA
        if [ $? -eq 0 ];
        then
            echo -e "\033[32m Stop $SERVICE OK. \033[0m"
        fi
    fi
}

case "$2" in
    start)
        START
        ;;
    stop)
        STOP
        ;;
    restart)
        STOP
        sleep 2
        START
        ;;
    *)
        echo $"Usage: $0 {zookeeper|kafka} {start|stop|restart}"
        exit 1
        ;;
esac
exit 
chmod +x /opt/kafka/kafka_2.13-2.6.0/zk_kafka

sh zk_kafka zookeeper start  #启动zk

netstat -lntp | grep -E "2181|2888|3888"                      #检查端口,拥有2888端口为leader

sh zk_kafka kafka start #启动kafka
/opt/kafka/kafka_2.13-2.6.0/bin/kafka-topics.sh --create --zookeeper kafkaIP1:2181 --replication-factor 3 --partitions 1 --topic test                     #测试创建test主题 注:factor大小不能超过broker的个数

/opt/kafka/kafka_2.13-2.6.0/bin/kafka-topics.sh --list --zookeeper kafkaIP2:2181  #查看test主题

/opt/kafka/kafka_2.13-2.6.0/bin/kafka-console-producer.sh --broker-list kafkaIP1:9092 --topic behavior  #生产者

/opt/kafka/kafka_2.13-2.6.0/bin/kafka-console-consumer.sh --bootstrap-server kafkaIP2:9092 --topic behavior --from-beginning   #消费者

单独启动zk方法

bin/zookeeper-server-start.sh config/zookeeper.properties  #配置后直接在kafka_2.13-2.6.0目录启动zookeeper

单独启动kafka方法

bin/kafka-server-start.sh config/server.properties  #在kafka_2.13-2.6.0目录启动kafka

安装kafka的服务器再安装logstash

cd /opt
 
mkdir logstash
 
rz   #上传logstash的压缩包
 
tar -zxvf logstash-7.8.1.tar.gz #解压
 
cd logstash-7.8.1
 
mkdir etc  #创建etc文件夹
 
cd etc
 
vim logstash_out_es  创建logstash_out_es文件并编辑
input {
    kafka {
    # logstash 导出数据解码方式
    codec => "plain"
    # 消费组
    group_id => "kafka_elk_group"
    # 消费者标识
    topics => "behavior"
    # 连接kafka集群配置
    bootstrap_servers => "kafkaIP1:9092,kafkaIP2:9092,kafkaIP3:9092"
    # 消费起始位置
    auto_offset_reset => "earliest"
    # 消费者线程数
    consumer_threads => 5
  }
}
output {
    # 导入elasticsearch
    elasticsearch {
    # elasticsearch 集群地址,多个地址以逗号隔开
    hosts => ["esIP1:9200","esIP2:9200","esIP3:9200"]
    # 指定数据导入elasticsearch格式
    codec => "plain"
    # 创建索引 topics+时间
    index => "behavior-%{+YYYY.MM.dd}"
  }
}
:wq  #保存退出
 
cd ../bin  #回到logstash-7.8.1/bin 目录执行启动命令
 
./logstash -f ../etc/logstash_out_es  #启动logstash  

参考

https://blog.csdn.net/ljx1528/article/details/100031330

https://blog.csdn.net/miss1181248983/article/details/90182403

https://blog.csdn.net/miss1181248983/article/details/89384990

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值