Redis

Redis 2015. 2. 25. 11:32

redis 및 sentinel 설치 (cent os 기준)

    failover에 사용될 sentinel은 redis에 포함되어 있습니다.

    실행 시 파라미터와 config만 설정해주면 사용할 수 있습니다.

    설치될 경로는 /home/jeong/apps/redis-2.6.14 로 하겠습니다.

 

    $ cd /home/jeong/pkgs

    $ wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz

    $ tar xzf redis-2.6.14.tar.gz

    $ cd redis-2.6.14

    $ make PREFIX=/home/jeong/apps/redis-2.6.14 install

    $cd /home/jeong/apps

    $ln -s /home/jeong/apps/redis-2.6.14 redis

 

    위와 같이 설치하고 나면 설치경로의 bin 폴더에 redis를 실행하기위한 바이너리만 설치가 됩니다.

    이것만 가지고도 실행이 가능하나 서비스하기 편하게 디렉토리를 다음과 같이 구성하는것을 추천드립니다.

 

     $REDIS_HOME/bin

     $REDIS_HOME/conf

     $REDIS_HOME/logs

     $REDIS_HOME/pid

     $REDIS_HOME/dump

 

redis 설정

    config 파일을 복사합니다.

    $ cd /home/jeong/apps/redis

    $ cp /home/jeong/pkgs/redis-2.6.14/conf/redis.conf conf/

 

    - 기본 설정

    redis를 demon으로 서비스하기 위해 아래의 설정을 변경해줍니다.

    나머지 설정항목은 필요에 따라 변경하시면 됩니다.

 

    $ vi conf/redis.conf

    daemonize yes

    pidfile /home/jeong/apps/redis/pid/redis.pid

    logfile /home/jeong/apps/redis/logs/redis.log

    dbfilename /home/jeong/apps/redis/dump/dump.rdb

 

    레디스 실행중에 일정량 이상 변경이 있으면 자동으로 파일에 저장하게 되는데요.

    너무 자주 저장하게 되면 속도 문제가 있으니 저장 파라미터도 적절히 수정해줍니다.

    예를들어 60초에 1만번 이상의 변경이 일어날때 저장하게 하려면 다음과 같이 설정합니다.

    #save <seconds> <changes>

    save 60 10000

 

    - 데이터복제 설정

    두대의 서버를 사용하고 마스터는 192.168.0.10에 슬레이브는 192.168.0.11에 설치했다고 가정하겠습니다.

    마스터쪽에는 별도의 설정이 필요 없고, 슬레이브 쪽에만 아래와 같이 설정해줍니다.

    slaveof 192.168.0.1 6379

    slave-read-only yes

 

sentinel 설정

    서버 두대에 redis와 sentinel을 각각 1개씩 실행시키려고 합니다.

    먼저 sentinel 설정 파일을 복사합니다.

    $ cp /home/jeong/pkgs/redis-2.6.14/conf/sentinel.conf conf/

    $ vi conf/sentinel.conf

 

    - 모니터링 설정

    sentinel monitor <master-name> <master-ip> <master-port> <quorum>  입니다.

    quorum 파라미터는 몇개의 sentinel로부터 redis down 통지를 받으면 슬레이브에서 마스터로 전환할지 결정하는 파라미터입니다.

    두대의 sentinel을 실행할텐데 2로 잡아두면, 둘중 하나의 sentinel이 down되었을 경우 fail over동작하지 않습니다.

 

    마스터쪽 sentinel 설정입니다.

    sentinel monitor mymaster 127.0.0.1 6379 1

 

    슬레이브쪽 설정입니다.

    sentinel monitor mymaster 192.168.0.10 6379 1

 

    슬레이브 IP에 대한 설정은 별도로 필요하지 않습니다.

    redis가 실행된 상태에서 sentinel을 실행하면 redis로부터 연결된 slave 목록을 알아서 받아오게 됩니다.

 

    - 페일오버 시간 설정

    1초에 한번씩 마스터가 살아있는지 확인하게 되는데요. 10초동안 응답하지 못하면 페일오버가 동작하도록 설정했습니다.

    sentinel down-after-milliseconds mymaster 10000

 

    - 기본 최소 설정

    다른 설정은 필요에 따라서 조절해줍니다.

 

        |- 마스터 기본설정

        port 26379

        sentinel monitor mymaster 192.168.0.10 6379 1

        sentinel down-after-milliseconds mymaster 10000

        sentinel can-failover mymaster yes

        sentinel parallel-syncs mymaster 1

        sentinel failover-timeout mymaster 900000

 

        sentinel monitor resque 192.168.0.11 6379 1

        sentinel down-after-milliseconds resque 10000

        sentinel can-failover resque yes

        sentinel parallel-syncs resque 1

        sentinel failover-timeout resque 900000

 

 

        |- 슬레이브 기본 설정

        port 26379

        sentinel monitor mymaster 192.168.0.11 6379 1

        sentinel down-after-milliseconds mymaster 10000

        sentinel can-failover mymaster yes

        sentinel parallel-syncs mymaster 1

        sentinel failover-timeout mymaster 900000

 

        sentinel monitor resque 192.168.0.10 6379 1

        sentinel down-after-milliseconds resque 10000

        sentinel can-failover resque yes

        sentinel parallel-syncs resque 1

        sentinel failover-timeout resque 900000


 

    - sentinel을 deamon으로 서비스하기 위한 설정

    daemonize yes

    pidfile /home/jeong/apps/redis/pid/sentinel.pid

    loglevel notice

    logfile /home/jeong/apps/redis/logs/sentinel.log

 

 

실행

   - redis 실행

    $cd /home/jeong/apps/redis

    $ ./bin/redis-server conf/redis.conf

 

    $./bin/redis-server conf/sentinel.conf --sentinel

 

 

 

redis 실행 후 마스터를 강제로 종료시키면 슬레이브가 마스터로 전환되는것을 확인할 수 있습니다.

이후에 원래의 마스터를 다시 실행시키면

    dump파일에서 데이터를 읽고난 후

    지금의마스터(192.168.0.11)에서 데이터를 복제해서 데이터를 동기화 시킵니다.

 

가끔 마스터로 승격되지 않는 버그가 있는데, 이럴경우 ./bin/redis-cli slaveof no one 를 통해 강제로 마스터로 전환 가능합니다.

[출처] redis failover|작성자 투디


Posted by 명혀니
,