2017年10月29日日曜日

redis/sentinelの導入




































準備:selinux off
            systemctl disable firewalld
            systemctl stop firewalld
   又は、firewallについては、6379ポートを解放させること


1)wgetをインストールする。
# yum -y install wget


2)EPEL REMI を導入する。
$ sudo yum -y install epel-release
$ wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo rpm -Uvh remi-release-7*.rpm

3)redisのインストール
# yum --enablerepo=remi,remi-test,epel install redis


■□Redis1の設定■□

1)以下を編集する

vi /etc/reidis.conf
---------/etc/reidis.conf --------------------
bind 192.168.1.201  #自分のIPを記載すること
bind 0.0.0.0
-----------------------------------------------

2)サービスの登録と起動を行う
# systemctl enable redis
# systemctl start redis


■□Redis2の設定■□

1)以下を編集する

vi /etc/redis.conf
---------/etc/redis.conf --------------
bind 0.0.0.0
bind 192.168.1.202            #自分のIPを記載すること
slaveof 192.168.1.201 6379     #masterIPを記載すること
---------------------------------------

<メモ>
slaveof 192.168.11.201 6379は、
masterredisと連携(レプリケーション)する箇所なので
入力のミスがないようにする。



2)サービスの登録と起動を行う
# systemctl enable redis
# systemctl start redis


■□Redis sentinelの設定■□
(対象:redis1/2)

1)redis-sentinel.confの編集を行う

# vi /etc/redis-sentinel.conf
-----------------------------------------------------------------
①以下のprotected-mode noのコメントアウト “#”を外す。
protected-mode no

②以下を無効化にする。
#sentinel monitor mymaster 127.0.0.1 6379 2

③以下の設定を追加する
間違えて、相手側のIPを入力しないこと!
sentinel monitor mymaster 192.168.1.201 6379 2  #自分のIPを入力する

④以下をページの末端に記載する。
sentinel down-after-milliseconds mymaster 3000
sentinel failover-timeout mymaster 6000
-------------------------------------------------------------------


③sentinel monitor "グループ名" 、"IP" 、"ポート番号"、 "sentinelの数"
④は、Master/Slaveのダウン検知後に移行するまでの時間とフェイルオーバー処理の
タイムアウトを示す。



2)サービスの起動を行う
# systemctl enable redis-sentinel
# systemctl start redis-sentinel


■□フェイルオーバーの設定■□
1)Redis1で実行を行い、Redis2を昇格させる。
redis-cli -p 26379 sentinel failover mymaster

2)Redis2で以下を実行して、Redis1を昇格させる。
systemctl stop redis

3) Redis1で以下のコマンドを投入する。
redis-cli -h 192.168.1.201

4)infoと入力する。
192.168.1.201:6379> info

5)Redis1masterに昇格できていることと、Redis2salveとして
リンクされていることを確認
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.202,port=6379,state=online,offset=17201501,lag=0

6)slave(Redis2)で以下を実施
systemctl start redis

7)master(Redis2)で以下のコマンドを投入する。
redis-cli -h 192.168.1.202

8)infoと入力する。
192.168.1.202:6379> info

9)以下の表示になっていること。
# Replication
role:slave
master_link_status:up


<メモ>
masterからslaveに切り替えるまで、10秒程度かかるので、注意すること



■□keepalivedの導入■□

1)keepalivedのインストールを行う
# yum -y install keepalived



2)/etc/keepalived/keepalived.confの編集を行う

# vi /etc/keepalived/keepalived.conf
-----------/etc/keepalived/keepalived.conf----------------
! Configuration File for keepalived

vrrp_instance VI_1 {
    state BACKUP
    interface team0
    virtual_router_id 11
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass dps123
    }
    virtual_ipaddress {
        192.168.1.200
    }
}

virtual_server 127.0.0.1 16379 {
    delay_loop 5
    lb_algo rr
    real_server 127.0.0.1 6379 {
        MISC_CHECK {
            misc_path "/etc/keepalived/redis-check.sh"
            misc_timeout 10
        }
    }
}

----------------------------------------------------------------------

①interface team0は、ネットワークインターフェースのポート名
②192.168.1.200は、keepalivedのVIP

記載するネットワークデバイス番号team0は、物理サーバーによって異なるので
ip a
と入力して、IPアドレスの横に表示されているネットワークデバイスを
把握しておくこと



3)以下にて、keepalivedのヘルスチェックファイルを作成する。

# vi /etc/keepalived/redis-check.sh
------- /etc/keepalived/redis-check.sh ------------------------------------------------------
#!/bin/sh
# redis-check.sh

slave_check=`redis-cli -h 192.168.1.202 info | grep role:slave | grep -v grep | wc -l`
ps_check=`ps -ef | grep redis-server | grep -v grep | wc -l`
ping_check=`ping -c 1 192.168.1.201 | grep Unreachable | grep -v grep | wc -l`


if [ "${slave_check}" = 1 ] || [ "${ps_check}" = 0 ]; then

 systemctl restart keepalived

elif [ "${ping_check}" = 1 ]; then

 ip addr add 192.168.1.200/32 dev team0


fi

sleep 1
---------------------------------------------------------------------------------------------------------------

”slave_check=”記載するIPは、自分のIPを記載する
”ping_check=”記載するIPは、相手のIPを記載する
“ip addr add”に追加するIPはkeepalived用の仮想IPです。

記載するネットワークデバイス番号team0は、物理サーバーによって異なるので
ip a
と入力して、IPアドレスの横に表示されているネットワークデバイスを
把握しておくこと



4)/etc/keepalived/redis-check.shの権限の変更を行う

# chmod 777 redis-check.sh

権限の変更を行わないと、keepaliveのヘルスチェックが実行不可になるので注意


5)keepalivedのサービスを起動を行う

# systemctl enable keepalived
# systemctl start keepalived



0 件のコメント:

コメントを投稿

php log(ECS ログ出力)

# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...