系统环境及软件版本
- CentOS7
- JDK1.8.0_91
- Nifi-1.7.1
- Kerberos5
- zookeeper3.4.5
- nifi-toolkit-1.7.1
集群信息:
host_name | IP | service |
server | 192.0.0.230 | Kerberos5 Server, Nifi Cluster Manager,zookeeper |
client | 192.0.0.231 | Kerberos5 Client, Nifi Cluster,zookeeper |
前置准备:( 软件安装,网络ip)不在赘述
配置主机名:
vi /etc/hosts
关闭防火墙:
搭建Kerberos5服务
安装KDC服务及配置:
进入到server机器,执行以下命令安装KDC服务:
|
修改KDC默认配置:
进入/etc
目录找到/etc/krb5.conf
文件打开并修改,参考如下:
修改KRB5KDC配置文件:
进入/etc
目录找到/var/kerberos/krb5kdc/kdc.conf
文件打开,参考如下修改:
保证与krb5.conf中的realms一致
初始化数据库:
输入自己的初始化密码:
修改数据库权限
找到/var/kerberos/krb5kdc/kadm5.acl
配置文件,给数据库管理员添加ACL权限,*代表全部权限,操作如下:
设置kerberos服务开机启动,并且启动服务
手动启动服务
service krb5kdc start
service kadmin start
设置开机自动启动
chkconfig krb5kdc on
chkconfig kadmin on
创建数据库管理员
参考如下命令创建管理员用户,保存好创建时设置的密码(如果忘记后期可以使用cpw
命令更新),并导出keytab
[root@server ~]#kadmin.local -q "addprinc admin/admin"
[root@server ~]#kadmin.local
kadmin:addprinc -randkey test/NIFI
kadmin:ktadd -k /opt/test-NIFI.keytab test/NIFI
kadmin:q
验证管理员用户
创建login/server@NIFI.COM作为管理员账户,自定义密码为hadoop
kadmin.local -q "addprinc login/server"
使用kinit命令来检测创建的用户是否成功(需要输入密码),可以集群间验证
kinit login/server@NIFI.COM
安装KDC Client服务
进入从Cluster机器,执行如下命令安装KDC Cliente服务:
|
拷贝主节点的krb5.conf
和test-NIFI.keytab到从节点服务,参考如下:注意此处指的是所有机器
1 | [root@client ~]# scp root@server:/etc/krb5.conf /etc/krb5.conf
|
2 | [root@client ~]# scp root@server:/opt/test-NIFI.keytab /opt/test-NIFI.keytab |
证书生成
下载与安装
下载地址:http://nifi.apache.org/download.html
下载后解压安装nifi-toolkit-1.1.2-bin.zip (或tar.gz格式,自己选择最新版本),配置好环境变量方便使用。
生成相关证书
为server节点生成密钥库,truststore,nifi.properties以及具有给定DN的客户端证书。
./tls-toolkit.sh standalone -n 'server, client' -C 'CN=admin, OU=NIFI' -o './target'
- -n 表示机器的hostname
- -C 生成浏览器证书(注意: CN=admin, 后面的空格一定要保留)
- -o 输出的目录
- -f Nifi的配置文件位置
拷贝证书
拷贝生成好证书到主从节点服务器下NIFI
安装目录中的conf文件夹,如下:
1 | [root@server target]# scp target/client/* root@client:/home/hadoop/app/nifi-1.7.1/conf |
2 | [root@server target]# cp target/serverr/* /home/hadoop/app/nifi-1.7.1/conf |
配置Zookeeper服务
注意:所有的主从节点都需要操作
切换到zookeeper目录的conf下复制zoo.cfg文件
cp zoo_sample.cfg zoo.cfg
并修改zoo.cfg 文件:
在创建数据文件和日志文件,并在数据文件中创建myid
注意: 创建的myid为1,如:echo -n '1' > /home/hadoop/data/zookeeper/zkdata/myid
更新NIFI配置
进入到Nifif安装目录下修改conf/nifi.properties
文件,把内置的zookeeper
启动设置为false,如下:
nifi.state.management.embedded.zookeeper.start=false
配置Nifi Admin初始化
更新NIFI配置
进入到Nifif安装目录修改conf/nifi.properties
文件,把kerberos5
的登录适配加上,如下:
配置nifi登陆信息
vi login-identity-providers.xml 放开kerberos-provider的注释
配置用于登陆的用户信息
vi authorizers.xml
初始化、授权、策略一定都要配置好,管理用户是生产key时的用户(-C 'CN=admin, OU=NIFI'),个集群的节点名称也要授权,用于集群的识别。
更新登录配置
进入到Nifi安装目录中的conf目录,修改login-identity-providers.xml
文件,打开kerberos-provider
节点注释:(和上面配置成一样的域)
启动NIFI服务
先启动主节点的NIFI,而后启动从节点的NIFI,执行命令./bin/nifi.sh start
,然后启动主节点和从节点的zookeeper,执行命令/home/hadoop/app/zookeeper3.4.5/bin/zkServer.sh start
然后打开浏览器添加之前生成的证书CN=admin_OU=NIFI.p12和密码CN=admin_OU=NIFI.password:Chrome浏览器为例
倒入.p12文件,密码在.password中
登录:
输入https://server:9443/nifi/
便会跳转到登录页面,即可登录成功。界面显示如下:
然后进行用户配置授权即可:
用户新增和租户管理:
由于用的是Kerberos管理的所以,我们的用户必须先用管理员账户登录--->然后再users和Policies中创建用户和添加权限--->再在kdc中添加你创建的用户名(设置用户名、密码)--->退出管理员帐户重新用新创建的用户登录。
注:如有写的不对的地方欢迎指正交流,谢谢。