한줄공지
  • 등록된 공지내용이 없습니다.

우분투 20.04에서 Redis를 설치 및 설정 가이드(Install and Configure Redis on Ubuntu 20.04)

2022년 10월 25일
조회수 312
코멘트 1

목차

Redis는 오픈소스(BSD  라이센스)기반 메모리 DB입니다. 이를 Memcached대안으로 사용하여 간단한 Key-Value 데이터를 저장 할 수 있습니다. 또한 NoSQL 데이터베이스로 사용하거나 Pub-Sub패턴을 사용하는 메세지 서버로도 사용 할 수 있습니다.

이 가이드는 우분투 20.04 또는 우분투 18.04에서 최신 Redis 버젼을 설치, 구성 및 설정방법을 안내 합니다.

 

Redis 설치

Redis는 공식 Ubuntu 레포지토리에서 제공되고 있으나 최신 Redis는 아닙니다. 이 가이드에서는 커뮤니티에서 신뢰된 chris-lea/redis-serverPPA를 사용하여 설치를 진행 합니다.

chris-lea/redis-serverPPA를 설치하기 위해서 APT 저장소를 추가 합니다.

$ sudo add-apt-repository ppa:chris-lea/redis-server

패키지 목록을 업데이트 한 다음 Redis를 설치 합니다.

$ sudo apt-get update
$ sudo apt-get install redis-server -y

Redis가 부팅시 실행되도록 설정 합니다.

$ sudo systemctl enable redis-server.service

 

Redis 구성

즐겨 사용하는 편집기에서 Redis구성 파일을 불러옵니다.

$ sudo vi /etc/redis/redis.conf

Redis가 수신 대기할 IP주소를 업데이트 합니다.

  • 애플리케이션 서버에 Redis를 설치 했다면 기본 설정으로 셋팅 합니다.
    bind 127.0.0.1 ::1
  • 127.0.0.1로 설정하면, Local서버 이외 즉, 외부에서의 접속은 제한 됩니다. 외부에서 접속이 필요할 경우 서버의 사설 IP를 추가로 설정 합니다. 0.0.0.0 즉 모든 외부 접속을 허용할 경우 보안에 취약 할 수 있습니다.
    bind 127.0.0.1 ::1 10.25.96.4

 

Redis에 대한 메모리 용량을 설정 합니다. 일반적으로 백만개의 Key-Value 데이터의 경우 85MB정도의 메모리를 사용 합니다.

maxmemory 128mb

기본적으로maxmemory에 도달하면 Redis는 새로운 데이터 저장을 중지합니다. Redis가 자동으로 오래된 데이터를 제거하고 새 데이터를 계속 저장하도록 하려면 Redis에 제거 방법을 정의 해야 합니다. maxmemory-policy 지시문에 대한 권장 값인 allkeys-lru를 설정합니다.

maxmemory-policy allkeys-lru

기본적으로 Redis는 메모리 데이터를 지정된 조건 및 기간에따라 디스크에 저장 합니다.

save 900 1       # 최소 1개의 키가 변경된 경우 900초(15분)후 디스크에 저장
save 300 10      # 10개 이상의 키가 변경된 경우 300초(5분)후 디스크에 저장
save 60 10000    # 10,000개의 키가 변경된 경우 60초후 디스크에 저장

위의 기본 설정을 사용하면 Redis가 다시 시작할때마다 저장된 데이터를 메모리에 로드합니다. 따라서 이전의 메모리 내 데이터가 복원됩니다. 이 기능이 필요하지 않은 경우 해당 행을 주석처리하면 완전히 비활성화 할 수 있습니다.

#save 900 1       # 최소 1개의 키가 변경된 경우 900초(15분)후 디스크에 저장
#save 300 10      # 10개 이상의 키가 변경된 경우 300초(5분)후 디스크에 저장
#save 60 10000    # 10,000개의 키가 변경된 경우 60초후 디스크에 저장

구성 파일을 저장하고 닫은 다음 Redis를 다시 시작하여 변경사항을 적용 합니다.

$ sudo systemctl restart redis-server.service

 ​​​​​​

세부 설정 가이드

Redis 로그 파일을 엽니다.

$ tail /var/log/redis/redis-server.log

다음과 같은 정보가 표시 됩니다.

72551:M 25 Oct 2022 03:14:58.820 # Server initialized
72551:M 25 Oct 2022 03:14:58.820 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
72551:M 25 Oct 2022 03:14:58.820 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
72551:M 25 Oct 2022 03:14:58.821 * Ready to accept connections
72551:signal-handler (1666669112) Received SIGTERM scheduling shutdown...
72551:signal-handler (1666669112) Received SIGTERM scheduling shutdown...
72551:M 25 Oct 2022 03:38:32.620 # User requested shutdown...
72551:M 25 Oct 2022 03:38:32.620 * Saving the final RDB snapshot before exiting.
72551:M 25 Oct 2022 03:38:32.630 * DB saved on disk
72551:M 25 Oct 2022 03:38:32.631 * Removing the pid file.
72551:M 25 Oct 2022 03:38:32.631 # Redis is now ready to exit, bye bye...
73509:C 25 Oct 2022 03:38:32.876 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
73509:C 25 Oct 2022 03:38:32.876 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=73509, just started
73509:C 25 Oct 2022 03:38:32.876 # Configuration loaded

 ​​​​​​위의 첫번째 경고를 수정하려면 다음 명령을 입력 합니다.

$ echo 'vm.overcommit_memory = 1' | sudo tee -a /etc/sysctl.conf > /dev/null
$ sudo sysctl -p

위의 두번째 경고를 수정하려면 새로운 파일을 생성 합니다.

$ sudo vi /etc/rc.local

다음 텍스트를 해당 파일에 붙여넣습니다.

#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
systemctl restart redis-server.service
exit 0

해당 파일을 저장하고 닫습니다. 그런 다음 루트계정의 소유로 권한을 변경 합니다.

$ sudo chown root:root /etc/rc.local
$ sudo chmod 770 /etc/rc.local

 

선택사항:

  • 이 Redis서버가 애플리케이션 서버와 분리되어 있고 ufw가 설치된 경우 Redis포트에 대한 연결을 허용하도록 ufw를 구성합니다. Redis의 포트는 6379입니다.
    $ sudo ufw allow 6379
  • Ubuntu 18.04에 Redis를 설치하면 Redis는 "TCP Backlog"에 대한 추가 경고를 트리거 합니다. 이 경고를 수정하려면 다음 명령어를 입력합니다.
    $ echo 'net.core.somaxconn = 512' | sudo tee -a /etc/sysctl.conf > /dev/null
    $ sudo sysctl -p

 

설정 확인

시스템을 재부팅 합니다.

$ sudo reboot

Redis 로그 파일을 열어 위의 두가지 경고가 사라졌는지 확인 합니다.

$ sudo tail /var/log/redis/redis-server.log

 

애플리케이션 서버로 전환 후 다음 작업을 수행하여 Redis서버와 통신 할 수 있는지 확인 합니다.

 

$ sudo add-apt-repository ppa:chris-lea/redis-server
  • 공식 레포지토리에서 redis-tools 패키지가 제공하는 redis-cli를 설치 합니다.

    $ sudo apt-get install redis-tools
  • redis-cli를 이용하여 Redis 서버에 연결 합니다.

    $ redis-cli -h 192.0.2.1
  • 연결에 성공하면 다음과 같은 Redis 명령 프롬프트가 표시 됩니다.

    10.25.96.4:6379> _

    작동하는지 확인하기 위해 몇가지 Redis 명령을 입력 합니다.

    set testkey testvalue
    get testkey
    exit

    다음 결과가 표시되면 Redis가 정상적으로 설치되었습니다.

    10.25.96.4:6379> set testkey testvalue
    OK
    10.25.96.4:6379> get testkey
    "testvalue"
    10.25.96.4:6379> exit

안정적이고 저렴한 가상 서버(VPS) 안내

안정적인 서버 호스팅을 찾고 계신가요? 지금 Vultr 호스팅을 한번 이용 해 보세요. 지금 보고 계신 HaruLogs 사이트도 Vultr에서 VPS 호스팅 하고 있습니다. 한국, 일본, 미국등 다양한 국가에 클릭 몇번으로 안정적이고 저렴한 VPS를 운영 할 수 있습니다.

아래 배너를 통해 회원 가입을 하시면 100달러의 무료 크레딧을 받을 수 있습니다. 100달러의 무료 크레딧은 Vultr의 최소 사양 VPS를 20대 동시 운영가능한 크레딧입니다.

지금 무료로 Vultr $100 크레딧 선물 받기

 

Vultr 서비스 요약

  • VPS
    • 인스턴스
      • AMD 또는 Intel High Performance 인스턴스 최저 $6 - 1vCPU, 1GB Memory, 2TB Bandwidth, 25GB NVMe
    • 엣지
  • Block Storage
  • Object Storage (AWS S3 호환)
  • Firewall
  • Network
  • Load Balancers
  • Kubernetes
  • Databases
포스트 통계
지금 보고있는 포스트의 통계 데이터를 확인 해 보세요.
  • 총 조회수
    312
  • 최근 30일 조회수
    33
연관 포스트
코멘트 작성