Keycloak 설치

Keycloak는 오픈 소스 아이덴티티 및 액세스 관리 솔루션으로, WildFly 애플리케이션 서버를 기반으로 동작한다. 설치 시에는 독립 실행형(Standalone) 모드 또는 도메인(Domain) 모드로 실행할 수 있으며, 운영 환경 및 확장성 요구 사항에 따라 적절한 모드를 선택하면 된다.

독립 실행형(Standalone) 모드

독립 실행형 모드는 Keycloak 서버를 단일 프로세스로 구동하는 기본 방식이다. 별도의 중앙 컨트롤러 없이 하나의 서버 인스턴스만 실행하므로, 소규모 환경이나 단순 구조를 원하는 경우에 적합하다.

  • 구조

    • WildFly 기반 서버를 한 대만 띄워서 운영한다.

    • standalone.xml 파일이 주요 구성 파일이며, JDBC, 로그, 세션 설정 등을 이곳에서 관리한다.

    • 별도의 호스트 컨트롤러(host controller)나 도메인 컨트롤러(domain controller)가 없다.

  • 설치 및 실행

    • Keycloak 압축 파일을 해제한 후, bin/standalone.(sh|bat) 스크립트를 실행하여 서버를 구동한다.

    • 네트워크 바인딩 옵션(예: -Djboss.bind.address=0.0.0.0) 등을 통해 원하는 IP로 서비스할 수 있다.

    • 구성 변경 시에는 서버를 다시 시작해야 변경 사항이 반영된다.

  • 특징

    • 단순성: 설정이 간단하고 리소스 소비가 비교적 적으며, 디버깅이 용이하다.

    • 제한적 확장성: 단일 서버 기반이므로 고가용성(HA)이나 대규모 확장 요구가 있는 경우에는 별도의 로드 밸런서나 복제 구성을 추가로 고려해야 한다.

도메인(Domain) 모드

도메인 모드는 여러 Keycloak 서버 인스턴스를 중앙에서 일관되게 관리하고자 할 때 활용한다. WildFly의 도메인 구조를 그대로 사용하므로, 대규모 환경이나 다수의 Keycloak 노드를 운영해야 하는 경우에 유리하다.

  • 구조

    • 하나의 도메인 컨트롤러(domain controller)가 전체 서버(호스트)들을 관리한다.

    • 각 호스트(서버)에는 호스트 컨트롤러(host controller)가 실행되며, 실제 애플리케이션을 구동하는 서버 인스턴스를 제어한다.

    • domain.xmlhost.xml 파일을 통해 도메인 전반의 설정(서버 그룹, 프로파일, 소켓 바인딩 등)과 각 호스트별 설정을 정의한다.

  • 설치 및 실행

    • Keycloak 압축 파일을 해제한 후, bin/domain.(sh|bat) 스크립트를 통해 도메인 컨트롤러를 구동한다.

    • 추가로 연결될 호스트들은 동일 버전의 Keycloak(또는 WildFly)을 사용해야 하며, 호스트 컨트롤러가 도메인 컨트롤러에 연결되도록 설정한다.

    • 도메인 컨트롤러에서 프로파일을 한 번 수정하면 다수의 서버 인스턴스에 자동 반영할 수 있다.

  • 특징

    • 중앙 집중 관리: 도메인 컨트롤러가 여러 서버에 대한 구성을 통합 관리하므로 운영 효율이 높다.

    • 확장성: 서버 그룹을 통해 무중단 배포(Rolling Update)나 확장 전략을 유연하게 적용할 수 있다.

    • 구성 복잡도: 독립 실행형 모드에 비해 초기 설정 및 구성이 복잡하다. 도메인, 호스트, 서버 그룹의 개념을 정확히 이해해야 하며, 운영 환경에 맞춰 여러 XML 파일을 조정해야 한다.

도메인 모드를 사용하면 일관된 설정으로 다수의 Keycloak 서버를 운영할 수 있으나, 규모가 작고 단순한 환경이라면 독립 실행형 모드만으로 충분할 수 있다. 배포 환경 규모와 운영 방식을 고려하여 적합한 모드를 선택하는 것이 중요하다.

Last updated