从源码构建安装Landoop kafka-connect-ui

背景

部署Landoop kafka-connect-ui最简单的办法还是通过docker来部署,我们之前的kafka-connect-ui就是通过docker部署的,但是,最近发现个问题:当使用docker部署且防火墙使用的是firewalld的情况下,就会出现端口冲突。
部署完kafka-connect-ui后,它是没有访问控制的,这样就会有安全问题,当我准备去通过nginx在前面加上基础验证时,我发现当我取消掉kafka-connect-ui端口的开放后它仍然可以被访问到。这样就无法只通过nginx访问kafka-connect-ui了。于是,本着改动最小的原则:直接通过原码构建安装kafka-connect-ui。

项目原地址
项目镜像地址

一、准备

如果在有外网的服务器上部署的话会方便很多,这里就主要以纯离线的方式部署。以及Landoop kafka-connect-ui也是一个比较老的项目了,安装过程中需要有一些注意的地方,写下这篇文章以作记录。

我们准备一台有外网的服务器以及需要部署kafka-connect-ui的应用服务器,为了后续表述方便有外网的服务器称为001服务器,应用服务器称为002服务器(可以通过虚拟机创建一个测试环境作为001服务器)。这里001服务器主要是用于下载资源,打包依赖。

二、安装

以下操作默认root权限操作,bower install 这里需要在项目目录中执行或者使用对应用户权限以免影响全局依赖

1、下载所需安装包

下载nodejs(只能下载14.x版本,其它版本启动kafka-connect-ui会有适配报错问题)

weget https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.xz

下载bower

weget https://registry.npmjs.org/bower/-/bower-1.8.12.tgz

安装git(bower 下载依赖项也需要用到git)

yum install -y git

下载源码

git clone https://github.com/Landoop/kafka-connect-ui.git
# 或
git clone https://gitcode.com/gh_mirrors/ka/kafka-connect-ui.git

将nodejs、bower安装包发送到002上

2、安装nodejs

在两台服务器上都安装nodejs
解压

tar -xvf node-v14.21.3-linux-x64 -C /usr/local/nodejs

配置环境变量

export NODE_HOME=/usr/local/nodejs
export PATH=$PATH:$NODE_HOME/bin
# 使生效
source /etc/profile

检查是否安装完成

node -v
npm -v

在001上设置npm镜像

npm config set registry https://mirrors.huaweicloud.com/repository/npm/

3、安装bower

在两台服务器上都安装bower

# 全局安装
npm install -g bower-1.8.12.tgz
# 检查是否安装完成
bower -v

4、安装http-server

bower也可以通过此种方式进行离线安装

在001上执行

# 全局安装
npm install -g http-server
# 检查是否安装成功
http-server -v

将http-server打包发送到002并安装

cd /usr/local/nodejs/lib/node_modules
# 压缩
tar -zcvf http-server.tar.gz ./http-server

将http-server.tar.gz上传到002

# 解压
tar -zxvf http-server.tar.gz -C /usr/local/nodejs/lib/node_modules/
# 创建软链接
ln -s /usr/local/nodejs/lib/node_modules/http-server/bin/http-server /usr/local/bin/http-server
# 检查是否安装成功
http-server -v

5、安装kafka-connect-ui依赖

在001上执行

cd kafka-connect-ui
npm install
bower install
# 安装完成后返回到上一层目录进行压缩
cd ../
tar -zcvf kafka-connect-ui.tar.gz ./kafka-connect-ui

6、配置并启动

将kafka-connect-ui.tar.gz传到002

# 解压到指定目录 如:
tar -zxvf kafka-connect-ui.tar.gz -C /app/path/

配置kafka-connect地址

cd /app/path/kafka-connect-ui
vim ./env.js

配置完成后通过http-server启动

# 指定端口启动
http-server -p 8000 .

7、解决跨域问题

我这里kafka-connect-ui和kafka-connect是在同一台机器,但端口不一样,启动kafka-connect-ui后,发现kafka-connect-ui访问不了kafka-connect,这是因为发生了跨域。由于我这里最后还需要通过nginx在kafka-connect-ui前加入基础验证,这里也通过nginx去解决跨域问题,以下是nginx和env.js部分配置的参考

nginx配置

location /kafka-connect-ui/ {add_header Access-Control-Allow-Origin $http_origin;add_header Access-Control-Allow-Credentials true;add_header Access-Control-Allow-Methods *;add_header Access-Control-Allow-Headers 'loginToken,nonce,randomStr,timeStamp,Content-Type,Authorization,User-Agent,Accept,Referer';add_header Access-Control-Expose-Headers 'loginToken';auth_basic "请输入用户名密码";  # 提示框中的标题auth_basic_user_file /usr/local/nginx/kafka_pwd/.htpasswd;  # 指向密码文件if ($request_method = 'OPTIONS') {return 204;}proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Port $server_port;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Cookie $http_cookie;proxy_pass http://002ip:8000/;}location /kafka-connect/ {add_header Access-Control-Allow-Origin $http_origin;add_header Access-Control-Allow-Credentials true;add_header Access-Control-Allow-Methods *;add_header Access-Control-Allow-Headers 'loginToken,nonce,randomStr,timeStamp,Content-Type,Authorization,User-Agent,Accept,Referer';add_header Access-Control-Expose-Headers 'loginToken';if ($request_method = 'OPTIONS') {return 204;}proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Port $server_port;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Cookie $http_cookie;proxy_pass http://002ip:8083/;}

env.js

//Change the URLs of the endpoints here
var clusters = [{NAME:"prod",KAFKA_CONNECT: "http://192.168.5.135/kafka-connect/",KAFKA_TOPICS_UI: "http://kafka-topics-ui.url",KAFKA_TOPICS_UI_ENABLED: false ,COLOR: "#141414"}
]

配置完成后再重启下kafka-connect-ui即可

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

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

相关文章

算法—动态规划

一、简介 动态规划(Dynamic Programming,简称 DP)是一种通过将原问题分解为若干个子问题来求解最优化问题的算法思想。动态规划常常用于解决那些可以被分解为更小的重叠子问题的场景。 与分治法的区别在于,分治法会将问题分解成独…

Android GO 版本锁屏声音无效问题

问题描述 Android go版本 在设置中打开锁屏音开关,息屏灭屏还是无声音 排查 vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\keyguard\KeyguardViewMediator.java private void setupLocked() {...String soundPath Settings.G…

使用 NVIDIA DALI 计算视频的光流

引言 光流(Optical Flow)是计算机视觉中的一种技术,主要用于估计视频中连续帧之间的运动信息。它通过分析像素在时间维度上的移动来预测运动场,广泛应用于目标跟踪、动作识别、视频稳定等领域。 光流的计算传统上依赖 CPU 或 GP…

Tomcat的安装即使用

Tomcat的概念 Tomcat服务器是Java语言开发的,免费的开放源代码的Web应用服务器。 Tomcat处理静态HTML的能力远不及Apache或者Nginx,通常是作为一个Servlet和JSP容器,单独运行在后端。 Tomcat是由三个功能组合而成: java servlet&…

Linux:进程(环境变量、程序地址空间)

目录 冯诺依曼体系结构 操作系统 设计操作系统的目的 操作系统的管理 进程 PCB fork 进程状态 进程状态查看 僵尸进程 孤儿进程 进程优先级 查看、修改进程优先级命令 竞争、独立、并行、并发 进程切换 活动队列和运行队列 活动队列 过期队列 active指针…

对于使用exe4j打包,出现“NoClassDefFoundError: BOOT-INF/classes”的解决方案

jar使用exe4j打包exe,出现NoClassDefFoundError: BOOT-INF/classes 注意选取的jar包是使用build,而不是maven中的install 本文介绍解决这个方法的方案 点击Project Structure 按照如图所示选择 选择main class,选择你要打的main 如果遇到/M…

SpringBoot 编程式事务使用

目录 1. 简介2. TransactionTemplate 方式3. TransactionManager 方式4. 事务传播行为5. 事务隔离级别6. 最佳实践7. 常见问题与解决方案 1. 简介 编程式事务管理是通过编写代码来管理事务,相对于声明式事务(Transactional注解)&#xff0…

uniapp连接蓝牙操作(蓝牙设备地锁)

介绍: 本文采用uni-app框架来创建一个简单的用户界面,用于搜索、连接和发送命令给蓝牙设备。 1.打开蓝牙适配器 function openBluetooth() {uni.openBluetoothAdapter({success() {uni.offBluetoothDeviceFound();// 监听新设备发现事件uni.onBlueto…

web:pc端企业微信登录-vue版

官方文档:developer.work.weixin.qq.com/document/pa… 不需要调用ww.register,直接调用ww.createWWLoginPanel即可创建企业微信登录面板 - 文档 - 企业微信开发者中心 (qq.com) 引入 //通过 npm 引入 npm install wecom/jssdk import * as ww from we…

登陆harbor发现证书是错误的, 那么如何更新harbor的证书呢

Error response from daemon: Get "https://172.16.21.35/v2/": tls: failed to verify certificate: x509: certificate is valid for 127.0.0.1, ::1, 172.16.21.30, not 172.16.21.35 版本 v2.10.1-b7b88476 不需要从头看, 直接看最下面的成功的证书创建 这里面首…

外观模式的理解和实践

外观模式(Facade Pattern)是一种常用的软件设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。该模式定义了一个高层的接口,使得子系统更容易使用。简单来说,外观模式就是通过引入一个外观角色…

excel使用笔记

1.工作表1计算工作表2某列的和 假设我们有两个工作表,分别命名为“Sheet1”和“Sheet2”,我们想要求和这两个工作表中A1到A**单元格的数据,可以在任意一个工作表的单元格中输入以下公式: SUM(Sheet1!A1:A10, Sheet2!A1:A10) SUM…

《应用导航设计:裂变式路由风暴来袭》——HarmonyOS开发项目时的Navigation路由奇妙使用

文章目录 应用导航设计引言概述场景示例基本实现推荐方案路由管理模块的实现页面跳转实现 业务实现中的关键点动态加载路由栈管理 应用导航设计 引言 在大型应用开发中,如何高效地设计应用导航,处理多模块间的路由跳转与解耦,始终是一个关键…

【腾讯云】AI驱动TDSQL-C Serveress 数据库技术实战营-如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图

欢迎来到《小5讲堂》 这是《腾讯云》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景效果图流程图创建数据库基本信息数据库配置设置密码控制台开启…

XSLT 编辑 XML

XSLT 编辑 XML 介绍 XSLT(可扩展样式表语言转换)是一种用于转换XML文档的语言。它允许开发人员将XML数据转换为其他格式,如HTML、PDF或纯文本。XSLT通过使用XPath查询来定位XML文档中的元素,并对这些元素应用转换规则。在本教程…

thinkphp8自带分页bootstrap

tp8引用的是bootstrap3.4.1这个版本&#xff1b; 前端结构&#xff1a; <ul class"pagination"><li><a href"/index.php?page4"></a></li><li><a href"/index.php?page1">1</a></li>…

win服务器的架设、windows server 2012 R2 系统的下载与安装使用

文章目录 windows server 2012 R2 系统的下载与安装使用1 windows server 2012 的下载2 打开 VMware 虚拟机软件&#xff08;1&#xff09;新建虚拟机&#xff08;2&#xff09;设置虚拟机&#xff08;3&#xff09;打开虚拟机 windows server 2012&#xff08;4&#xff09;进…

如何在谷歌浏览器中开启安全浏览

在数字化时代&#xff0c;网络安全变得愈发重要。作为全球最受欢迎的网络浏览器之一&#xff0c;谷歌浏览器提供了多种功能来保护用户的在线安全。本文将详细介绍如何在谷歌浏览器中开启安全浏览&#xff0c;并额外提供一些有用的页面滚动设置、地址栏快捷搜索和跟踪防护的相关…

djiango DRF的使用

djiango DRF的使用 一 、初始 DRF序列化环境安装环境配置数据模型定义定义DRF序列化模型对象 二 、DRF请求和响应请求对象&#xff08;Request objects&#xff09;响应对象&#xff08;Response objects&#xff09;状态码&#xff08;Status codes&#xff09;包装&#xff0…

如何使用 Python 连接 PostgreSQL 数据库?

在Python开发中&#xff0c;连接PostgreSQL数据库是一个常见的需求。 我们可以使用多种库来实现这一功能&#xff0c;其中最常用的是psycopg2。 下面我将详细介绍如何使用psycopg2来连接PostgreSQL数据库&#xff0c;并提供一些实际开发中的建议和注意事项。 1. 使用 psycop…