웹사이트 검색

단일 노드 Ubuntu 22.04 클러스터에 Apache Cassandra NoSQL 데이터베이스를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 16.04(Xenial Xerus)

이 페이지에서

  1. 전제 조건
  2. 1단계 - Java 설치
  3. 2단계 - Apache Cassandra 설치
  4. 3단계 - Cassandra 서비스 확인\n
  5. 4단계 - Cassandra 구성
    1. 4.1 사용자 인증 활성화\n
    2. 4.1.1 - 관리자 수퍼유저 추가
    3. 4.2 - 콘솔 구성 파일 편집
    4. 4.3 - 클러스터 이름 바꾸기

    Apache Cassandra는 오픈 소스 NoSQL 분산 데이터베이스 관리 시스템입니다. Cassandra는 데이터가 자동으로 복제되는 노드를 더 추가하여 수평으로 확장할 수 있습니다. 중단 시간 없이 노드를 추가하거나 제거할 수 있습니다. 노드는 클러스터 또는 링으로 논리적으로 구성되고 여러 데이터 센터에 걸쳐 설정되어 고성능 애플리케이션의 속도와 안정성을 향상시킬 수 있습니다.

    이 자습서에서는 단일 노드 Ubuntu 22.04 클러스터에 Apache Cassandra를 설치하는 방법을 알아봅니다.

    전제 조건

    • A Server running Ubuntu 22.04 with a minimum of 2GB of RAM.

    • A non-sudo user with root privileges.

    • Everything is updated.

      $ sudo apt update && sudo apt upgrade
      

    1단계 - 자바 설치

    Apache Cassandra가 작동하려면 Java 8 또는 Java 11이 필요합니다. 최신 버전의 Cassandra에는 우리가 사용할 Java 11에 대한 전체 지원이 포함되어 있습니다.

    $ sudo apt install openjdk-11-jdk
    

    Java 설치를 확인합니다.

    $ java -version
    openjdk 11.0.15 2022-04-19
    OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1)
    OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
    

    2단계 - 아파치 카산드라 설치

    첫 번째 단계는 Cassandras 공식 저장소를 추가하는 것입니다.

    다음 명령을 실행하여 리포지토리를 시스템 리포지토리 목록에 추가합니다.

    $ echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
    

    이 튜토리얼을 작성할 당시 사용 가능한 최신 버전의 Cassandra는 4.0.5입니다. 위의 명령은 40x를 사용하여 Cassandra 4.0 시리즈를 나타냅니다.

    시스템의 신뢰할 수 있는 저장소 목록에 저장소 키를 추가합니다.

    $ wget -q -O - https://www.apache.org/dist/cassandra/KEYS | sudo tee /etc/apt/trusted.gpg.d/cassandra.asc
    

    시스템 저장소 목록을 업데이트하십시오.

    $ sudo apt update
    

    카산드라를 설치합니다.

    $ sudo apt install cassandra
    

    3단계 - Cassandra 서비스 확인

    Cassandra는 서비스 데몬을 자동으로 생성하고 시작합니다. 서비스 상태를 확인합니다.

    $ sudo systemctl status cassandra
    

    다음 출력을 얻어야 합니다.

    ? cassandra.service - LSB: distributed storage system for structured data
         Loaded: loaded (/etc/init.d/cassandra; generated)
         Active: active (running) since Mon 2022-07-25 11:40:42 UTC; 12min ago
           Docs: man:systemd-sysv-generator(8)
          Tasks: 48 (limit: 2241)
         Memory: 1.3G
            CPU: 38.219s
         CGroup: /system.slice/cassandra.service
                 ??4602 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+UseNUMA ->
    Jul 25 11:40:42 cassandra systemd[1]: Starting LSB: distributed storage system for structured data...
    Jul 25 11:40:42 cassandra systemd[1]: Started LSB: distributed storage system for structured data.
    

    nodetool 명령을 사용하여 상태를 확인할 수도 있습니다.

    $ nodetool status
    Datacenter: datacenter1
    =======================
    Status=Up/Down
    |/ State=Normal/Leaving/Joining/Moving
    --  Address    Load       Tokens  Owns (effective)  Host ID                               Rack
    UN  127.0.0.1  69.08 KiB  16      100.0%            6690243a-950d-4d64-9463-aa722f8064d4  rack1
    

    4단계 - Cassandra 구성

    Cassandra에 대한 구성 파일의 기본 위치는 /etc/cassandra입니다. 로그 및 데이터 디렉토리의 기본 위치는 /var/log/cassandra/var/lib/cassandra입니다.

    힙 크기와 같은 JVM 수준 설정은 /etc/cassandra/cassandra-env.sh 파일을 통해 설정할 수 있습니다. 추가 JVM 명령줄 인수를 JVM_OPTS 변수에 전달할 수 있습니다. 인수는 시작할 때 Cassandra에 전달됩니다.

    4.1 사용자 인증 활성화

    사용자 인증을 활성화하기 위한 첫 번째 단계는 /etc/cassandra/cassandra.yaml 파일을 백업하는 것입니다.

    $ sudo cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.backup
    

    편집을 위해 cassandra.yaml 파일을 엽니다.

    $ sudo nano /etc/cassandra/cassandra.yaml
    

    이 파일에서 다음 매개변수를 찾으십시오.

    ...
    authenticator: AllowAllAuthenticator
    ...
    authorizer: AllowAllAuthorizer
    ...
    roles_validity_in_ms: 2000
    ...
    permissions_validity_in_ms: 2000
    ...
    

    아래와 같이 매개변수 값을 변경합니다.

    ...
    authenticator: org.apache.cassandra.auth.PasswordAuthenticator
    ...
    authorizer: org.apache.cassandra.auth.CassandraAuthorizer
    ...
    roles_validity_in_ms: 0
    ...
    permissions_validity_in_ms: 0
    . . .
    

    요구 사항에 따라 다른 설정을 구성할 수 있습니다. 주석 처리된 경우 주석 처리를 제거하십시오.

    완료되면 Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    변경된 설정을 활성화하려면 Cassandra를 다시 시작하십시오.

    $ sudo systemctl restart cassandra
    

    4.1.1 - 관리자 수퍼유저 추가

    이제 인증을 활성화했으므로 사용자를 생성해야 합니다. 이를 위해 Cassandra Command 셸 유틸리티를 사용합니다. 기본 사용자 cassandra의 자격 증명으로 로그인합니다.

    $ cqlsh -u cassandra -p cassandra
    

    다음 쉘을 얻을 수 있습니다.

    Connected to Test Cluster at 127.0.0.1:9042
    [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    >
    

    새 수퍼유저를 만듭니다. [username][yourpassword]를 자격 증명으로 바꿉니다.

    > CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;
    

    셸에서 로그아웃합니다.

    > exit
    

    새 수퍼유저 계정으로 다시 로그인합니다.

    $ cqlsh -u username -p yourpassword
    

    기본 cassandra 계정에서 상승된 권한을 제거합니다.

    > ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;
    > REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;
    

    수퍼유저 계정에 모든 권한을 부여합니다.

    > GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';
    

    셸에서 로그아웃합니다.

    > exit
    

    4.2 - 콘솔 구성 파일 편집

    Cassandra Shell을 사용자 지정하려는 경우 cqlshrc 파일을 편집하여 수행할 수 있습니다. 파일의 기본 위치는 ~/.cassandra 디렉터리입니다. 다른 디렉터리에서 로드하려는 경우 실행하는 동안 인수 --cqlshrc /customdirectorycqlsh 도구에 전달할 수 있습니다. Cassandras 기본 설치에는 파일이 포함되어 있지 않습니다. 따라서 생성해야 합니다.

    ~/.cassandra 디렉터리에 cqlshrc 파일을 만듭니다. ~/.cassandra 디렉토리의 기능을 수행하기 위해 sudo를 사용할 필요가 없습니다. Cassandra는 이 디렉터리의 파일이 로컬 계정의 소유이고 다른 계정이나 그룹에서 액세스할 수 없어야 합니다.

    $ touch ~/.cassandra/cqlshrc
    

    ~/.cassandra 디렉터리가 없으면 다음 명령을 사용하여 만듭니다.

    $ mkdir ~/.cassandra
    

    편집할 파일을 엽니다.

    $ nano ~/.cassandra/cqlshrc
    

    Cassandras Github 저장소는 샘플 cqlshrc 파일을 제공합니다. 필요에 따라 여기에서 일부 또는 모든 섹션을 복사할 수 있습니다. 모든 설정은 ;;를 사용하여 주석 처리됩니다. 이중 세미콜론을 제거하여 주석을 제거한 다음 필요에 따라 변경하십시오.

    수퍼유저 자격 증명으로 자동 로그인하도록 셸을 구성합니다. [username][password]를 이전 단계에서 만든 자격 증명으로 바꿉니다.

    ....
    [authentication]
    ;; If Cassandra has auth enabled, fill out these options
    username = [username]
    password = [password]
    ....
    

    변경하려는 다른 설정을 편집합니다. 완료되면 Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    cqlshrc 파일에 대한 권한을 업데이트하십시오. 이렇게 하면 다른 사용자 그룹이 파일에 액세스할 수 없습니다.

    $ chmod 600 ~/.cassandra/cqlshrc
    

    새로운 변경 사항으로 Cassandra 셸에 로그인합니다.

    $ cqlsh
    Connected to Test Cluster at 127.0.0.1:9042
    [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    >
    

    참고: cqlshrc 파일에 사용자 이름과 암호를 저장하는 방법은 Cassandra 4.1 버전에서 더 이상 사용되지 않습니다. 이에 대해 자세히 알아보려면 Cassandras 사이트의 항목을 읽을 수 있습니다.

    4.3 - 클러스터 이름 바꾸기

    마지막으로 테스트 클러스터에서 선택한 이름으로 클러스터 이름을 변경합니다.

    cqlsh 터미널에 로그인합니다.

    $ cqlsh
    

    아래 명령에서 [clustername]을 새 클러스터 이름으로 바꿉니다.

    > UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
    

    쉘을 종료합니다.

    > exit
    

    편집을 위해 /etc/cassandra/cassandra.yaml 파일을 엽니다.

    $ sudo nano /etc/cassandra/cassandra.yaml
    

    변수 cluster_name의 값을 선택한 이름으로 바꿉니다.

    ...
    # The name of the cluster. This is mainly used to prevent machines in
    # one logical cluster from joining another.
    cluster_name: '[new_name]'
    ...
    

    완료되면 Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    Cassandra 시스템 캐시를 지웁니다.

    $ nodetool flush system
    

    카산드라를 다시 시작하십시오.

    $ sudo systemctl restart cassandra
    

    새 이름을 보려면 셸에 로그인하십시오.

    $ cqlsh
    Connected to howtoforge at 127.0.0.1:9042
    [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    >
    

    결론

    이 자습서에서는 AlmaLinux 또는 Rocky Linux 서버에 Apache Cassandra를 설치하는 방법을 배웠습니다. 또한 사용자 인증을 추가하고 몇 가지 기본 구성을 수행하는 방법도 배웠습니다. 자세한 내용은 공식 Cassandra 설명서를 참조하십시오. 질문이 있으시면 아래 의견에 게시하십시오.