大型、高並行性と高可用性のキャッシュ・アーキテクチャの概要4

、Redisのインストール

RedisのはYUMを設置し、二つの方法でコンパイルされ、用紙が用リファレンスドキュメントをコンパイルするためにインストールインストールマニュアルの公式サイト

1.gccインストール

[root@redis-master ~]# yum -y install gcc

 

2.インストールパッケージをダウンロードします

[root@redis-master ~]# wget http://download.redis.io/redis-stable.tar.gz

 

3.抽出コンピレーション

[root@redis-master ~]# tar xvzf redis-stable.tar.gz
[root@redis-master ~]# cd redis-stable [root@redis-master redis-stable]# make [root@redis-master redis-stable]# make install

 

4.設定ファイルを変更します。

[root@redis-master redis-stable]# mkdir /etc/redis[root@redis-master redis-stable]# mkdir -p /var/redis/6379
[root@redis-master redis-stable]# cp redis.conf /etc/redis/6379.conf [root@redis-master redis-stable]# cd /etc/redis/ [root@redis-master redis]# cp 6379.conf 6379.conf.bak [root@redis-master redis]# grep -Ev '^$|#' 6379.conf.bak > 6379.conf

次のように主な構成は改正します:

#bind 127.0.0.1
protected-mode no
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /var/log/redis_6379.log
dir /var/redis/6379

 

5.生産、サービスを開始します

[root@redis-master redis-stable]# cp utils/redis_init_script /etc/init.d/redis_6379

 

6.スタートとスタートアップサービスに参加

[root@redis-master redis]# service redis_6379 start
[root@redis-master redis]# chkconfig redis_6379 on

 

7.RedisDesktopManager管理ツール

このツールは、グラフィカルな管理ツールRedisのです

ダウンロード:https://pan.baidu.com/s/1no0IWcIEBapfehNi8dfCfwパスワード:7dvc

接続設定:

写真.PNG

効果を接続した後

写真.PNG

 

二、Redisのマスタースレーブのレプリケーションと持続性

サーバの設定1.

非常に単純なものからRedisのマスターコピーは、だけにサーバの設定ファイルから設定を追加する必要があります

[root@redis-slave redis]# sed -i '$a slaveof 172.27.9.30 6379' /etc/redis/6379.conf

 

メインのテスト2.

2.1ホスト上に書き込まれた値

[root@redis-master ~]# redis-cli set test-key abc
OK

機械Redisのキーからの眺め:

写真.PNG

バリュースレーブは2.2を書きます

[root@redis-slave redis]# redis-cli set test-key 123
(error) READONLY You can't write against a read only slave.

間違いを発見されました、スレーブ状態のRedisに書き込むことができません。

 

3.持久化

Redisの持続性は、デフォルトでは2つの方法でRDBとAOFは、RDBモードとして永続あり、単にデフォルトの設定行にコメントする必要があり、デフォルトの永続性をオフにします。

#save 900 1
#save 300 10
#save 60 10000

 

三、keepalivedのインストール構成

1.keepalivedインストール

[root@redis-master ~]# yum -y install keepalived

 

2.keepalived設定

[root@redis-master ~]# more /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id master #router_id 机器标识,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到。 } vrrp_script chk_redis { script "/etc/keepalived/redis-check.sh" interval 2 #健康检查周期 weight 30 #优先级变化幅度 fall 2 #尝试两次都成功才成功 rise 2 #尝试两次都失败才失败 } vrrp_instance VI_1 { #vrrp实例定义部分 state MASTER #设置lvs的状态,MASTER和BACKUP两种,必须大写 interface ens33 #设置对外服务的接口 virtual_router_id 100 #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示 priority 100 #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置验证类型和密码 auth_type PASS #主要有PASS和AH两种 auth_pass 1111 #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同 } virtual_ipaddress { #设置虚拟ip地址,可以设置多个,每行一个 172.27.9.100 } track_script { #执行脚本chk_redis chk_redis } notify_master "/etc/keepalived/redis-master.sh" #指定当切换为master时,执行的脚本 }

比較マスター、スレーブは異なる三点に配置しました。

router_id slave
state BACKUP 
priority 90

パラメータ、オープンノンプリエンプティブモードnopreemt設けられていてもよい前後マスターの切り替えを避けるために、しかし、異常は、操作および保守要員意志タイムリーな介入法、keepalivedのRedisの発生や各種アラームがトリガされます。

 

3.起動し、起動を設定します

[root@redis-master ~]# systemctl start keepalived
[root@redis-master ~]# systemctl enable keepalived

 

四、インストールすることを期待

[root@redis-master ~]# yum -y install expect

期待して使用するスクリプトnotify_master自動用紙を提供するためのインタラクティブなツールです。

 

第五に、高可用性スクリプト

1.redis-check.shスクリプト

[root@redis-master keepalived]# more redis-check.sh 
#!/bin/sh
rediscli="/usr/local/bin/redis-cli" logfile="/var/log/redis_6379.log" result=$($rediscli ping) echo $result echo "-------------------redis-check-------------------" >> $logfile date >> $logfile if [ $result == "PONG" ]; then : echo "Success: the result is $result" >> $logfile 2>&1 exit 0 else echo "Failed:the result is $result " >> $logfile 2>&1 exit 1 fi

国家のRedisの検査のためのスクリプト

 

2.redis-master.shスクリプト

[root@redis-master keepalived]# more redis-master.sh
#!/bin/bash
rediscli="/usr/local/bin/redis-cli" logfile="/var/log/redis_6379.log" sync=`$rediscli info replication|grep master_sync_in_progress|awk -F: '{print $2}'|sed 's/\r//'` #sync=`/usr/local/bin/redis-cli info replication|grep master_sync_in_progress|awk -F: '{print $2}'` echo $sync echo "-------------------change to master-------------------" >> $logfile 2>&1 date >> $logfile if [ $sync == 0 ]; then : echo "the master_sync_in_progress is 0 and excute slaveof no one" >>$logfile 2>&1 $rediscli slaveof no one elif [ $sync == 1 ]; then : sleep 10 $rediscli slaveof no one else echo "the host is master,do nothing" >>$logfile 2>&1 fi /etc/keepalived/exp.sh 172.27.9.31 monitor >>$logfile 2>&1

スイッチング高可用性この記事のスクリプトへの鍵。

メインマスター同期からの切り替えが完了する前に、スクリプトの実行サーバへのスクリプトは、マスター、最初にチェックを切り替えたときに、次に期待してジャンプするためのツールを使用して、IPスレーブスクリプトが172.27.9.30を交換する必要があり、rootのパスワードを31を監視別のサーバーには、Redisのスレーブにその状態を変更します。

 

3.exp.shスクリプト

[root@redis-master keepalived]# more exp.sh
#!/usr/bin/expect -f
set ip [lindex $argv 0 ] set password [lindex $argv 1 ] set timeout 30 spawn ssh root@$ip expect { "*yes/no" { send "yes\r"; exp_continue} "*password:" { send "$password\r";exp_continue } } expect "#*" send "/usr/local/bin/redis-cli slaveof 172.27.9.30 6379\r" send "exit\r" expect eof

IP 172.27.9.31としてスレーブ・スクリプト、スクリプトの役割は、別のサービス実行slaveofコマンドにジャンプします。

 

シックス・テスト

1.アナログRedisのサービス例外

操作:Redisのサービスのマスターが停止しました

予想:マスターのためのVIPドリフト、スレーブマスタースイッチのRedisの状態

テストプロセス:

1.1 Redisのサービスの停止マスター

[root@redis-master keepalived]# service redis_6379 stop

ビュー1.2仮想IP

图片.png

图片.png

ドリフト30-31で見つけVIP

状態のRedis 1.3見ます

[root@redis-slave keepalived]# redis-cli info replication

图片.png

Redisの31は、マスタの状態に切り替えられます

1.4スイッチバック

Redisのサービスには30を開始します

[root@redis-master keepalived]# service redis_6379 start

ビューVIPステータスとRedisの

30:

图片.png

31:

图片.png

結論:異常なRedisのサービス切り替えが発生し、外部機会からサービスを提供する状態をマスターに切り替えます。

 

2.アナログkeepalivedのサービス例外

操作:keepalivedのサービスのマスターが停止しました

予想:VIPドリフト、状態はスイッチをマスターするスレーブのスレーブマスター、Redisの状態への切り替えのRedis

テストプロセス:

2.1 keepalivedのサービスの停止マスター

[root@redis-master keepalived]# systemctl stop keepalived

2.2ビューのVIPステータスとRedisの

30:

图片.png

31:

图片.png

VIP 30-31からドリフトやマスタースレーブが逆;オープンkeepalivedのサービススイッチングをトリガします。

結論:異常、マスタ・スレーブが反転するときにkeepalivedのサービスの切り替えが発生します。

 

3.アナログマスターのダウンタイム

操作:マスター・シャットダウン

予想:VIPドリフト、スイッチをマスターするスレーブのRedisの状況

テストプロセス:

3.1masterサーバのシャットダウン

[root@redis-master ~]# init 0

3.2ビューのVIPステータスとRedisの

图片.png

VIP 31へドリフト状態がマスタに切り換え、30カットトリガーを戻す機会を開きます。

結論:マスタがダウンしたときにスイッチが発生し、機械外にサービスを提供する状態をマスターに切り替えます。

 

これは、Redisの可用性テストを完了します。

おすすめ

転載: www.cnblogs.com/xiaohaigege666/p/10992594.html