通常の方法と持つ方法クラスタの高可用性のRedis:
- マスタ・スレーブモード
- センチネルモード
- クラスタモード
もちろん、サードパーティ製のプロキシモードがあり、などCODISとして、この議論はここに記載されていません。
私は学ぶためにちょうどここにいる、私は単に記録したモデルのこれらのタイプを設定します。退役軍人と、この離れて漂流することができますに興味を持っていません。
インストールとRedisの単一のインスタンスを起動し、ここではそれらを繰り返さない、それは実際には比較的簡単です。
マスタ・スレーブモード
このモデルは、単一のマシンのメモリパフォーマンスの問題に解決され、一次インスタンスは、上記の例とは異なるマシンに配置することができます。スレーブ局はマスターに昇格させることができ、マスターホストに障害が発生した場合、マシンからバックアップに使用することができます。一定の遅延を受け入れることができ、マスタから単離することができる場合にある程度のキャッシュのパフォーマンスを向上させる、すべてのパフォーマンスを改善するために、スレーブ・アップから読み出されます。
設定は非常に簡単で、直接接続されたコンフィギュレーションファイルまたはコマンドラインで設定することができます slaveof host:ip
redis-6380.conf
Slaveof 127.0.0.1:6379
若しくは
127.0.0.1:6380>127.0.0.1:6379
各ライン上の例Redisのマスターから始まります。
マスタ・スレーブモード、シングルインスタンスの可用性のいくつかのより良いしばらく、しかし生産は実質的に少ない使用します。彼は失敗し、監視していなかったので。マスターにリンクされている場合は、だけでなく、上記のスレーブに手動でカットする必要があるため。適切な変更を加える必要があり接続するアプリケーションに対応します。これは確かに少し面倒なので、このモードでは少しぎこちない感じています。
二つの見張りモード
ここでは、パターン、およびマスター・スレーブモードのようなビットは、彼はマスタースレーブモードに基づいています。彼は、監視およびフェイルオーバーマスターのためのマスターノードに障害が発生した場合、自動的に、マスターのフェイルオーバーまで、大幅に利便性を向上させ、その後、カットバックを行うために、スレーブマスターの選挙で選択することができ、センチネル提供しますあなたはお互いを監視し、クラスタ配置の間で行うことができます。Sentinelは、個々の死者を防ぎます。
在やり直し-sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 1
ラインと上記の構成、背後にある6379は、彼らは、フェールオーバーを開始する前に1が後にいくつかのセンチネルリンパ節の同意を取ることを表しています。
2つの方法でセンチネルモードの起動モード:
redis-sentinel sentinel-26379.conf
redis-server sentinel-26379.conf --sentinel
センチネルパターンであるため、特別なRedisのノードは、Redisの-CLIを使用して接続することができます。
redis-cli -p 26379
127.0.0.1:26379> info sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=odown,address=127.0.0.1:6379,slaves=1,sentinels=1
十分と企業の事実センチネル一般的なパターンではあまり厳しい状況の下で。
三つのクラスタモデル
異なるマスターフォーム大きなクラスタから多くの例では、複数のマルチマスタから、実施例からマスター型は、上記の実施例から他の内部マスタに転送することができます。補うために実行している少なくとも三つの主ノードクラスタ。
ローカル擬似クラスタモデルIの使用のうちの設定いくつかのマシンが1台のマシンのみで、その後、別のポートで起動します。
そのようなコールのRedisクラスターとして、ディレクトリを作成します。そして、6381-6386ディレクトリにサブディレクトリを作成します。
次のように6381にredis.confプロファイリング、内容は以下のとおりです。
daemonize yes
pidfile redis_6381.pid
logfile redis_6381.log
appendonly yes
bind 127.0.0.1
port 6381
cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
他のディレクトリで、これらは、クラスタ構成の一部、同じ方法である、クラスタの初め、また、上記の構成を追加しますが、ライン上の対応するポートに6381。
その後、それぞれ、単一インスタンス6381-6386を開始
redis-server 6381/redis.conf
redis-server 6382/redis.conf
正常に起動するかどうかを確認します
ps -ef | grep redis
redis-server 127.0.0.1:6381 [cluster]
その後、[クラスタ]とこれは、その行は述べています。
Redisの-トリビュタリ場合、Redisの-CLIでこの方法を推奨されている、上記のほんの一例は、Redisの-TRIBを使用して、クラスタモデルが、また、最後のステップになり始めるされているが、私は地元のredis5.0を使用しますこのような環境にもルビーをインストールする必要があります。私はここにいますの例をRedisの-CLI
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386
出力は、次のように表示されたクラスタが成功し作成さを表します。
私は単純に順序の下で、上記のコマンドによって、私たちのマシンがクラスタモードになり、マスタとスレーブを設定することができると述べました。主に1-レプリカクラスタの後ろ、比1は、上記のように、マスタースレーブ(マスタ/スレーブ)の一例を表す1からマスタである:1、6383から6381へ、メイン6381から6383まで、他の続きますように。
テストは、私はパッケージを行くが、Redisの使用、クラスタと読書に行くの簡単なテストを使用します。
package main
import (
"fmt"
"github.com/go-redis/redis"
"time"
)
func testClient() {
client := redis.NewClusterClient(&redis.ClusterOptions{
Addrs:[]string{"127.0.0.1:6381","127.0.0.1:6382","127.0.0.1:6383","127.0.0.1:6384","127.0.0.1:6385","127.0.0.1:6386",},
})
statuscmd :=client.Set("name","lc",60 * time.Second)
if statuscmd.Err() != nil {
fmt.Println(statuscmd.Err())
}
stringcmd :=client.Get("name")
fmt.Println(stringcmd.String())
}
func main() {
testClient()
}
また、研究されていない、より高度な、ここでは、いくつかのモデルの構成が終了されるだろうが、それはあなたが、より高度な理解したいならば、あなたは、対応するマニュアルを参照するために所有し、まだ非常に簡単で、私も自分の学習過程を記録しました。