기술 가이드

CentOS 7에 Apache Cassandra 설치 가이드

4 min read 데이터베이스 업데이트됨 21 Oct 2025
CentOS 7에 Apache Cassandra 설치 가이드
CentOS 7에 Apache Cassandra 설치 가이드

개요

Apache Cassandra는 오픈소스 분산 NoSQL 데이터베이스입니다. 대용량 데이터를 분산된 고가용성 클러스터에 저장하도록 설계되었으며 단일 실패 지점이 없습니다. 전통적인 RDBMS(예: MySQL, PostgreSQL)가 사용하는 표 형식과 달리 NoSQL은 다른 저장 방식을 사용합니다.

이 튜토리얼은 CentOS 7 서버에 Apache Cassandra 3.11 계열을 설치하는 절차를 설명합니다. 각 단계는 명령 예시와 검증 방법을 포함합니다.

사전 준비(요구사항)

  • CentOS 7이 설치된 서버 접근 권한(루트 또는 sudo 권한).
  • 인터넷 연결(패키지 및 RPM 다운로드용).
  • 최소 권장 자원: 메모리 4GB 이상(테스트/소규모는 2GB로도 가능하나 성능 제한).

중요: 프로덕션 환경에서는 JVM 옵션, 디스크 I/O, 네트워크 및 보안(방화벽, 인증)을 별도 튜닝해야 합니다.

Step 1 - Java 설치 및 환경 변수 설정

설치를 시작하기 전에 시스템 패키지를 최신으로 업데이트하세요.

yum -y update

그다음 Oracle Java 8 RPM을 다운로드하여 설치합니다. 예시 명령(Oracle 다운로드 페이지 정책에 따른 헤더 포함):

wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"

만약 시스템에 wget이 없으면 다음으로 설치하세요.

yum -y install wget

다운로드한 RPM을 로컬로 설치합니다.

yum -y localinstall jdk-8u131-linux-x64.rpm

설치 후 Java 버전을 확인합니다.

java -version

예시 출력(환경에 따라 버전 표기는 다를 수 있습니다):

[root@liptan-pc ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

JAVA_HOME 환경 변수가 설정되어 있는지 확인합니다.

echo $JAVA_HOME

만약 빈 값이 나오면 홈 프로필 파일에 수동으로 추가합니다. 예시는 nano 편집기를 사용합니다.

nano ~/.bash_profile

파일 끝에 다음 줄을 추가하세요(설치한 JDK 경로를 실제 경로로 변경할 수 있음).

export JAVA_HOME=/usr/java/jdk1.8.0_131/
export JRE_HOME=/usr/java/jdk1.8.0_131/jre

추가한 후 적용합니다.

source ~/.bash_profile

다시 확인합니다.

[root@liptan-pc ~]# echo $JAVA_HOME
/usr/java/jdk1.8.0_131/

중요: Cassandra는 Java 8을 권장합니다. 다른 Java 버전(예: Java 11 이상)을 사용할 경우 호환성 문제를 검토하세요.

Step 2 - Cassandra 설치

Cassandra 공식 리포지터리를 시스템에 추가합니다. 새 repo 파일을 생성합니다.

nano /etc/yum.repos.d/cassandra.repo

파일에 다음 내용을 넣습니다.

[cassandra]
name=Apache Cassandra
baseurl=https://www.apache.org/dist/cassandra/redhat/311x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.apache.org/dist/cassandra/KEYS

리포지터리 추가 후 Cassandra를 설치합니다.

yum -y install cassandra

설치가 끝나면 systemd 데몬을 다시 로드하고 Cassandra를 시작합니다.

systemctl daemon-reload
systemctl start cassandra
systemctl enable cassandra

서비스 상태와 초기 클러스터 상태를 확인하려면 nodetool을 사용합니다.

nodetool status

정상 실행 시 예시 출력(환경마다 다름):

[root@ip-172-31-7-136 ~]# 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  136.29 KiB  256          100.0%            b3d26649-9e10-4bee-9b3c-8e81c4394b2e  rack1

문제: nodetool이 로컬 JMX에 연결하지 못하는 경우 아래와 같은 에러가 발생합니다.

nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.

이 경우 cassandra 환경 설정 파일에서 JMX 바인딩을 확인/수정합니다.

nano /etc/cassandra/default.conf/cassandra-env.sh

파일에서 다음 라인을 찾습니다.

# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname="

주석 해제하고 을 로컬 주소(예: 127.0.0.1)로 변경합니다.

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"

파일을 저장하고 Cassandra를 재시작합니다.

systemctl restart cassandra

다시 nodetool status를 실행하여 정상 동작을 확인합니다.

CQL 쉘 접속 확인

Cassandra에는 CQL(Cassandra Query Language) 명령을 실행할 수 있는 cqlsh가 포함되어 있습니다. 접속 명령:

cqlsh

정상 연결 시 예시 출력:

[root@liptan-pc ~]# cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.0 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.

간단한 쿼리 예시(테스트용 키스페이스와 테이블 생성):

CREATE KEYSPACE IF NOT EXISTS demo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
USE demo;
CREATE TABLE IF NOT EXISTS users (id uuid PRIMARY KEY, name text, email text);
INSERT INTO users (id, name, email) VALUES (uuid(), '홍길동', '[email protected]');
SELECT * FROM users;

운영(운영 전 확인사항) 및 보안 권장사항

  • 방화벽: 기본 포트(7000, 7001, 7199, 9042 등)를 노드 간 통신에 맞게 허용하세요.
  • 인증/암호화: 프로덕션에서는 SSL/TLS와 내부 인증(예: 내부 방화벽, 인증자)을 구성하세요.
  • 모니터링: nodetool, JMX, Prometheus exporter 등을 통해 상태와 성능을 모니터링하세요.
  • 백업: 스냅샷 및 스트리밍 백업 전략을 마련하세요.

중요: 외부에 직접 노출된 Cassandra 인스턴스는 보안상 큰 위험입니다. 반드시 네트워크 경계에서 접근 제어를 적용하세요.

문제 해결 요약(트러블슈팅)

  • nodetool 연결 실패: cassandra-env.sh의 java.rmi.server.hostname 설정을 확인.
  • 서비스가 기동하지 않음: systemctl status cassandra 및 journalctl -u cassandra로 로그 확인.
  • 포트 충돌: netstat 또는 ss 명령으로 포트 사용 여부 확인.
  • Java 버전 불일치: Cassandra 버전 권장 Java 버전(보통 Java 8)을 사용.

역할별 체크리스트

  • 시스템 관리자

    • Java 설치 및 JAVA_HOME 설정 확인.
    • 리포지터리 추가 및 패키지 설치.
    • systemd 서비스 관리(시작/재시작/자동 시작 설정).
  • DB 엔지니어

    • 초기 키스페이스와 복제 전략 설계.
    • 모니터링 및 성능 튜닝(JVM 힙, GC, compaction 설정).
  • 보안 담당자

    • 포트 정책, 인증, 암호화(SSL/TLS) 적용 여부 검토.
    • 접근 제어 및 네트워크 분리 검토.

수용 기준(설치 후 검증 항목)

  • systemctl start cassandra 후 서비스가 Active 상태인지 확인.
  • nodetool status 결과에서 노드가 UN(Up/Normal) 상태로 보고됨.
  • cqlsh로 접속해 기본 키스페이스를 생성하고 간단한 CRUD 테스트 수행 가능.
  • 로그에 치명적 에러(FATAL/ERROR)가 없을 것.

대안 및 확장 방안

  • 패키지 관리: RPM 대신 tarball을 다운로드하여 수동 설치/버전 관리를 수행할 수 있습니다.
  • 컨테이너화: Docker/Kubernetes 환경에서 운영할 경우 컨테이너 기반 배포를 고려하세요(운영 및 스케일링 관점에서 장단점 존재).
  • 매니지드 서비스: 대규모 운영에서는 클러스터 관리 오버헤드를 줄이기 위해 매니지드 Cassandra 서비스 또는 유사 NoSQL 매니지드 제품을 검토할 수 있습니다.

검증용 체크리스트(간단)

  • Java 설치 및 echo $JAVA_HOME 확인 완료
  • /etc/yum.repos.d/cassandra.repo 파일 생성 완료
  • yum -y install cassandra 실행 완료
  • systemctl enable/ start 후 nodetool status 정상
  • cqlsh 접속 및 간단 쿼리 성공

요약

이 가이드를 따라 CentOS 7에 Apache Cassandra를 설치하고 초기 설정 및 기본 문제 해결을 수행할 수 있습니다. 프로덕션 운영 전에는 JVM 튜닝, 스토리지/디스크 I/O 최적화, 보안(인증/암호화), 모니터링 및 백업 전략을 반드시 마련하세요.

중요: 이 문서는 설치와 기본 검증에 중점을 둡니다. 실제 운영 환경에서는 네트워크 토폴로지, 데이터 복제 전략, 성능 요구사항에 따라 추가 설계가 필요합니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Excel에서 천 단위 구분 기호 적용 방법
Productivity

Excel에서 천 단위 구분 기호 적용 방법

iPhone Live Voicemail 사용법 가이드
사용법

iPhone Live Voicemail 사용법 가이드

CentOS 7에서 CentOS 8로 안전하게 업그레이드하는 방법
시스템관리

CentOS 7에서 CentOS 8로 안전하게 업그레이드하는 방법

Android TV에 F1 TV 설치하는 방법
스트리밍

Android TV에 F1 TV 설치하는 방법

Windows 11 컨텍스트 메뉴에 Chrome 시크릿 바로가기 추가
브라우저 튜토리얼

Windows 11 컨텍스트 메뉴에 Chrome 시크릿 바로가기 추가

CS:GO 'VAC 확인 불가' 오류 빠른 해결 가이드
게임 가이드

CS:GO 'VAC 확인 불가' 오류 빠른 해결 가이드