【Linux系统基础】(5)在Linux上集群化环境前置准备及部署Zookeeper、Kafka软件详细教程

在这里插入图片描述

集群化环境前置准备

介绍

在前面,我们所学习安装的软件,都是以单机模式运行的。

后续,我们将要学习大数据相关的软件部署,所以后续我们所安装的软件服务,大多数都是以集群化(多台服务器共同工作)模式运行的。

所以,在当前小节,我们需要完成集群化环境的前置准备,包括创建多台虚拟机,配置主机名映射,SSH免密登录等等。

部署

配置多台Linux虚拟机

安装集群化软件,首要条件就是要有多台Linux服务器可用。

我们可以使用VMware提供的克隆功能,将我们的虚拟机额外克隆出3台来使用。

  1. 首先,关机当前CentOS系统虚拟机(可以使用root用户执行init 0来快速关机)

  2. 新建文件夹

    image-20221025104157628

    文件夹起名为:虚拟机集群

  3. 克隆

    image-20221025104131303

    image-20221025104312091

    image-20221025104329109

    image-20221025104345484

    image-20221025104414576

    image-20221025104427160

    image-20221025104432927

    image-20221025104446044

  4. 同样的操作克隆出:node2和node3

    image-20221025104825204

  5. 开启node1,修改主机名为node1,并修改固定ip为:192.168.88.131

    # 修改主机名
    hostnamectl set-hostname node1# 修改IP地址
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    IPADDR="192.168.88.131"# 重启网卡
    systemctl stop network
    systemctl start network
    # 或者直接
    systemctl restart network
    
  6. 同样的操作启动node2和node3,

    修改node2主机名为node2,设置ip为192.168.88.132

    修改node2主机名为node3,设置ip为192.168.88.133

  7. 配置FinalShell,配置连接到node1、node2、node3的连接

    为了简单起见,建议配置root用户登录

准备主机名映射

  1. 在Windows系统中修改hosts文件,填入如下内容:

    如果同学们使用MacOS系统,请:

    1. sudo su -,切换到root
    2. 修改/etc/hosts文件
    192.168.88.131 node1
    192.168.88.132 node2
    192.168.88.133 node3
    
  2. 在3台Linux的/etc/hosts文件中,填入如下内容(3台都要添加

    192.168.88.131 node1
    192.168.88.132 node2
    192.168.88.133 node3
    

配置SSH免密登录

简介

SSH服务是一种用于远程登录的安全认证协议。

我们通过FinalShell远程连接到Linux,就是使用的SSH服务。

SSH服务支持:

  1. 通过账户+密码的认证方式来做用户认证
  2. 通过账户+秘钥文件的方式做用户认证

SSH可以让我们通过SSH命令,远程的登陆到其它的主机上,比如:

在node1执行:ssh root@node2,将以root用户登录node2服务器,输入密码即可成功登陆

或者ssh node2,将以当前用户直接登陆到node2服务器。

SSH免密配置

后续安装的集群化软件,多数需要远程登录以及远程执行命令,我们可以简单起见,配置三台Linux服务器之间的免密码互相SSH登陆

  1. 在每一台机器都执行:ssh-keygen -t rsa -b 4096,一路回车到底即可

  2. 在每一台机器都执行:

    ssh-copy-id node1
    ssh-copy-id node2
    ssh-copy-id node3
    
  3. 执行完毕后,node1、node2、node3之间将完成root用户之间的免密互通

配置JDK环境

后续的大数据集群软件,多数是需要Java运行环境的,所以我们为每一台机器都配置JDK环境。

JDK配置参阅:Tomcat安装部署环节。

关闭防火墙和SELinux

集群化软件之间需要通过端口互相通讯,为了避免出现网络不通的问题,我们可以简单的在集群内部关闭防火墙。

在每一台机器都执行

systemctl stop firewalld
systemctl disable firewalld

Linux有一个安全模块:SELinux,用以限制用户和程序的相关权限,来确保系统的安全稳定。

SELinux的配置同防火墙一样,非常复杂,课程中不多涉及,后续视情况可以出一章SELinux的配置课程。

在当前,我们只需要关闭SELinux功能,避免导致后面的软件运行出现问题即可,

在每一台机器都执行

vim /etc/sysconfig/selinux# 将第七行,SELINUX=enforcing 改为
SELINUX=disabled
# 保存退出后,重启虚拟机即可,千万要注意disabled单词不要写错,不然无法启动系统

添加快照

为了避免后续出现问题,在完成上述设置后,为每一台虚拟机都制作快照,留待使用。

补充命令 - scp

后续的安装部署操作,我们将会频繁的在多台服务器之间相互传输数据。

为了更加方面的互相传输,我们补充一个命令:scp

scp命令是cp命令的升级版,即:ssh cp,通过SSH协议完成文件的复制。

其主要的功能就是:在不同的Linux服务器之间,通过SSH协议互相传输文件。

只要知晓服务器的账户和密码(或密钥),即可通过SCP互传文件。

语法:

scp [-r] 参数1 参数2
- -r选项用于复制文件夹使用,如果复制文件夹,必须使用-r
- 参数1:本机路径 或 远程目标路径
- 参数2:远程目标路径 或 本机路径如:
scp -r /export/server/jdk root@node2:/export/server/
将本机上的jdk文件夹, 以root的身份复制到node2的/export/server/内
同SSH登陆一样,账户名可以省略(使用本机当前的同名账户登陆)如:
scp -r node2:/export/server/jdk /export/server/
将远程node2的jdk文件夹,复制到本机的/export/server/内# scp命令的高级用法
cd /export/server
scp -r jdk node2:`pwd`/    # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下
scp -r jdk node2:$PWD      # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下

Zookeeper集群安装部署

简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

除了为Hadoop和HBase提供协调服务外,Zookeeper也被其它许多软件采用作为其分布式状态一致性的依赖,比如Kafka,又或者一些软件项目中,也经常能见到Zookeeper作为一致性协调服务存在。

Zookeeper不论是大数据领域亦或是其它服务器开发领域,涉及到分布式状态一致性的场景,总有它的身影存在。

安装

Zookeeper是一款分布式的集群化软件,可以在多台服务器上部署,并协同组成分布式集群一起工作。

  1. 首先,要确保已经完成了集群化环境前置准备环节的全部内容

  2. 【node1上操作】下载Zookeeper安装包,并解压

    # 下载
    wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz# 确保如下目录存在,不存在就创建
    mkdir -p /export/server# 解压
    tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server
    
  3. 【node1上操作】创建软链接

    ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper
    
  4. 【node1上操作】修改配置文件

    vim /export/server/zookeeper/conf/zoo.cfgtickTime=2000
    # zookeeper数据存储目录
    dataDir=/export/server/zookeeper/data
    clientPort=2181
    initLimit=5
    syncLimit=2
    server.1=node1:2888:3888
    server.2=node2:2888:3888
    server.3=node3:2888:3888
    
  5. 【node1上操作】配置myid

    # 1. 创建Zookeeper的数据目录
    mkdir /export/server/zookeeper/data# 2. 创建文件,并填入1
    vim /export/server/zookeeper/data/myid
    # 在文件内填入1即可
    
  6. 【在node2和node3上操作】,创建文件夹

    mkdir -p /export/server
    
  7. 【node1上操作】将Zookeeper 复制到node2和node3

    cd /export/serverscp -r apache-zookeeper-3.5.9 node2:`pwd`/
    scp -r apache-zookeeper-3.5.9 node3:`pwd`/
    
  8. 【在node2上操作】

    # 1. 创建软链接
    ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper# 2. 修改myid文件
    vim /export/server/zookeeper/data/myid
    # 修改内容为2
    
  9. 【在node3上操作】

    # 1. 创建软链接
    ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper# 2. 修改myid文件
    vim /export/server/zookeeper/data/myid
    # 修改内容为3
    
  10. 【在node1、node2、node3上分别执行】启动Zookeeper

    # 启动命令
    /export/server/zookeeper/bin/zkServer.sh start		# 启动Zookeeper
    
  11. 【在node1、node2、node3上分别执行】检查Zookeeper进程是否启动

    jps# 结果中找到有:QuorumPeerMain 进程即可
    
  12. 【node1上操作】验证Zookeeper

    /export/server/zookeeper/zkCli.sh# 进入到Zookeeper控制台中后,执行
    ls /# 如无报错即配置成功
    

至此Zookeeper安装完成

Kafka集群安装部署

简介

Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。

同RabbitMQ一样,Kafka也是消息队列。不过RabbitMQ多用于后端系统,因其更加专注于消息的延迟和容错。

Kafka多用于大数据体系,因其更加专注于数据的吞吐能力。

Kafka多数都是运行在分布式(集群化)模式下,所以课程将以3台服务器,来完成Kafka集群的安装部署。

安装

  1. 确保已经跟随前面的视频,安装并部署了JDK和Zookeeper服务

    Kafka的运行依赖JDK环境和Zookeeper请确保已经有了JDK环境和Zookeeper

  2. 【在node1操作】下载并上传Kafka的安装包

    # 下载安装包
    wget http://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz
    
  3. 【在node1操作】解压

    mkdir -p /export/server			# 此文件夹如果不存在需先创建# 解压
    tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/# 创建软链接
    ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafka
    
  4. 【在node1操作】修改Kafka目录内的config目录内的server.properties文件

    cd /export/server/kafka/config
    # 指定broker的id
    broker.id=1
    # 指定 kafka的绑定监听的地址
    listeners=PLAINTEXT://node1:9092
    # 指定Kafka数据的位置
    log.dirs=/export/server/kafka/data
    # 指定Zookeeper的三个节点
    zookeeper.connect=node1:2181,node2:2181,node3:2181
    
  5. 【在node1操作】将node1的kafka复制到node2和node3

    cd /export/server# 复制到node2同名文件夹
    scp -r kafka_2.12-2.4.1 node2:`pwd`/
    # 复制到node3同名文件夹
    scp -r kafka_2.12-2.4.1 node3:$PWD
    
  6. 【在node2操作】

    # 创建软链接
    ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafkacd /export/server/kafka/config
    # 指定broker的id
    broker.id=2
    # 指定 kafka的绑定监听的地址
    listeners=PLAINTEXT://node2:9092
    # 指定Kafka数据的位置
    log.dirs=/export/server/kafka/data
    # 指定Zookeeper的三个节点
    zookeeper.connect=node1:2181,node2:2181,node3:2181
    
  7. 【在node3操作】

    # 创建软链接
    ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafkacd /export/server/kafka/config
    # 指定broker的id
    broker.id=3
    # 指定 kafka的绑定监听的地址
    listeners=PLAINTEXT://node3:9092
    # 指定Kafka数据的位置
    log.dirs=/export/server/kafka/data
    # 指定Zookeeper的三个节点
    zookeeper.connect=node1:2181,node2:2181,node3:2181
    
  8. 启动kafka

    # 请先确保Zookeeper已经启动了# 方式1:【前台启动】分别在node1、2、3上执行如下语句
    /export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties# 方式2:【后台启动】分别在node1、2、3上执行如下语句
    nohup /export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties 2>&1 >> /export/server/kafka/kafka-server.log &
    
  9. 验证Kafka启动

    # 在每一台服务器执行
    jps
    

    image-20221025174522487

测试Kafka能否正常使用

  1. 创建测试主题
# 在node1执行,创建一个主题
/export/server/kafka_2.12-2.4.1/bin/kafka-topics.sh --create --zookeeper node1:2181 --replication-factor 1 --partitions 3 --topic test
  1. 运行测试,请在FinalShell中打开2个node1的终端页面
# 打开一个终端页面,启动一个模拟的数据生产者
/export/server/kafka_2.12-2.4.1/bin/kafka-console-producer.sh --broker-list node1:9092 --topic test
# 再打开一个新的终端页面,在启动一个模拟的数据消费者
/export/server/kafka_2.12-2.4.1/bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic test --from-beginning

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/224123.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DN-DETR调试记录

先前的DN-DETR模型都是在服务器上运行的,后来在本地运行时出现了一些小问题,这篇博文则主要介绍DN-DETR模型在本地运行时所需要做的配置。 运行环境 首先DN-DETR的运行环境与DINO一致,这里就不再赘述了。 博主使用的本地配置是I7-13700H406…

CentOS7部署bitbucket7.21.20-postgresql版

文章目录 1.资源下载2.上传服务器3.赋予执行权限并执行安装4.执行安装5.访问Bitbucket6.Bitbucket安装页面配置6.1连接Jira应用程序到PostgreSQL6.1.1创建并配置PostgreSQL数据库6.1.2测试数据库连接 6.2授权6.2.1授权包6.2.1.1资源地址6.2.1.2上传到服务器 6.2.2停止bitbucket…

Linux ContOS7 日志管理(rsyslog)

目录 01. rsyslog 记录日志程序 02.日志文件 03.日志等级 Linux 日志文件是记录 Linux 系统运行信息的文件。它们类似于人类的日记,记录了系统的各种活动,如用户登录、进程启动、错误消息等。 Linux 日志文件通常存储在 /var/log/ 目录中。该目录包含…

顺序表的实现

目录 一. 数据结构相关概念​ 二、线性表 三、顺序表概念及结构 3.1顺序表一般可以分为: 3.2 接口实现: 四、基本操作实现 4.1顺序表初始化 4.2检查空间,如果满了,进行增容​编辑 4.3顺序表打印 4.4顺序表销毁 4.5顺…

vmware安装中标麒麟高级服务器操作系统 V7.0

vmware安装中标麒麟高级服务器操作系统 V7.0 1、下载中标麒麟高级服务器操作系统 V7.0镜像2、安装中标麒麟高级服务器操作系统 V7.02.1、新建虚拟机2.2、安装虚拟机 3、配置中标麒麟高级服务器操作系统 V7.03.1、登录系统3.2、配置静态IP地址 和 dns3.3、查看磁盘分区3.4、查看…

Java网络爬虫拼接姓氏,名字并写出到txt文件(实现随机取名)

目录 1.爬取百家姓1.爬取代码2.爬取效果 2.爬取名字1.筛选男生名字2.筛选女生名字 3.数据处理(去除重复)4.拼接数据5.将数据写出到文件中 1.爬取百家姓 目标网站,仅作为实验目的。 ①爬取姓氏网站: https://hanyu.baidu.com/shic…

【OAuth2】授权框架的四种授权方式详解

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《OAuth 2》。🎯🎯 &#x1…

经典文献阅读之--RenderOcc(使用2D标签训练多视图3D Occupancy模型)

0. 简介 3D占据预测在机器人感知和自动驾驶领域具有重要的潜力,它将3D场景量化为带有语义标签的网格单元。最近的研究主要利用3D体素空间中的完整占据标签进行监督。然而,昂贵的注释过程和有时模糊的标签严重限制了3D占据模型的可用性和可扩展性。为了解…

Netty-4-网络编程模式

我们经常听到各种各样的概念——阻塞、非阻塞、同步、异步,这些概念都与我们采用的网络编程模式有关。 例如,如果采用BIO网络编程模式,那么程序就具有阻塞、同步等特质。 诸如此类,不同的网络编程模式具有不同的特点&#xff0c…

​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化

2022年亚马逊云科技re:Invent盛会于近日在拉斯维加斯成功召开,吸引了众多业界精英和创新者。亚马逊云科技边缘服务副总裁Jan Hofmeyr在演讲中分享了关于亚马逊云科技海外服务器边缘计算的最新发展和创新成果,引发与会者热烈关注。 re:Invent的核心主题是…

VMware虚拟机的安装配置

目录 一. VMware虚拟机的安装 二. VMware配置虚拟机 三. VMware安装windows server 2012 一. VMware虚拟机的安装 1. 双击安装,点击下一步 2. 勾选接受许可,点击下一步 3. 选择安装位置,点击下一步 4. 用户体验设置(可选&#…

2024年PMP考试新考纲-PMBOK第七版-项目管理原则真题解析(续3)

马上就要进入2024年了,要参加2024年PMP一季度考试的小伙伴可以准备起来了。2024年的PMP考试将继续采用新考试大纲,考试内容包括PMBOK第六版、PMBOK第七版和敏捷实践指南,而且敏捷(或者叫混合)的项目环境将占比超过50%&…

Python的基本数据类型和数据类型的转换

TOC 数据类型 类型查看 type 可以使用type内置函数查看变量所指的对象类型 a1 b1.0 c"1" d1, e[1] f{1:1} g{1}print(type(a)) print(type(b)) print(type(c)) print(type(d)) print(type(e)) print(type(f)) print(type(g))isinstance **如字面意思,isinstance()…

linux运行可执行文件,通过c语言调用java的main方法

前言&#xff1a;以前一直在做Android开发&#xff0c;在某本书上看过一句话“Android上面不只有App类的程序可以运行&#xff0c;能在linux下运行的程序&#xff0c;也可以在Android上面运行” 一.编写C语言部分代码 1.定义java.h头文件 #include <jni.h>#ifndef _JAV…

【微服务】springboot整合kafka-stream使用详解

目录 一、前言 二、kafka stream概述 2.1 什么是kafka stream 2.2 为什么需要kafka stream 2.2.1 对接成本低 2.2.2 节省资源 2.2.3 使用简单 2.3 kafka stream特点 2.4 kafka stream中的一些概念 2.5 Kafka Stream应用场景 三、环境准备 3.1 搭建zk 3.1.1 自定义d…

制作自己的 Docker 容器

软件开发最大的麻烦事之一&#xff0c;就是环境配置。用户必须保证操作系统的设置&#xff0c;各种库和组件的安装&#xff0c;只有它们都正确&#xff0c;软件才能运行。docker从根本上解决问题&#xff0c;软件安装的时候&#xff0c;把原始环境一模一样地复制过来。 以 koa-…

RHCE9学习指南 第9章 权限管理

9.1 所有者所属组 为了了解所有者和所属组的概念&#xff0c;我们先看图9-1。 图9-1 用房子来帮助理解所有者和所属组 张老板是公司老板&#xff0c;买了一套房作为员工宿舍给A部门的员工居住。张老板是房主&#xff0c;所以他对房子具有很多权限&#xff0c;A部门员工只能具…

SuperMap iServer发布的ArcGIS REST 地图服务如何通过ArcGIS API加载

作者&#xff1a;yx 文章目录 一、发布服务二、代码加载三、结果展示 一、发布服务 SuperMap iServer支持将地图发布为ArcGIS REST地图服务&#xff0c;您可以在发布服务时直接勾选ArcGIS REST地图服务&#xff0c;如下图所示&#xff1a; 也可以在已发布的地图服务中&#x…

【量化金融】证券投资学

韭菜的自我修养 第一章&#xff1a; 基本框架和概念1.1 大盘底部形成的技术条件1.2 牛市与熊市1.3 交易系统1.3.1 树懒型交易系统1.3.2 止损止损的4个技术 第二章&#xff1a;证券家族4兄弟2.1 债券&#xff08;1&#xff09;债券&#xff0c;是伟大的创新&#xff08;2&#x…