IPリストシミュレーションに基づいてredis clusterの主従対応関係を出力する
1563 ワード
需要:ipリスト、配列、またはファイルをポイントし、各行にipを1つずつ出力し、redis clusterのグループ従関係をシミュレートします.前者はmaster_ip:master_port -> slave_ip:slave_port
後続の主従のペアリング関係を自動的に生成する準備をします.
配列方式の実装:
ファイル方式の実現:
cat >b<1.1.1.12.2.2.23.3.3.34.4.4.45.5.5.5EOF
出力結果:
後続の主従のペアリング関係を自動的に生成する準備をします.
配列方式の実装:
ip_list=(1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5)
port=7001
len=${#ip_list[@]}
for ((i=0;i<=$len-1;i++))
do
if [[ $i -eq $len-1 ]];then
echo "${ip_list[$i]}:$port -> ${ip_list[0]}:$port"
else
echo "${ip_list[$i]}:$port -> ${ip_list[$i+1]}:$port"
let port=port+1
fi
done
ファイル方式の実現:
cat >b<1.1.1.12.2.2.23.3.3.34.4.4.45.5.5.5EOF
port=7001
i=1
count_rows=$(wc -l b| awk '{print $1}')
last_row=$(cat b | sed -n "$"p)
for ((j=1;j<=$count_rows;j++))
do
up_row=$(cat b | sed -n "$i"p)
if [[ "$up_row" = "$last_row" ]];then
up_row=$(cat b | sed -n "$"p)
next_row=$(cat b | sed -n "1"p)
echo "$up_row:$port -> $next_row:$port"
else
up_row=$(cat b | sed -n "$i"p)
let i=i+1
next_row=$(cat b | sed -n "$i"p)
echo "$up_row:$port -> $next_row:$port"
let port=port+1
fi
done
出力結果:
1.1.1.1:7001 -> 2.2.2.2:7001
2.2.2.2:7002 -> 3.3.3.3:7002
3.3.3.3:7003 -> 4.4.4.4:7003
4.4.4.4:7004 -> 5.5.5.5:7004
5.5.5.5:7005 -> 1.1.1.1:7005