zookeeper,kafka,redisクラスタ環境構築
高同時環境構築
zookeeperクラスタ,kafkaクラスタ,redisクラスタの構築
zookeeperクラスタ
ダウンロードzookeeper
ダウンロード先:https://www.apache.org/dyn/closer.cgi/zookeeper/適切なミラーアドレスを選択し、zookeeperバージョンを選択します.3.4.10の例でダウンロードに成功した後、コマンドを実行し、解凍を完了します.
zookeeper構成
Zookeeperはクラスタモードを推奨し、奇数台のインスタンス配置を推奨します(zookeeperの特性:クラスタに半分以上のマシンが正常に動作している限り、クラスタ全体が対外的に利用可能であり、クラスタ配置2 nまたは2 n-1個のzookeeperインスタンスに対して、インスタンスダウンタイムの許容度は同じであり、いずれもn-1です.したがって、より効率的でリソースを節約するために、奇数台のインスタンス配置モードを推奨します).ここでは、3台のインスタンス配置を例に挙げる(ipアドレスは172.211.133.38 172.2133.39 172.21.3.40).
まず最初のzookeeperの例を構成し、ipアドレスは172.21.133.38であり、zookeeperの下のconfディレクトリに入り、zooを構成する.cfgファイル.構成情報は次のとおりです.
パラメータの説明 tickTime:zookeeperで使用する基本時間単位、ミリ秒値. initLimit:zookeeperクラスタには複数のserverが含まれ、そのうちの1つはleaderであり、クラスタ内の残りのserverはfollowerである.initLimitパラメータ構成初期化接続時、followerとleader間の最長同期待ち初期化時間.このときこのパラメータは10に設定、説明時間は10倍tickTime、すなわち10*2000=2000 ms=20 sに制限. syncLimit:このパラメータは、Zookeeperクラスタにおけるleaderインスタンスとfollowerインスタンスとの間でメッセージ、要求、応答を送信する最大時間を構成する.このとき、このパラメータは5に設定、説明時間は5倍tickTime、すなわち10000 ms=10 sに制限. dataDir:データディレクトリ.任意のディレクトリです./home/xw/zookeeper-3.4.10/data/data、すなわち現在のzookeeperインストールディレクトリの下の/data/dataディレクトリに設定します. dataLogDir:logディレクトリは、同様に任意のディレクトリであってもよい.このパラメータが設定されていない場合は、dataDirと同じ設定が使用されます./home/xw/zookeeper-3.4.10/data/log、すなわち現在のzookeeperインストールディレクトリの下の/data/logディレクトリに設定します. clientPort:client接続のポート番号を傍受する.クラスタモードでは、各インスタンスのclientPortが異なる必要があります.しかし、クラスタモードでは、推奨は同じであり、いずれも2181に構成される. server.X=A:B:C Xは数字で、これが何番目のserverであることを示します.Aは、当該サーバが存在するIPアドレスである.Bサーバとクラスタ内のleaderがメッセージを交換するために使用するポートを構成する.Cリーダーを選択する際に使用するポートを設定します.クラスタモードを構成しているので、同じportを使用することをお勧めします. myidファイル:クラスタモードとクラスタモードでは、設定したdataDirディレクトリの下にmyidファイルを作成し、対応する一意の識別番号を入力する必要があります.設定したばかりのZookeeperがクラスタの最初のテーブル、すなわちmyidの値を1に設定します.この数字はzooとしなければならない.cfgファイルのserver.Xの中のXは一つ一つ対応している.
第二に、3台のzk配置
3台のインスタンス配置(ipアドレスは172.21.133.38,172.21.133.39,172.21.133.40)が採用され、zookeeeperのインストールパスが一致し、ポートが一致しているため、プロファイルは完全に同じです.DataDirパスの下でmyidファイルを新規作成し、対応する一意の識別番号を入力します.ここで、172.211.133.38は11722.211.133.39は21722.211.133.40は3である.
zookeeperの起動
プロセスが存在するかどうかを確認
主従関係の表示
1台はリーダー、2台follower
kafkaクラスタ
kafkaをダウンロード
ダウンロード先:http://kafka.apache.org/downloads対応するバージョンを見つけて、入ってからミラーをダウンロードしてダウンロードに成功した後、コマンドを実行して、解凍を完了します
kafkaの起動はJava環境に依存するので、jdkをインストールし、Java環境変数を構成します.
Java環境の設定
Java環境が構成されていない場合は、次の手順に従います.
ファイルを開いたら、ファイルの最後に次の項目を追加します.
source~/.Profileは構成情報を有効にしてJava環境が構成に成功したかどうかを確認し、javaコマンドがサポートされているかどうかを直接入力し、サポートされている場合は構成に成功したことを示します.
kafka構成
kafkaはzookeeperを持参しており、ここでは上に構築したzookeeperクラスタを使用して3台のインスタンス配置を採用しており、ipアドレスは172.211.133.4172.211.133.42172.21.133.43である.第1のkafkaインスタンスを構成する、まず第1のkafkaインスタンスconfigディレクトリに入り、serverを構成する.propertiesファイル.最も重要なパラメータは次のとおりです.
パラメータの説明 broker.id:Kafkaクラスタ内の現在のbrokerを示すidで、一意の を保証する必要がある listeners:配備されたbroker占有ip:port log.dirs:現在のbrokerのlogs格納アドレス を指定 zookeeper.connect:Zookeeperクラスタを指定します.upkafkaはZookeeperに依存し,構成情報,消費者状態,topic情報などの内容をZookeeperノードに書き込む. auto.create.topics.enable:topic の作成を許可するかどうか
2台目、3台目のkafkaインスタンスは同じ構成で、それぞれの一意のbrokerを指定する必要がある.id、listeners.インストールパスがずっと続くとlog.ダースとzookeeperconnect構成は、3つのインスタンスで同じです.
スタートkafka
kafkaディレクトリに入り、次のコマンドを実行します.
プロセスが正常かどうかを確認
redisクラスタ
sentinelによって三主三備を構築し、サーバーが足りないのは同じサービスに構築されているため、ポートだけで主を区別する:172.19.151.60:6377-6379備:172.19.151.60:6380-63381
redisのダウンロード
ダウンロード先:http://download.redis.io/releases/該当するバージョンを選択し、ダウンロードが完了したら、解凍します.
コンパイルしてインストールし、redisディレクトリに入り、次のコマンドを実行します.
またはインストールディレクトリを指定します(別のディレクトリのインストールを推奨します)
別の2台のredisサーバのインストール
redisのインストールディレクトリに入り、log、data、etcの3つのディレクトリを新規作成します.
ソースパッケージディレクトリをredis.confとsentinel.conf redisインストールディレクトリのetcフォルダにコピー
redisを変更します.confプロファイル
主従構成は類似しており、一般的に主redisデータは永続化されず、redisからデータ永続化が行われ、主redis構成ファイル
redisプロファイルから、プライマリredisと最後にslaveofノードが増えただけです.
redisの起動
logログディレクトリにアクセスredis起動ログ情報を表示redis-cli接続redisで情報を表示
別の数台のredisを構成し、起動します.
sentinelを変更します.confプロファイル
3台のメインredisのsentinelを修正すればいいので、3組のmasterを配置します.
sentinel1 172.19.151.60:26377
sentinel2 172.19.151.60:26378
sentinel3 172.19.151.60:26379
sentinelの起動
1.redis-sentinelで起動し、redisディレクトリに入る
2.redis-serverで起動し、redisディレクトリに入る
zookeeperクラスタ,kafkaクラスタ,redisクラスタの構築
zookeeperクラスタ
ダウンロードzookeeper
ダウンロード先:https://www.apache.org/dyn/closer.cgi/zookeeper/適切なミラーアドレスを選択し、zookeeperバージョンを選択します.3.4.10の例でダウンロードに成功した後、コマンドを実行し、解凍を完了します.
tar -xvf zookeeper-3.4.10.tar.gz
zookeeper構成
Zookeeperはクラスタモードを推奨し、奇数台のインスタンス配置を推奨します(zookeeperの特性:クラスタに半分以上のマシンが正常に動作している限り、クラスタ全体が対外的に利用可能であり、クラスタ配置2 nまたは2 n-1個のzookeeperインスタンスに対して、インスタンスダウンタイムの許容度は同じであり、いずれもn-1です.したがって、より効率的でリソースを節約するために、奇数台のインスタンス配置モードを推奨します).ここでは、3台のインスタンス配置を例に挙げる(ipアドレスは172.211.133.38 172.2133.39 172.21.3.40).
まず最初のzookeeperの例を構成し、ipアドレスは172.21.133.38であり、zookeeperの下のconfディレクトリに入り、zooを構成する.cfgファイル.構成情報は次のとおりです.
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/xw/zookeeper-3.4.10/data/data
dataLogDir=/home/xw/zookeeper-3.4.10/data/log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=172.21.133.38:2889:3889
server.2=172.21.133.39:2889:3889
server.3=172.21.133.40:2889:3889
パラメータの説明
第二に、3台のzk配置
3台のインスタンス配置(ipアドレスは172.21.133.38,172.21.133.39,172.21.133.40)が採用され、zookeeeperのインストールパスが一致し、ポートが一致しているため、プロファイルは完全に同じです.DataDirパスの下でmyidファイルを新規作成し、対応する一意の識別番号を入力します.ここで、172.211.133.38は11722.211.133.39は21722.211.133.40は3である.
zookeeperの起動
sh ./bin/zkServer.sh start
プロセスが存在するかどうかを確認
ps -ef | grep $USER | grep zookeeper
主従関係の表示
sh ./bin/zkServer.sh status
1台はリーダー、2台follower
kafkaクラスタ
kafkaをダウンロード
ダウンロード先:http://kafka.apache.org/downloads対応するバージョンを見つけて、入ってからミラーをダウンロードしてダウンロードに成功した後、コマンドを実行して、解凍を完了します
tar -xvf kafka_2.11-2.0.0.tgz
kafkaの起動はJava環境に依存するので、jdkをインストールし、Java環境変数を構成します.
Java環境の設定
Java環境が構成されていない場合は、次の手順に従います.
vi ~/.profile
ファイルを開いたら、ファイルの最後に次の項目を追加します.
export JAVA_HOME=/usr/share/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source~/.Profileは構成情報を有効にしてJava環境が構成に成功したかどうかを確認し、javaコマンドがサポートされているかどうかを直接入力し、サポートされている場合は構成に成功したことを示します.
kafka構成
kafkaはzookeeperを持参しており、ここでは上に構築したzookeeperクラスタを使用して3台のインスタンス配置を採用しており、ipアドレスは172.211.133.4172.211.133.42172.21.133.43である.第1のkafkaインスタンスを構成する、まず第1のkafkaインスタンスconfigディレクトリに入り、serverを構成する.propertiesファイル.最も重要なパラメータは次のとおりです.
broker.id=0
listeners=PLAINTEXT://172.21.133.41:9092
log.dirs=/home/xw/kafka-logs
zookeeper.connect=172.21.133.38:2181,172.21.133.39:2181,172.21.133.40:2181
auto.create.topics.enable=true
パラメータの説明
2台目、3台目のkafkaインスタンスは同じ構成で、それぞれの一意のbrokerを指定する必要がある.id、listeners.インストールパスがずっと続くとlog.ダースとzookeeperconnect構成は、3つのインスタンスで同じです.
スタートkafka
kafkaディレクトリに入り、次のコマンドを実行します.
sh ./bin/kafka-server-start.sh -daemon ./config/server.properties
プロセスが正常かどうかを確認
ps -ef | grep $USER | grep kafka
redisクラスタ
sentinelによって三主三備を構築し、サーバーが足りないのは同じサービスに構築されているため、ポートだけで主を区別する:172.19.151.60:6377-6379備:172.19.151.60:6380-63381
redisのダウンロード
ダウンロード先:http://download.redis.io/releases/該当するバージョンを選択し、ダウンロードが完了したら、解凍します.
tar -xvf redis-5.0.3.tar.gz
コンパイルしてインストールし、redisディレクトリに入り、次のコマンドを実行します.
make && make install
またはインストールディレクトリを指定します(別のディレクトリのインストールを推奨します)
make && make install PREFIX=/usr/local/workspaces/redis/redis1-6377/
別の2台のredisサーバのインストール
make install PREFIX=/usr/local/workspaces/redis/redis2-6378/
make install PREFIX=/usr/local/workspaces/redis/redis3-6379/
redisのインストールディレクトリに入り、log、data、etcの3つのディレクトリを新規作成します.
cd /usr/local/workspaces/redis/redis1-6377/
mkdir log
mkdir data
mkdir etc
ソースパッケージディレクトリをredis.confとsentinel.conf redisインストールディレクトリのetcフォルダにコピー
redisを変更します.confプロファイル
主従構成は類似しており、一般的に主redisデータは永続化されず、redisからデータ永続化が行われ、主redis構成ファイル
# yes/no
daemonize yes
pidfile "/usr/local/workspaces/redis/redis1-6377/data/redis_6377.pid"
# IP
bind 172.19.151.60
#
port 6377
timeout 0
tcp-keepalive 0
# debug notice warning verbose
loglevel notice
#
logfile "/usr/local/workspaces/redis/redis1-6377/log/redis_6377.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/usr/local/workspaces/redis/redis1-6377/data"
# ,
masterauth "000000"
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 98
# redis
requirepass "000000"
appendonly yes
# appendfsync always
appendfsync everysec
# appendfsync no
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
redisプロファイルから、プライマリredisと最後にslaveofノードが増えただけです.
# yes/no
daemonize yes
pidfile "/usr/local/workspaces/redis/redis1-6380/data/redis_6380.pid"
# IP
bind 172.19.151.60
#
port 6380
timeout 0
tcp-keepalive 0
# debug notice warning verbose
loglevel notice
#
logfile "/usr/local/workspaces/redis/redis1-6380/log/redis_6380.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/usr/local/workspaces/redis/redis1-6380/data"
# ,
masterauth "000000"
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 98
# redis
requirepass "000000"
appendonly yes
# appendfsync always
appendfsync everysec
# appendfsync no
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
#
slaveof 172.19.151.60 6377
redisの起動
./redis-server ./etc/redis.conf
logログディレクトリにアクセスredis起動ログ情報を表示redis-cli接続redisで情報を表示
#172.19.151.60 redis IP 6377 000000
./redis-cli -h 172.19.151.60 -p 6377 -a 000000
# redis info
info
別の数台のredisを構成し、起動します.
sentinelを変更します.confプロファイル
3台のメインredisのsentinelを修正すればいいので、3組のmasterを配置します.
sentinel1 172.19.151.60:26377
#
port 26377
#
daemonize yes
pidfile /usr/local/workspaces/redis/redis1-6377/data/redis-sentinel.pid
#
dir "/usr/local/workspaces/redis/redis1-6377/data"
protected-mode no
#
logfile "/usr/local/workspaces/redis/redis1-6377/log/sentinel.log"
sentinel current-epoch 839
######################### mymaster1 ################################
#sentinel monitor
# quorum sentinel sentinel master slave master
sentinel monitor mymaster1 172.19.151.60 6377 2
# sentinel
sentinel down-after-milliseconds mymaster1 30000
# , 180
sentinel failover-timeout mymaster1 180000
#redis
sentinel auth-pass mymaster1 000000
sentinel config-epoch mymaster1 15
sentinel leader-epoch mymaster1 839
# # sentinel, master sentinel
sentinel known-sentinel mymaster1 172.19.151.60 26378
sentinel known-sentinel mymaster1 172.19.151.60 26379
######################### mymaster2 ################################
sentinel monitor mymaster2 172.19.151.60 6378 2
sentinel down-after-milliseconds mymaster2 30000
sentinel failover-timeout mymaster2 180000
sentinel auth-pass mymaster2 000000
sentinel config-epoch mymaster2 15
sentinel leader-epoch mymaster2 839
sentinel known-sentinel mymaster2 172.19.151.60 26378
sentinel known-sentinel mymaster2 172.19.151.60 26379
######################### mymaster3 ################################
sentinel monitor mymaster3 172.19.151.60 6379 2
sentinel down-after-milliseconds mymaster3 30000
sentinel failover-timeout mymaster3 180000
sentinel auth-pass mymaster3 000000
sentinel config-epoch mymaster3 15
sentinel leader-epoch mymaster3 839
sentinel known-sentinel mymaster3 172.19.151.60 26378
sentinel known-sentinel mymaster3 172.19.151.60 26379
sentinel2 172.19.151.60:26378
port 26378
#
daemonize yes
pidfile /usr/local/workspaces/redis/redis2-6378/data/redis-sentinel.pid
#
dir "/usr/local/workspaces/redis/redis2-6378/data"
protected-mode no
#
logfile "/usr/local/workspaces/redis/redis2-6378/log/sentinel.log"
sentinel current-epoch 839
#sentinel monitor
# quorum sentinel sentinel master slave master
sentinel monitor mymaster1 172.19.151.60 6377 2
# sentinel
sentinel down-after-milliseconds mymaster1 30000
# , 180
sentinel failover-timeout mymaster1 180000
#redis
sentinel auth-pass mymaster1 000000
sentinel config-epoch mymaster1 15
sentinel leader-epoch mymaster1 839
# # sentinel, master sentinel
sentinel known-sentinel mymaster 172.19.151.60 26377
sentinel known-sentinel mymaster 172.19.151.60 26379
######################### mymaster2 ################################
sentinel monitor mymaster2 172.19.151.60 6378 2
sentinel down-after-milliseconds mymaster2 30000
sentinel failover-timeout mymaster2 180000
sentinel auth-pass mymaster2 000000
sentinel config-epoch mymaster2 15
sentinel leader-epoch mymaster2 839
sentinel known-sentinel mymaster2 172.19.151.60 26377
sentinel known-sentinel mymaster2 172.19.151.60 26379
######################### mymaster3 ################################
sentinel monitor mymaster3 172.19.151.60 6379 2
sentinel down-after-milliseconds mymaster3 30000
sentinel failover-timeout mymaster3 180000
sentinel auth-pass mymaster3 000000
sentinel config-epoch mymaster3 15
sentinel leader-epoch mymaster3 839
sentinel known-sentinel mymaster3 172.19.151.60 26377
sentinel known-sentinel mymaster3 172.19.151.60 26379
sentinel3 172.19.151.60:26379
port 26379
#
daemonize yes
pidfile /usr/local/workspaces/redis/redis3-6379/data/redis-sentinel.pid
#
dir "/usr/local/workspaces/redis/redis3-6379/data"
protected-mode no
#
logfile "/usr/local/workspaces/redis/redis3-6379/log/sentinel.log"
sentinel current-epoch 839
#sentinel monitor
# quorum sentinel sentinel master slave master
sentinel monitor mymaster1 172.19.151.60 6377 2
# sentinel
sentinel down-after-milliseconds mymaster1 30000
# , 180
sentinel failover-timeout mymaster1 180000
#redis
sentinel auth-pass mymaster1 000000
sentinel config-epoch mymaster1 15
sentinel leader-epoch mymaster1 839
# # sentinel, master sentinel
sentinel known-sentinel mymaster 172.19.151.60 26377
sentinel known-sentinel mymaster 172.19.151.60 26378
######################### mymaster2 ################################
sentinel monitor mymaster2 172.19.151.60 6378 2
sentinel down-after-milliseconds mymaster2 30000
sentinel failover-timeout mymaster2 180000
sentinel auth-pass mymaster2 000000
sentinel config-epoch mymaster2 15
sentinel leader-epoch mymaster2 839
sentinel known-sentinel mymaster2 172.19.151.60 26377
sentinel known-sentinel mymaster2 172.19.151.60 26378
######################### mymaster3 ################################
sentinel monitor mymaster3 172.19.151.60 6379 2
sentinel down-after-milliseconds mymaster3 30000
sentinel failover-timeout mymaster3 180000
sentinel auth-pass mymaster3 000000
sentinel config-epoch mymaster3 15
sentinel leader-epoch mymaster3 839
sentinel known-sentinel mymaster3 172.19.151.60 26377
sentinel known-sentinel mymaster3 172.19.151.60 26378
sentinelの起動
1.redis-sentinelで起動し、redisディレクトリに入る
./redis-sentinel ./etc/sentinel.conf
2.redis-serverで起動し、redisディレクトリに入る
./redis-server ./etc/sentinel.conf --sentinel