웹사이트 검색

AlmaLinux/Rocky Linux 8에 Apache Cassandra를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - Java 설치
  3. 2단계 - Apache Cassandra 설치
  4. 3단계 - Cqlsh 설치
  5. 4단계 - Cassandra용 Systemd Unit 파일 만들기
  6. 5단계 - Cassandra 구성
    1. 5.1 사용자 인증 활성화\n
    2. 5.1.1 - 관리자 수퍼유저 추가
    3. 5.2 - 콘솔 구성 파일 편집
    4. 5.3 - 클러스터 이름 바꾸기

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

    이 튜토리얼에서는 AlmaLinux 및 Rocky Linux 8 OS에 Apache Cassandra를 설치하는 방법을 배웁니다. 달리 지정하지 않는 한 두 운영 체제의 명령은 동일합니다.

    전제 조건

    • A Server running AlmaLinux or Rocky Linux with a minimum of 2GB of RAM.

    • A non-sudo user with root privileges.

    • Everything is updated.

      $ sudo dnf update
      

    1단계 - 자바 설치

    Apache Cassandra가 작동하려면 Java 8이 필요합니다. 최신 버전의 Cassandra에는 Java 11에 대한 실험적 지원이 포함되어 있지만 자습서에서는 Java 8을 계속 사용할 것입니다.

    $ sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel
    

    Java 설치를 확인합니다.

    $ java -version
    openjdk version "1.8.0_312"
    OpenJDK Runtime Environment (build 1.8.0_312-b07)
    OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
    

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

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

    다음 명령을 실행하여 리포지토리 파일 /etc/yum.repos.d/cassandra.repo를 만들고 세부 정보를 입력합니다.

    $ sudo tee  /etc/yum.repos.d/cassandra.repo <<EOF
    > [cassandra]
    > name=Apache Cassandra
    > baseurl=https://www.apache.org/dist/cassandra/redhat/40x/
    > gpgcheck=1
    > repo_gpgcheck=1
    > gpgkey=https://www.apache.org/dist/cassandra/KEYS
    > EOF
    

    이제 repo 파일이 생성되었으므로 Cassandra를 설치합니다.

    $ sudo dnf install cassandra -y
    

    3단계 - Cqlsh 설치

    CQL Shell(cqlsh) 도구를 사용하여 Cassandra와 상호 작용합니다. 이 도구는 Python 2.7 또는 Python 3.6+와 호환됩니다. 튜토리얼에서는 Python 3.8을 사용합니다. 파이썬 3.8을 설치합니다.

    $ sudo dnf install python38
    

    Python 3.8을 기본 Python 버전으로 설정합니다.

    $ sudo update-alternatives --config python
    There are 3 programs which provide 'python'.
    
      Selection    Command
    -----------------------------------------------
    *+ 1           /usr/libexec/no-python
       2           /usr/bin/python3
       3           /usr/bin/python3.8
    
    Enter to keep the current selection[+], or type selection number: 3
    

    여러 옵션이 표시됩니다. 이 경우 Python 3.8을 기본 버전으로 설정하기 위해 3번을 선택합니다.

    Python 설치를 확인합니다.

    $ python --version
    Python 3.8.8
    

    update-alternatives 유틸리티를 사용한 후에는 python3 명령을 사용할 필요가 없습니다.

    pip Python 패키지 관리자를 사용하여 cqlsh를 설치합니다.

    $ pip3 install --user cqlsh
    

    cqlsh 설치를 확인합니다.

    $ cqlsh --version
    cqlsh 6.0.0
    

    4단계 - Cassandra용 Systemd Unit 파일 생성

    편집을 위해 /etc/systemd/system/cassandra.service를 만들고 엽니다.

    $ sudo nano /etc/systemd/system/cassandra.service
    

    다음 코드를 붙여넣습니다.

    [Unit]
    Description=Apache Cassandra
    After=network.target
    
    [Service]
    PIDFile=/var/run/cassandra/cassandra.pid
    User=cassandra
    Group=cassandra
    ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

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

    서비스 데몬을 다시 로드합니다.

    $ sudo systemctl daemon-reload
    

    Cassandra 서비스를 활성화하고 시작합니다.

    $ sudo systemctl enable cassandra --now
    

    서비스 상태를 확인합니다.

    $ sudo systemctl status cassandra
    ? cassandra.service - Apache Cassandra
       Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
       Active: active (running) since Thu 2021-12-30 11:07:43 UTC; 12s ago
     Main PID: 4679 (java)
        Tasks: 48 (limit: 23696)
       Memory: 1.3G
       CGroup: /system.slice/cassandra.service
               ??4679 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256>
    

    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.09 KiB  16      100.0%            2fe7ccae-2af9-4841-9bff-bffa29f10dc5  rack1
    

    5단계 - Cassandra 구성

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

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

    5.1 사용자 인증 활성화

    사용자 인증을 활성화하려면 먼저 /etc/cassandra/conf/cassandra.yaml 파일을 백업하십시오.

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

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

    $ sudo nano /etc/cassandra/conf/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
    

    5.1.1 - 관리자 수퍼유저 추가

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

    $ cqlsh -u cassandra -p cassandra
    

    새 수퍼유저를 만듭니다. [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
    

    5.2 - 콘솔 구성 파일 편집

    Cassandra Shell을 사용자 지정하려는 경우 cqlshrc 파일을 편집하여 수행할 수 있습니다. 파일의 기본 위치는 ~/.cassandra 디렉터리입니다. 다른 디렉터리에서 로드하려는 경우 실행하는 동안 인수 --cqlshrc /customdirectorycqlsh 도구에 전달할 수 있습니다.

    Cassandra Shell과 관련하여 구성할 수 있는 모든 설정이 포함된 샘플 파일은 /etc/cassandra/conf/cqlshrc.sample에서 찾을 수 있습니다.

    예제 파일을 ~/.cassandra 디렉터리에 복사하고 이름을 바꿉니다.

    $ sudo cp /etc/cassandra/conf/cqlshrc.sample ~/.cassandra/cqlshrc
    

    필요한 권한으로 cqlshrc 파일을 업데이트하십시오.

    $ sudo chmod 600 ~/.cassandra/cqlshrc
    $ sudo chown $USER:$USER ~/.cassandra/cqlshrc
    

    편집할 파일을 엽니다.

    $ nano ~/.cassandra/cqlshrc
    

    수퍼유저 자격 증명으로 자동 로그인하도록 셸을 구성합니다. 다음 섹션을 찾아 사용자 이름과 비밀번호를 입력합니다.

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

    변경하려는 다른 설정을 편집합니다. 일부 설정은 ;;를 사용하여 주석 처리됩니다. 이중 세미콜론을 제거하여 주석을 해제한 다음 변경합니다.

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

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

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

    5.3 - 클러스터 이름 바꾸기

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

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

    $ cqlsh
    

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

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

    쉘 종료

    > exit
    

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

    $ sudo nano /etc/cassandra/conf/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 Cluster at 127.0.0.1:9042
    [cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    >
    

    결론

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