当前位置: 首页 > java >正文

Docker环境下的Apache NiFi安装实践踩坑记录

引言:由于最近用到数据同步,故打算采用中间件工具来做数据同步,谁知第一步部署Apache NiFi环境就耽搁了好久,其中遇到一些问题,故记录下来部署成功记录
  • 问题1:HTTPS访问 HTTP ERROR 400 Invalid SNI
  • 问题2:openssl创建的证书需要导入到浏览器中
  • 问题2:HTTPS 和双向 TLS 身份验证保护的独立实例时,证书正常了,访问后提示Insufficient Permissions,这个问题目前还没解决,如果哪位朋友知道怎么处理,麻烦告知一下,感谢!!!

开始走入正题

1.拉取镜像

sudo docker pull apache/nifi

2.运行容器

# 运行
sudo docker run --restart=always --name nifi -p 8443:8443 -itd apache/nifi# 进入容器,复制配置到目录,做持久化
# 注意复制配置文件的时候记得查看日志是否启动成功,要启动成功后进行复制
sudo  docker  cp nifi:/opt/nifi/nifi-current/conf  /opt/nifi
# 移除nifi 容器
sudo docker rm -f nifi

3.创建PKCS12证书

# 进入文件目录
cd /opt/nifi# 删除旧证书
rm -rf *.p12#生成RSA私钥
openssl genpkey -algorithm RSA -out nifi.key
# 创建证书签名请求CSR
openssl req -new -key nifi.key -out nifi.csr# 填写信息
Country Name (2 letter code) [AU]: CN   # 国家/地区名称(必须填写,使用两位字母代码,如CN代表中国)
State or Province Name (full name) [Some-State]: Hunan   # 省份或州名称(必须填写,填写完整名称)
Locality Name (eg, city) []: Changsha   # 城市名称(可选,如果不填,字段为空)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Jisheyun   # 组织名称(必须填写,通常为公司名称)
Organizational Unit Name (eg, section) []: IT Department   # 组织部门名称(可选)
Common Name (e.g. server FQDN or YOUR name) []:192.168.1.9    # 服务器主机名或IP地址(必须填写)
Email Address []: admin@jishe.com   # 电子邮件地址(可选)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <留空>   # 挑战密码(可选,可以留空)
An optional company name []: <留空>   # 可选的公司名称(可选,可以留空)# 使用私钥和CSR创建自签名证书,有效期为3650天
openssl x509 -req -days 3650 -in nifi.csr -signkey nifi.key -out nifi.crt# 将私钥和证书合并为 PKCS12 格式文件
openssl pkcs12 -export -in nifi.crt -inkey nifi.key -out nifi.p12 -name nifi -password pass:jisheyun123456# 修改目录文件权限(注意需要设置权限否则会导致读取不到配置文件信息)
# 文件权限也可以修改为755,但是运行容器需要加-u 0 
chmod -R 777 /opt/nifi/

4.修改配置文件信息

# 编辑文件
sudo vim nifi.properties# 修改服务器地址和端口
nifi.web.https.host=192.168.1.9
nifi.web.https.port=8443# 配置加密参数
nifi.sensitive.props.key=jisheyun123456
nifi.sensitive.props.algorithm=NIFI_PBKDF2_AES_GCM_256
nifi.security.autoreload.enabled=false
nifi.security.autoreload.interval=10 secs# 配置证书路径和密码
nifi.security.keystore=./conf/nifi.p12
nifi.security.keystoreType=PKCS12
nifi.security.keystorePasswd=jisheyun123456
nifi.security.keyPasswd=jisheyun123456
nifi.security.truststore=./conf/nifi.p12
nifi.security.truststoreType=PKCS12
nifi.security.truststorePasswd=jisheyun123456

5.重新新运行容器

# 运行新容器
sudo docker run --name nifi  --restart=always \-p 8443:8443 \-itd \-v /opt/nifi:/opt/nifi/nifi-current/conf \-e SINGLE_USER_CREDENTIALS_USERNAME=admin \-e SINGLE_USER_CREDENTIALS_PASSWORD=jisheyun123456 \registry.cn-qingdao.aliyuncs.com/jisheyun/apache_nifi:2.3.0

6.另外一种方式使用容器化参数运行(这种方式只映射证书不映射其他配置信息

# 运行容器
docker run --name nifi --restart=always \-v /opt/nifi:/opt/certs \-p 8443:8443 \-e SINGLE_USER_CREDENTIALS_USERNAME=admin \-e SINGLE_USER_CREDENTIALS_PASSWORD=jisheyun123456 \-e KEYSTORE_PATH=/opt/certs/nifi.p12 \-e KEYSTORE_TYPE=PKCS12\-e KEYSTORE_PASSWORD=jisheyun123456 \-e TRUSTSTORE_PATH=/opt/certs/nifi.p12 \-e TRUSTSTORE_PASSWORD=jisheyun123456 \-e TRUSTSTORE_TYPE=PKCS12\-e INITIAL_ADMIN_IDENTITY='subject=C = CN, ST = Hunan, L = Changsha, O = Jisheyun, OU = IT Department, CN = 192.168.1.9' \-e NIFI_WEB_PROXY_HOST='192.168.1.9' \-itd \registry.cn-qingdao.aliyuncs.com/jisheyun/apache_nifi:2.3.0

7.浏览器访问

# 先把证书导出然后再导入到浏览器中
切记!切记!切记!需要导入证书,否则访问正常访问
# 刷新访问
https://192.168.1.9:8443/nifi

访问
首页

  • 【参考】https://hub.docker.com/r/apache/nifi/
  • 【参考】https://nifi.apache.org/docs/nifi-docs/html/user-guide.html
http://www.xdnf.cn/news/5820.html

相关文章:

  • 蓝桥杯 16. 外卖店优先级
  • 数据结构——例题1
  • 基于Qt的app开发第八天
  • C++设计模式——单例模式
  • 微信小程序 自定义图片分享-绘制数据图片以及信息文字
  • React系列——HOC高阶组件的封装与使用
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十二讲)
  • (2)python开发经验
  • 下周,Coinbase将被纳入标普500指数
  • windows c++ (9) 程序内注册服务并修改登录账户
  • 使用 `aiohttp` 构建高效的异步网络爬虫系统
  • 一次讲清 FP32 / FP16 / BF16 / INT8 / INT4
  • VR和眼动控制集群机器人的方法
  • 青少年编程与数学 02-019 Rust 编程基础 10课题、函数、闭包和迭代器
  • 机器学习中分类模型的常用评价指标
  • 设计模式系列(03):设计原则(二):DIP、ISP、LoD
  • SpringBoot与Eventuate Tram整合 - 实现转账最终一致性系统
  • 解锁生命周期评价密码:OpenLCA、GREET 与 R 语言的融合应用
  • 基于 Amazon Bedrock 和 Amazon Connect 打造智能客服自助服务 – 设计篇
  • 【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
  • Java Solon v3.3.0 发布(国产优秀应用开发基座)
  • Spring Boot Swagger 安全防护全解析:从旧版实践到官方规范
  • Spring Boot 跨域问题全解:原理、解决方案与最佳实践
  • Tomcat和Nginx的主要区别
  • 【MySQL】第三弹——表的CRUD进阶(一)数据库约束
  • 地址簿模块-01.需求分析
  • D-Pointer(Pimpl)设计模式(指向实现的指针)
  • 在VSCode中接入DeepSeek的指南
  • 【时时三省】(C语言基础)使用字符串处理函数
  • 基于Spring Boot+Layui构建企业级电子招投标系统实战指南