단일 노드 Ubuntu 22.04 클러스터에 Apache Cassandra NoSQL 데이터베이스를 설치하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 16.04(Xenial Xerus)
이 페이지에서
- 전제 조건
- 1단계 - Java 설치
- 2단계 - Apache Cassandra 설치
- 3단계 - Cassandra 서비스 확인\n
- 4단계 - Cassandra 구성
- 4.1 사용자 인증 활성화\n
- 4.1.1 - 관리자 수퍼유저 추가
- 4.2 - 콘솔 구성 파일 편집
- 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 /customdirectory
를cqlsh
도구에 전달할 수 있습니다. 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 설명서를 참조하십시오. 질문이 있으시면 아래 의견에 게시하십시오.