Docker环境下的Apache NiFi安装实践及遇到问题解决方案
作者:技术搬砖先生
由于最近用到数据同步,故打算采用中间件工具来做数据同步,谁知第一步部署Apache NiFi环境就耽搁了好久,其中遇到一些问题,故记录下来部署成功记录,下面给大家详细介绍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
【参考】https://repo1.maven.org/maven2/org/apache/nifi/
到此这篇关于Docker环境下的Apache NiFi安装实践及遇到问题解决方案的文章就介绍到这了,更多相关Docker Apache NiFi安装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!