[과제] NHN Cloud 인스턴스에 Redis 설치

강세준·2023년 1월 20일
0

nhn

목록 보기
6/7

 인스턴스 환경

OS 버전아키텍처
CentOS 7.9x86_64

1. 압축파일을 이용한 설치(Binary Install)

1) NHN Cloud 인스턴스 생성 및 접속

인스턴스 생성 관련 링크

#접속
ssh -i [키 페어 이름.pem] centos@1[floating IP]

2) 최신 버전의 설치 파일 가져오기 (공식 튜토리얼)


3) 설치

3-1) 압축파일 다운받기
$ wget (설치파일 링크)

3-2) 압축해제
# z(gzip 사용) x(압축해제) v(압축,해제 시 파일 리스트 출력) f(파일명 지정)
$ tar -zxvf (redis_version.tar.gz)

3-3) redis 설치
$ cd (압축해제 파일)
make install

3-3-1) no python3 오류
# python3 설치
$ sudo yum install -y python3

3-3-2) cc: command not found
# gcc 설치
$ sudo yum install -y gcc

3-3-3) fatal error: jemalloc/jemalloc.h 파일 디렉토리가 없습니다.
# deps폴더안의 모든 make파일들에 make 명령어를 수행하여 소스파일 컴파일
$ cd deps
$ make hdr_histogram hiredis jemalloc linenoise lua

3-3-4) 허가 거부 error
# 관리자 권한으로 make install 명령어 수행
$ sudo make install

4) 레디스 실행

4-1) 레디스 서버 실행
$ redis-server

4-2) netstat 명령어를 통해 포트 오픈 확인
$ netstat -ap | grep [레디스 서버 실행시 나타난 포트번호]

4-3) 레디스 서버에 커맨드를 보내고 응답 받을 수 있는 터미널 실행
$ redis-cli -h [접속 IP] -p [포트] -a [패스워드] 

netstat
네트워크의 상태를 표시하는 명령어
option : -a : 모든 소켓의 상태를 표시한다, -p : 프로토콜의 이름이나 별칭이 표시된다, -i : 모든 인터페이스의 상태를 표시한다.


2. yum을 이용한 설치

목표 : binary install과 같이 최신 버전 설치

1) NHN Cloud 인스턴스 생성 및 접속

2) 설치

2-1) 버전확인

$ yum info redis

현재 yum repository로는 redis 3버전 설치가 설정되어 있기 때문에
최신 버전을 받기 위해서는 Remi 저장소를 설치할 필요가 있다.

Remi 저장소
Remi는 가장 최신의 LAMP(Linux,Apach,Mysql,PHP)기반의 스택을 제공하는 yum repository 입니다.

2-2) Remi 설치

remi 저장소 설치
$ yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum 저장소에 remi저장소 사용으로 전환
$ yum-config-manager --enable remi

2-3) redis 설치

$ sudo yum install -y redis

3) 레디스 실행

$ redis-server



3. Redis 삭제 (uninstall)

nhn Cloud 인스턴스 CentOS7 환경

3-1) binary

3-1-1) redis-server 위치 찾아서 삭제

$ which redis-server

$ sudo rm /usr/local/bin/redis*

3-1-2) 압축 파일 및 압축 해제 폴더 삭제

$ sudo rm -rf (레디스 폴더)

3-2) yum

$ sudo yum remove -y redis



4. Redis 실행 시 Warning 해결(피드백)

0. warning 내용

1. no config file specified

설정파일을 찾지 못하여 발생하는 경고
redis-server 실행시 옆에 설정파일의 경로를 함께 붙여주면 해결가능하다.

설치 이후 심볼릭 링크를 만들어두면 더욱 편하게 사용 할 수 있다.
ln -s redis-7.0.8 redis

2. maxclienets, maximum open files

최대 오픈 파일 개수는 적어도 10032개여야 하나 OS의 제한으로 설정할 수 없다는 경고
ulimit -n 명령어를 통해 현재 설정값을 확인하고 NHN Cloud 인스턴스 환경에서는
루트 권한이 아니므로 ulimit -n (개수)의 명령어로 설정을 할 수 없기 때문에
vi /etc/security/limits.conf를 통해 직접 값을 수정하도록 한다.

Soft : 기본으로 적용되는 설정
Hard : 최대치로 늘릴 수 있는 설정

이후 세션의 연결을 끊고 다시 연결해서 ulimit -n명령어를 수행하면

제대로 바뀌었음을 확인할 수 있다.

3. TCP backlog

Tcp backlog는 레디스 서버의 초당 클라이언트 연결 개수를 의미하고 레디스 서버는 511로 설정되었지만 리눅스 설정은 128로 되어있어서 리눅스 설정 값을 증가시키라는 경고이다.
TCP backlog는 somaxconn 파라미터를 변경하면 된다.

# somaxconn 개수 확인
$ sysctl -a | grep somaxconn

# somaxconn 설정
$ sysctl -w net.core.somaxconn=1024


# 리부팅 이후에도 변경한 값 적용
$ sudo vi /etc/sysctl.conf
net.core.somaxconn = 1024

somaxconn은 네트워크 관련 커널 파라미터로 listen()으로 바인딩 된 서버 소켓에서 accept()를 기다리는 서버 소켓 개수이다.
somaxconn은 hard limit이기 때문에 실제 메모리 사용량은 레디스 서버에서 설정한 Tcp backlog이다.

4. Memory overcommit must be enabled

vm.Overcommit_memory는 가상 메모리 사용 관련 커널 파라미터로 레디스는 In memory database이기 때문에 파라미터 값을 1로 설정할 것을 권장하고 있다.(현재 서버 default 값은 0)

# overcommit_memory 파라미터 확인
$ sysctl -a | grep overcommit memory

# overcommit_momeory 설정
$ sysctl -w vm.overcommit_memory=1


#리부팅 이후에도 변경한 값 적용
$ sudo vi /etc/sysctl.conf
vm.overcommit_memory = 1

5. 해결 결과

참고

Redis 공식 문서 : https://redis.io/
https://www.lesstif.com/system-admin/rhel-centos-5-6-7-epel-remi-repository-6979743.html
http://redisgate.kr/redis/configuration/redis_start.php

profile
데이터를 탐구하는 개발자

0개의 댓글