从源码构建安装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即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式12:状态模式

系列总链接:《大话设计模式》学习记录_net 大话设计-CSDN博客 参考:设计模式之状态模式 (C 实现)_设计模式的状态模式实现-CSDN博客 1.概述 状态模式允许一个对象在其内部状态改变时改变其行为。对象看起来像是改变了其类。使用状态模式可以将状态的相…

如何使用 Wireshark:从入门到进阶的网络分析工具

简述 Wireshark 是全球最受欢迎的网络协议分析工具,它帮助用户捕获和分析网络流量,诊断网络问题,排查安全漏洞,甚至恢复丢失的数据文件。作为一名网络工程师、安全专家、甚至是开发者,Wireshark 都是你必须掌握的工具…

100个问题学langchain入门(2/10)

问题 11 在 LangChain 中,如何将文档转化为向量以存储到 Vectorstore 中?具体使用了哪些技术或工具? 在 LangChain 中,将文档转化为向量以存储到 Vectorstore 中,主要通过以下步骤和技术完成: 转化流程&a…

C#winform引入DLL,DLL嵌入exe

C#winform将DLL嵌入exe 1 项目引入DLL1.1 项目-鼠标右击-点击添加引用;1.2 点击“浏览”;1.3 添加选中DLL1.4 勾选引入的DLL,点击“确定”1.5 添加成功后 2 DLL嵌入exe2.1 打开引入DLL属性窗口2.2 将“复制本地”项设为“false”2.3 双击打开…

828华为云征文 | 华为云Flexus云服务器X实例搭建企业内部VPN私有隧道,以实现安全远程办公

VPN虚拟专用网络适用于企业内部人员流动频繁和远程办公的情况,出差员工或在家办公的员工利用当地ISP就可以和企业的VPN网关建立私有的隧道连接。 通过拨入当地的ISP进入Internet再连接企业的VPN网关,在用户和VPN网关之间建立一个安全的“隧道”&#xff…

wxpyton+wxFormBuilder加法运算示例

wxpythonwxFormBuilder加法运算示例 在wxFormBuilder里设计一个窗体,生成如下代码:calc_From.py 放在lib文件夹下面 import gettext import wx import wx.xrc _ gettext.gettext class MyFrame1(wx.Frame):def __init__(self, parent):wx.Frame.__init…

【AI驱动的数据结构:包装类的艺术与科学】

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 包装类装箱和拆箱阿里巴巴面试题 包装类 在Java中基本数据类型不是继承来自Object,为了…

springBoot Maven 剔除无用的jar引用

目录 Used undeclared dependencies found Unused declared dependencies found 当项目经过一段时间的开发和维护后,经常会遇到项目打包速度变慢的问题。这通常与项目中包含大量的jar依赖有关,这些依赖之间的关系错综复杂。这种情况在项目维护过程中是…

电脑玩《刺客信条》时中,遇到找不到d3dx9_42.dll的问题是什么原因?缺失d3dx9_42.dll应该怎么解决呢?下面一起来看看吧!

电脑玩《刺客信条》时,找不到d3dx9_42.dll的原因及解决办法 对于许多热爱《刺客信条》这款游戏的玩家来说,在游戏中遇到找不到d3dx9_42.dll的问题无疑是非常令人头疼的。这一错误不仅会导致游戏无法启动,还可能引发运行过程中的图形错误、卡…

【CSS in Depth 2 精译_083】13.3:CSS 混合模式的用法及相关注意事项 + 13.4:本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 13.1.1 使用多个颜色节点(上)13.1.2 颜色插值方法(中)13.1.3 径向渐变…

环境变量的知识

目录 1. 环境变量的概念 2. 命令行参数 2.1 2.2 创建 code.c 文件 2.3 对比 ./code 执行和直接 code 执行 2.4 怎么可以不带 ./ 2.4.1 把我们的二进制文件拷贝到 usr/bin 路径下,也不用带 ./ 了 2.4.2 把我们自己的路径添加到环境变量里 3. 认识PATH 3.…

Linux Swap: 深入解析 mkswap, mkfs.swap, 和 swapon

文章目录 Linux Swap: 深入解析 mkswap, mkfs.swap, 和 swapon什么是 Swap?主要命令介绍1. mkswap2. mkfs.swap3. swapon 创建和管理 Swap 的步骤1. 创建 Swap 分区2. 初始化 Swap3. 激活 Swap4. 持久化配置5. 查看 Swap 状态 删除 Swap 分区或文件1. 停用 Swap2. 删…

模具生产过程中的标签使用流程图

①NFC芯片嵌入周转筐,通过读卡器读取CK_Label_v3的数据,并将这些信息上传至服务器进行存储; ②服务器随后与客户的WMS(仓库管理系统)进行交互,记录和同步注塑机的原始数据; ③当周转筐内的模具…

自己搭建专属AI:Llama大模型私有化部署

前言 AI新时代,提高了生产力且能帮助用户快速解答问题,现在用的比较多的是Openai、Claude,为了保证个人隐私数据,所以尝试本地(Mac M3)搭建Llama模型进行沟通。 Gpt4all 安装比较简单,根据 G…

【笔记】深度学习模型评估指标

推荐链接: (0)多分类器的评价指标 (1)泛化误差的评价方法:【机器学习】模型评估与选择(留出法、交叉验证法、查全率、查准率、偏差、方差) (2)机器学习&…

前端实现页面自动播放音频方法

前端实现页面视频在谷歌浏览器中自动播放音频方法 了解Chrome自动播放策略 在Chrome和其他现代浏览器中,为了改善用户体验,自动播放功能受到了限制。Chrome的自动播放策略主要针对有声音的视频,目的是防止页面在用户不知情的情况下自动播放声…

MinCostMaxFlow-Graph Algorithm

lab要求如下: 1.代码实现思路 图的构建 使用邻接表 adjacencyList 来存储图的结构,每个节点对应一个列表,列表中存储从该节点出发的所有边。 通过 addEdge 方法添加有向边及其反向边,同时设置正向边和反向边的相互引用。 最小费…

简单工厂模式和策略模式的异同

文章目录 简单工厂模式和策略模式的异同相同点:不同点:目的:结构: C 代码示例简单工厂模式示例(以创建图形对象为例)策略模式示例(以计算价格折扣策略为例)UML区别 简单工厂模式和策…

欢迎 PaliGemma 2 – 来自 Google 的新视觉语言模型

我们很高兴迎来 Google 全新的视觉语言模型 PaliGemma 2,这是 PaliGemma 的一个新版本。与其前代产品一样,PaliGemma 2 使用强大的SigLIP进行视觉处理,但在文本解码部分升级到了最新的 Gemma 2。 https://hf.co/collections/google/siglip-65…

Django基础 - 01入门简介

一、 基本概念 1.1 Django说明 Django发布于2005年, 网络框架, 用Python编写的开源的Web应用框架。采用了MVC框架模式,也称为MTV模式。官网: https://www.djangoproject.com1.2 MVC框架 Model: 封装和数据库相关…