Skip to content

Latest commit

 

History

History
124 lines (115 loc) · 5.45 KB

tutorial_install.md

File metadata and controls

124 lines (115 loc) · 5.45 KB

NiFi 기본설치방법(Standalone모드)

이 글은 Apache NiFi의 기본설치방법에 대해 설명한다.

  • OS : CentOS 7.3 64bit
  • Apache Nifi : 1.13.2

테스트용(http,익명사용자 모드) 으로 사용시에는 4~6작업은 생략해도 됨.

  • NiFi 1.14.0버전부터는 default로 (https, single user login) 으로 변경됨.(9작업으로 이동)
  • http(익명사용자모드)는 conf/nifi.properties 파일을 수정하면 가능함.

1. nifi계정을 생성한다.

  • root 계정으로 접속
  • nifi 계정 생성
$ groupadd nifi 
$ useradd -g nifi nifi
$ passwd nifi
  • nifi 계정으로 재접속

2. JDK를 다운로드하고 환경변수를 등록한다.

$ tar -xzvf jdk-11.0.11_linux-x64_bin.tar.gz
$ vi .bash_profile
export JAVA_HOME=/home/nifi/jdk-11.0.11
PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin

$ . .bash_profile
$ java -version

3. Apache NiFi 사이트(https://nifi.apache.org/download.html) 에 접속하여 nifi 및 toolkit Binary파일을 다운로드하고 압축을 해제한다.

$ wget https://mirror.navercorp.com/apache/nifi/1.13.2/nifi-1.13.2-bin.tar.gz
$ wget https://mirror.navercorp.com/apache/nifi/1.13.2/nifi-toolkit-1.13.2-bin.tar.gz
$ tar -xzvf nifi-1.13.2-bin.tar.gz
$ tar -xzvf nifi-toolkit-1.13.2-bin.tar.gz

4. toolkit을 사용하여 인증서를 생성한다.

$ {toolkit 설치 디렉토리}/bin/tls-toolkit.sh -n '호스트명' -C '클라이언트 정보' -o 'output 경로'
-n : 서버인증서 호스트명
-C : 관리자/사용자로 사용할 클라이언트 인증서 정보
-o : output 경로
ex> ./bin/tls-toolket.sh standalone -n 'winiot.w[01-07](2)' -C 'CN=admin, OU=winiot' -o './target' 

5. 생성된 인증서 파일을 NiFi로 복사한다.

$ cp {toolkit 설치 디렉토리}/target/{host명}/* {NiFi 설치 디렉토리}/conf/

6. {NiFi 설치 디렉토리}/conf/authorizers.xml을 아래와 같이 수정한다.

  • userGroupProvider 수정
    <userGroupProvider>
        <identifier>file-user-group-provider</identifier>
        <class>org.apache.nifi.authorization.FileUserGroupProvider</class>
        <property name="Users File">./conf/users.xml</property>
        <property name="Legacy Authorized Users File"></property>
        <property name="Initial User Identity 1">CN=admin, OU=winiot</property> // 관리자용 클라이언트 인증서 정보
        <property name="Initial User Identity 2">CN={호스트명}, OU=NIFI</property> // 서버 인증서 정보
    </userGroupProvider>
  • accessPolicyProvider 수정
    <accessPolicyProvider>
        <identifier>file-access-policy-provider</identifier>
        <class>org.apache.nifi.authorization.FileAccessPolicyProvider</class>
        <property name="User Group Provider">file-user-group-provider</property>
        <property name="Authorizations File">./conf/authorizations.xml</property>
        <property name="Initial Admin Identity">CN=admin, OU=winiot</property> // 관리자용 클라이언트  정보
        <property name="Legacy Authorized Users File"></property>
        <property name="Node Identity 1">CN={호스트명}, OU=NIFI</property> // 서버 인증서 정보
        <property name="Node Group"></property>
    </accessPolicyProvider>

7. NiFi를 구동한다.

  • 실행
- foreground
$ {NiFi 설치 디렉토리}/bin/nifi.sh run
- background
$ {NiFi 설치 디렉토리}/bin/nifi.sh start
  • 정지
- foreground
Ctrl-c를 입력
- background
$ {NiFi 설치 디렉토리}/bin/nifi.sh stop

8. 기타

  • invalid host header 장애

    • 원인: NiFi가 https로 실행되는 경우 바인딩 된 host[:port]와 일치하는 Host헤더가 있는 HTTP요청만 허용한다.
      다른 host[:port]로 향하는 요청(프록시, 컨테이너환경 등)을 수락하려면 해당 설정을 수정해야 한다.
    • 해결방안: nifi.properties 수정
    nifi.web.proxy.host = host:port

9. Secure by Default(Single User Login)

  • Apache NiFi 1.14.0의 주요개선사항 중 하나는 기본구성에 대한 보안 활성화이다. 즉, 이제 기본 구성으로 NiFi를 실행하기만하면 로컬 인스턴스가 https로 접속하여 사용자 이름과 비밀번호를 통해 로그인할 수 있는 환경으로 실행된다. (NIFI-8220)

    • the default web host and port have been switched to the https values
    • automatic generation of a self-signed certificate and nifi.properties will be updated with the passwords.
    • Single User Login Identity Provider
    • Single User Authorizer
  • Username/Password는 랜덤 값으로 생성되며, log/nifi-app.log에서 확인가능

    $ grep Generated logs/nifi-app*log
    Generated Username [USERNAME]
    Generated Password [PASSWORD]
    
    - 아래 명령어도 Username/Password 변경가능
    $ ./bin/nifi.sh set-single-user-credentials <username> <password>

※ 참고