반응형
우분투 24.04에서 Redis Cluster를 구성하는 방법
1. 구성 환경
서버 구성
| 서버 | Redis 인스턴스 | 비고 |
| 192.168.0.111 | 6381, 6382 | |
| 192.168.0.112 | 6381, 6382 | |
| 192.168.0.113 | 6381, 6382 |
아키텍처(Redis Cluster)
+---------------------+
| Client App |
+----------+----------+
|
Redis Cluster
192.168.0.111:6381 (Master)
192.168.0.112:6381 (Master)
192.168.0.113:6381 (Master)
192.168.0.111:6382 (Replica)
192.168.0.112:6382 (Replica)
192.168.0.113:6382 (Replica)
2. OS 커널 튜닝 확인
backlog 큐 확인
cat /proc/sys/net/core/somaxconn
65535
Transparent Huge Page 비활성화
cat /etc/rc.local | grep transparent_hugepage
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
메모리 overcommit 설정
sysctl vm.overcommit_memory
또는
cat /etc/sysctl.conf | grep overcommit_memory
vm.overcommit_memory=1
파일 디스크립터 설정
ulimit -n
또는
cat /etc/security/limits.conf | grep nofile
* soft nofile 65535
* hard nofile 65535
3. Redis 설치
Redis Repository 등록
curl -fsSL https://packages.redis.io/gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] \
https://packages.redis.io/deb $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/redis.list
패키지 업데이트
sudo apt update
Redis 설치
sudo apt install -y redis-server
버전 확인
redis-server --version
4. 기본 Redis 서비스 비활성화
Cluster 환경에서는 기본 Redis 서비스를 사용하지 않습니다.
sudo systemctl disable --now redis-server
5. Redis 데이터 디렉토리 생성
각 인스턴스별 데이터 디렉토리를 생성합니다.
sudo mkdir -pv /var/lib/redis/{6381,6382}
권한 설정
sudo chown redis:redis /var/lib/redis/6381
sudo chown redis:redis /var/lib/redis/6382
6. Redis 설정 파일 생성
redis6381.conf 생성
sudo tee /etc/redis/redis6381.conf > /dev/null <<'EOF'
cluster-enabled yes
cluster-node-timeout 3000
appendonly yes
appendfsync everysec
maxmemory 12gb
maxmemory-policy allkeys-lru
tcp-backlog 2048
loglevel verbose
EOF
더보기
---
sudo tee /etc/redis/redis6381.conf > /dev/null <<'EOF'
#################################
# Network
#################################
bind 0.0.0.0
port 6381
daemonize yes
protected-mode no
tcp-backlog 2048
tcp-keepalive 60
timeout 0
#################################
# Security
#################################
requirepass redis_password
masterauth redis_password
#################################
# File
#################################
dir /var/lib/redis/6381
pidfile /var/run/redis6381.pid
logfile "/var/log/redis/redis6381.log"
#################################
# Cluster
#################################
cluster-enabled yes
cluster-config-file nodes6381.conf
cluster-node-timeout 3000
#################################
# Persistence
#################################
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error no
#################################
# RDB / AOF
#################################
rdbcompression yes
rdbchecksum yes
aof-use-rdb-preamble yes
#################################
# Memory / Performance
#################################
maxmemory 12gb
maxmemory-policy allkeys-lru
hz 10
#################################
# Logging
#################################
loglevel verbose
#################################
# 기타
#################################
supervised no
EOF
6382 포트는 port/pidfile/dir/logfile/cluster-config-file만 변경하여 동일하게 생성합니다.
cp /etc/redis/redis6381.conf /etc/redis/redis6382.conf
sed -i 's/port 6381/port 6382/' /etc/redis/redis6382.conf
sed -i 's/redis6381/redis6382/g' /etc/redis/redis6382.conf
sed -i 's/\/6381/\/6382/g' /etc/redis/redis6382.conf
sed -i 's/nodes6381.conf/nodes6382.conf/' /etc/redis/redis6382.conf
---
7. Redis 인스턴스 실행
각 인스턴스를 실행합니다.
redis-server /etc/redis/redis6381.conf
redis-server /etc/redis/redis6382.conf
프로세스 확인
ps -ef | grep redis
포트 확인
ss -lntp | grep redis
728x90
Redis 자동 시작 (systemd)
서비스 파일 생성
sudo tee /etc/systemd/system/redis6381.service > /dev/null <<'EOF'
[Unit]
Description=Redis 6381
After=network.target
[Service]
Type=simple
User=redis
ExecStart=/usr/bin/redis-server /etc/redis/redis6381.conf
ExecStop=/usr/bin/redis-cli -p 6381 shutdown
Restart=always
[Install]
WantedBy=multi-user.target
EOF
서비스 활성
systemctl daemon-reload
systemctl enable --now redis6381
8. Redis 설정 확인
Redis 접속
redis-cli -p 6381 -a redis_password
현재 설정 확인
CONFIG GET tcp-backlog
CONFIG GET maxmemory
CONFIG GET maxmemory-policy
CONFIG GET loglevel
127.0.0.1:6381> CONFIG GET tcp-backlog
1) "tcp-backlog"
2) "2048"
127.0.0.1:6381> CONFIG GET maxmemory
1) "maxmemory"
2) "12gb"
127.0.0.1:6381> CONFIG GET maxmemory-policy
1) "maxmemory-policy"
2) "allkeys-lru"
127.0.0.1:6381> CONFIG GET loglevel
1) "loglevel"
2) "verbose"
9. Redis Cluster 생성
Cluster 생성 명령
redis-cli --cluster create \
192.168.0.111:6381 \
192.168.0.111:6382 \
192.168.0.112:6381 \
192.168.0.112:6382 \
192.168.0.113:6381 \
192.168.0.113:6382 \
--cluster-replicas 1 \
-a redis_password
10. Cluster 상태 확인
Cluster 정보 확인
redis-cli -p 6381 -a redis_password cluster info
노드 확인
redis-cli -p 6381 -a redis_password cluster nodes
cluster_state:ok
cluster_slots_assigned:16384
11. Cluster 테스트
Cluster 모드로 접속
redis-cli -c -p 6381 -a redis_password
데이터 입력
SET testkey redis_cluster
조회
GET testkey
12. 운영 점검 명령
서버 상태
INFO
메모리
INFO memory
클라이언트
CLIENT LIST
Keyspace
INFO keyspace
성능
INFO stats
Replication
INFO replication
Slow Query
SLOWLOG GET 10
Cluster 상태
cluster info
cluster nodes
13. 노드 복구
기존 노드 재조인
redis-cli --cluster add-node \
192.168.0.114:6381 \
192.168.0.111:6381
Replica 추가
redis-cli --cluster add-node \
192.168.0.114:6382 \
192.168.0.111:6381 \
--cluster-slave
14. Redis에서 온라인으로 설정 변경하기
접속
redis-cli -p 6381 -a redis_password
설정 변경
127.0.0.1:6381> CONFIG SET maxmemory 12gb
127.0.0.1:6381> CONFIG SET maxmemory-policy allkeys-lru
127.0.0.1:6381> CONFIG SET loglevel verbose
설정 파일(redis.conf)에 영구 반영
127.0.0.1:6381> CONFIG REWRITE
728x90
반응형
'리눅스' 카테고리의 다른 글
| VMware ESXi 8.0에서 관리자 계정 생성 및 Administrator 권한 부여 방법 (1) | 2026.03.12 |
|---|---|
| NetBox에서 API Token 보안 강화를 위한 API_TOKEN_PEPPERS를 설정하는 방법 (0) | 2026.03.06 |
| 우분투 24.04에서 NetBox를 설치하는 방법 (0) | 2026.03.05 |
| Docker Compose를 사용하여 NetBox를 설치하는 방법 (0) | 2026.03.04 |
| HashiCorp Vault에서 MySQL 동적 계정 구성하는 방법 (0) | 2026.02.23 |