CentOS 에서 Redis 여러개 실행하기

Topic


master-slave-sentinal 구조로 Redis 를 구성하기 위해서 여러 방법을 생각해봤다. 첫째는 하나의 서버에 여러개의 slave 서버를 띄우는 방법. 두번째는 여러개의 서버에 각각 하나씩 slave 를 띄우는 방법.

각각의 장단점은 있다. 첫번째는 여러 서버를 확인하지 않아도 되는 관리하는 관점에서 쉽다는 이점이 있다. 두번째는 그래도 첫번째보다는 더 나은 안정성? 이 있을 수 있겠다.

Redis 를 여러개로 구성하는 이유에 따라 나뉘겠지만, 나는 여기서 Redis 를 단순히 세션 클러스터링으로 사용하기로 했기 때문에 하나의 서버에 여러개의 Redis 를 띄우기로 했다.


How to solve?


1. redis rdb 파일이 작성되는 디렉토리 생성

  • rdb 파일 경로의 경우 Redis 에서 자동으로 생성해주지 않기 때문에 직접 만들어 주고 사용자, 그룹 권한(redis) 도 주어야 한다.
  • 다음은 redis2 라는 새로운 서버를 생성하는 경우의 예제이다.
    mkdir -p /var/lib/redis2/
    chown redis /var/lib/redis2/
    chgrp redis /var/lib/redis2/
    # 또는
    chown redis:redis /var/lib/redis2/
    

    2. 설정 파일 추가

  • 기본으로 설치된 설정 파일을 복사해 몇가지만 수정한다.
  • slaveof 에서 master 의 host 와 port 를 적는다.
  • masterauth 와 requirepass 에 master 에서 설정한 패스워드를 적는다.
  • 나머지는 구글링으로 필요한 내용을 작성했다.
  • 사용자 권한을 부여한다. 권한을 부여하지 않으면 실행 스크립트에서 오류가 발생한다.
    cp /etc/redis.conf /etc/redis2.conf
    chown redis /etc/redis2.conf
    
    slaveof 127.0.0.1 6379
    masterauth {password}
    requirepass {password}
    --- redis2.conf
    

    3.서비스 스크립트 생성

  • 서비스 스크립트의 실행 시작, 종료 부분을 변경한다.
  • daemonize no 를 추가하지 않으면 데이터 삽입 시 충돌이 발생한다.
    cp /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis2.service
    
    ------ redis2.service file ------
    [Service]
    ExecStart=/usr/bin/redis-server /etc/redis2.conf --daemonize no
    ExecStop=/usr/bin/redis-shutdown redis2
    ---------------------------------
    
    systemctl enable redis2
    systemctl start redis2
    


참고


[REDIS] 를 CentOS에 레디 스의 여러 인스턴스를 실행

태그:

카테고리:

업데이트:

댓글남기기