Redisの自動インストールとクラスタ実現

Redisのインスタンスのインストール

インストール:インストールパスに応じてセットアップパケットを抽出するがコンパイルされ、自動的に、データをプロファイルテンプレートのポート数に応じて、Redisのウェイパスプロファイルテンプレートのインスタンスにコピーされ

設定ファイル、シェルスクリプトは、パッケージをインストールします

パラメータ1:BASEDIR、Redisのインストールパッケージのパス

パラメータ2:例のインストールパス

パラメータ3:インストールパッケージ

パラメータ4:インストールのポート番号

#!/ binに/ bashの
-e設定
[$#-lt 4]場合。その後、
        "$(ベース名$ 0):スクリプトの引数がありません"エコー
        エコー"$(INSTALLDIR $ 0)[installfilename] [ポート]"
        9番出口
Fiの
PotInUse = `netstatの-anp | awkは'{$ 4印刷}' | $ 4 grepします| トイレ-l`
[$ PotInUse -gt 0]であれば、その後、
  「ERROR」$ 4エコー「ポートが別のプロセスによって使用されています!」
  9番出口
Fiの
basedirに= $ 1
INSTALLDIR = $ 2
installfilename = $ 3
ポート= $ 4
CD $ BASEDIR
タール-zxvf $ installfilename.tar.gz>を/ dev / null 2>&1&
CD $ installfilename
ます。mkdir -p $ INSTALLDIR
PREFIXは= $ INSTALLDIRインストールします
1秒スリープ
CP $ BASEDIR / Redisの。

SED -i "S / instance_port / $ポート/ gの" $ INSTALLDIR / redis.conf
睡眠1Sの
CD $ INSTALLDIR
./bin/redis-server redis.conf>を/ dev / null 2>&1&

プロファイルテンプレート

################################## INCLUDES ############### ####################
/path/to/local.conf#は、
#は/path/to/other.confが含まれます

################################## MODULES ############### ######################
#LoadModuleの/path/to/my_module.so
#LoadModuleの/path/to/other_module.so

################################## 通信網 ############### ######################
バインド127.0.0.1&あなたのIP
instance_portポート
TCP-バックログ511
タイムアウト0
TCPキープアライブ300

################################# GENERAL ################ #####################
デーモン化はい
いいえ監修
pidファイル./redis_instance_port.pid
ログレベルの通知
ログファイル./redis_log.log
16のデータベースを
常にショーのロゴはイエス

################################スナップショット################# ###############
900 1セーブ
300 10 [保存]を
60万保存

ストップ・書き込み・オン・bgsaveエラーはい
はいrdbcompression
はいrdbchecksum
dbfilename dump.rdb
ディレクトリ./

################################# REPLICATION ################ #################
#のmasterauth <マスターパスワード>
レプリカサーブ-古いデータyesの
レプリカ読み取り専用はい
REPL-ディスクレス同期なし
REPL-ディスクレス-SYNC- 5遅らせる
REPL-無効-TCP-NODELAYノー
レプリカ優先度を100

################################## SECURITY ############### ####################
requirepass your_passwrod

################################### CLIENTS ############## ######################
#MaxClientsの10000

############################## メモリ管理 ################## ##############
#maxmemory <バイト>
#maxmemoryポリシーnoevictionの
#1 maxmemory-サンプル5
#レプリカ無視-maxmemoryはい

############################# LAZY解放################### #################
lazyfree-レイジー立ち退き何
lazyfree-レイジー期限切れになりませ全く
lazyfreeない-怠惰なサーバ・デル・ノー
レプリカレイジーフラッシュなし

############################## ONLY MODEを追加################# ##############
appendonlyなし

appendfilename "appendonly.aof"

#1 appendfsync常に
appendfsync everysec
#appendfsyncなし

無appendfsyncオン書き換えない無
オートAOF-書き換え割合100
自動AOF書き換え分サイズの64メガバイトを
AOF-負荷切り捨てはい
はいAOF-使用-RDB-プリアンブルを

CONTACT ################################スクリプティング################ ###############
期限5000を取ります

################################ RedisのはCLUSTER ################ ###############
クラスタ対応はい
#クラスタレプリカ妥当性ファクター10
#クラスタ-必要-フルカバレッジはい
#クラスタ・レプリカ・ノーフェールオーバなし


########################## CLUSTERドッカー/ NATサポート################### #####


################################## SLOW LOG ############## #####################
slowlogログ-遅く-10000
slowlog-MAX-LEN 128

################################ LATENCY MONITOR ################ ##############
レイテンシー・モニターしきい値0

#############################イベント通知################### ###########
通知-キースペース・イベント「」

############################### ADVANCED CONFIG ################# ##############
ハッシュ-MAX-ziplist-エントリ512
ハッシュ-MAX-ziplist値64
リスト-MAX-ziplistサイズ-2
リスト圧縮深度0
セットMAX-INTSET -entries 512
ZSET-MAX-ziplist-エントリ128
ZSET-MAX-ziplist値64
HLLスパース-MAX-3000バイト
ストリームノード-MAX-4096バイト
ストリームノード-MAX-エントリ100
activerehashingはい
クライアント出力バッファ-limit通常0 0
クライアント出力バッファ制限レプリカ256MBの64メガバイト60
クライアント出力バッファ制限のpubsub 32メガバイト60 8メガバイト
#クライアントクエリバッファ制限1GBの
#プロトMAX-バルクLEN 512メガバイト
から10Hz
するダイナミックはいヘルツ
はいAOF-書き換え増分のfsync
RDB-セーブ-増分にfsyncはい


########################### ACTIVEデフラグ##################### ##

#有効なActiveデフラグ
#1 activedefragはい
フラグメンテーション廃棄物#最小量は、活性デフラグ開始する
#activedefrag-無視バイトの100MBの
アクティブデフラグ開始する断片の#最小割合を
#1 activedefrag閾値低級10
にフラグメンテーションの#最大パーセンテージを我々が使用した最大努力
#アクティブデフラグ-閾値上部100
CPUパーセンテージでデフラグ用#最小限の労力
#アクティブデフラグサイクル分5
CPUパーセンテージでデフラグ用#最大努力
#アクティブデフラグサイクル-MAX 75
#最大処理されるセット/ハッシュ/ ZSET /リストフィールドの数
#メイン辞書スキャン
#アクティブデフラグ-MAX-スキャンフィールド1000年

インストール例
のsh redis_install.shは/ usr / local / Redisの /は/ usr / local / redis5 / redis9008 / Redisの-5.0.4 9008

ディレクトリ構造のREDI例

Pythonの自動化されたクラスタに基づいて、ノードNode_1のの初期化は〜node_6は、ノードインスタンスがクラスタの自動化、配布スロットからトランキングモード、大手3及び3に必要、ノードを完了するのに約3秒から、追加されます

輸入Redisの

#master
Node_1の= { 'ホスト': '127.0.0.1'、 'ポート':9001、 'パスワード': '***'}
node_2 = { 'ホスト': '127.0.0.1'、 'ポート':9002、 'パスワード': '***'}
node_3の= { 'ホスト': '127.0.0.1'、 'ポート':9003、 'パスワード': '***'}
#slave
ノードNode_4 = { 'ホスト':「127.0 .0.1' 、 'ポート':9004、 'パスワード': '***'}
をnode_5 = { 'ホスト': '127.0.0.1'、 'ポート':9005、 'パスワード': '***'}
node_6 = { 'ホスト': '127.0.0.1'、 'ポート':9006、 'パスワード': '***'}

redis_conn_1 = redis.StrictRedis(ホスト= Node_1の[ "ホスト"]、ポート= Node_1の[ "ポート"]、パスワード= Node_1の[ "パスワード"])
redis_conn_2 = redis.StrictRedis(ホスト= node_2 [ "ホスト"]、ポート= node_2 [ "ポート"]、パスワード= node_2 [ "パスワード"])
redis_conn_3 = redis.StrictRedis(ホスト= node_3の[ "ホスト"]、ポート= node_3の[ "ポート"]、パスワード= node_3の[ "パスワード"])

#クラスタ満たす
redis_conn_1.execute_command( "クラスタ大会{0} {1}"形式(node_2 [ "ホスト"]、node_2 [ "ポート"]))
redis_conn_1.execute_command( "クラスタ大会{0} {1}"。フォーマット(node_3の[ "ホスト"]、node_3の[ "ポート"]))
プリント(「#################フラッシュスロット########### ###### ')
redis_conn_1.execute_command('クラスタflushslots ')
redis_conn_2.execute_command('クラスタflushslots ')
redis_conn_3.execute_command('クラスタflushslots ')
プリント(' ############ #####のスロットを追加################# ')
iについての範囲(0,16383 + 1)において、
    iは= 5461を<場合:
        試す:
            redis_conn_1.execute_commandを( 'クラスタaddslots {0}'形式(I))。
        除きます:
            プリント(「クラスタaddslots {0}。フォーマット(I)+ 'エラー')
    ELIF 5461 <iおよびiは10922 = <:
        試す:
            redis_conn_2.execute_command( 'クラスタaddslots {0}'形式(i))を
        除く:
            プリント( 'クラスタaddslots {0}'形式(I)+ 'エラー')。
    ELIF 10922 <I:
        試す:
            redis_conn_3.execute_command( 'クラスタaddslots {0}'形式(i))を
        除く:
            プリント( 'クラスタaddslots {0}'形式(I)+ 'エラー')
印刷()
プリント( '#################クラスタの状態#################')
プリント()
印刷( '##### ############# '+ STR(Node_1の[ "ホスト"])+': '+ STR(Node_1の[ "ポート"])+' ########## ######## ')
プリント(STR(redis_conn_1.execute_command('クラスタ情報」)、符号化= "UTF-8")。スプリット( "の\ n")[0])
印刷( '##################' + STR(node_2 [ "ホスト"])+ ':' + STR(node_2 [ "ポート"])+ '## ################ ')
プリント(STR(redis_conn_1.execute_command('クラスタ情報」)、エンコード= "UTF-8")。スプリット( "の\ n")[0 ])
印刷( '##################' + STR(node_3の[ "ホスト"])+ ':' + STR(node_3の[ "ポート"])+ [ ################## ')
プリント(STR(redis_conn_1.execute_command('クラスタ情報」)、エンコード= "UTF-8")。スプリット( "の\ n") [0])

#slaveクラスタ満たす
redis_conn_1.execute_command( "クラスタ大会{0} {1}"形式(ノードNode_4 [ "ホスト"]、ノードNode_4 [ "ポート"]))
redis_conn_2.execute_command( "クラスタ大会{0} {1}" .format(をnode_5 [ "ホスト"]、をnode_5 [ "ポート"]))
redis_conn_3.execute_command( "クラスタ大会{0} {1}"形式(node_6 [ "ホスト"]、node_6 [ "ポート"]))


#clusterノード
プリント(STR(redis_conn_1.execute_command( 'クラスタ・ノード')、符号化= "UTF-8"))

このようなクラスタRedisのは、インストールインスタンスのクラスタへのインストールから、環境依存性自体は、ビルドプロセスは1分以内実質的に完了し、問題ありません。

おすすめ

転載: www.linuxidc.com/Linux/2019-09/160732.htm