blob: 8bd4428788b1d8a8b197809f8e286462f07e72f7 [file]
set -e
# load environment parameters
. ./script/env.sh
# load ip list
. ./script/load_config.sh $1
script_path=${BAZEL_WORKSPACE_PATH}/scripts
if [[ -z $server ]];
then
server=//service/kv:kv_service
fi
# obtain the src path
server_path=`echo "$server" | sed 's/:/\//g'`
server_path=${server_path:1}
server_name=`echo "$server" | awk -F':' '{print $NF}'`
server_bin=${server_name}
bin_path=${BAZEL_WORKSPACE_PATH}/bazel-bin/${server_path}
output_path=${script_path}/deploy/config_out
output_key_path=${output_path}/cert
output_cert_path=${output_key_path}
admin_key_path=${script_path}/deploy/data/cert
mkdir -p ${output_path}
new_config_iplist=${iplist[@]}
deploy_iplist=${new_iplist[@]}
echo "server src path:"${server_path}
echo "server bazel bin path:"${bin_path}
echo "server name:"${server_bin}
echo "admin config path:"${admin_key_path}
echo "output path:"${output_path}
echo "deploy to :"${deploy_iplist[@]}
# generate keys and certificates.
cd ${script_path}
echo "where am i:"$PWD
echo "??iplist:"${new_config_iplist[@]}
#deploy/script/generate_key.sh ${BAZEL_WORKSPACE_PATH} ${output_key_path} ${#iplist[@]}
deploy/script/generate_config.sh ${BAZEL_WORKSPACE_PATH} ${output_key_path} ${output_cert_path} ${output_path} ${admin_key_path} ${new_config_iplist[@]}
# build kv server
bazel build ${server}
if [ $? != 0 ]
then
echo "Complile ${server} failed"
exit 0
fi
# commands functions
function run_cmd(){
count=1
for ip in ${deploy_iplist[@]};
do
echo "run cmd to:"${ip}
ssh -i ${key} -n -o BatchMode=yes -o StrictHostKeyChecking=no ubuntu@${ip} "$1" &
((count++))
done
while [ $count -gt 0 ]; do
wait $pids
count=`expr $count - 1`
done
}
function run_one_cmd(){
ssh -i ${key} -n -o BatchMode=yes -o StrictHostKeyChecking=no ubuntu@${ip} "$1"
}
run_cmd "killall -9 ${server_bin}"
run_cmd "rm -rf ${server_bin}; rm ${server_bin}*.log; rm -rf server.config; rm -rf cert;"
sleep 1
# upload config files and binary
echo "upload configs"
count=0
for ip in ${deploy_iplist[@]};
do
scp -i ${key} -r ${bin_path} ${output_path}/server.config ${output_path}/cert ubuntu@${ip}:/home/ubuntu/ &
((count++))
done
while [ $count -gt 0 ]; do
wait $pids
count=`expr $count - 1`
done
function find_ip_idx(){
search_ip=$1
idx=1
for ip in ${new_config_iplist[@]};
do
echo "search ip:"$search_ip
echo "get ip:"$ip
if [ "$ip" == "$search_ip" ];then
echo "return idx:"$idx
return $idx
fi
((idx++))
done
}
echo "start to run"
# Start server
count=0
for ip in ${deploy_iplist[@]};
do
find_ip_idx ${ip}
idx=$?
private_key="cert/node_"${idx}".key.pri"
cert="cert/cert_"${idx}".cert"
echo "get ip:"${ip}" idx:"${idx}
run_one_cmd "nohup ./${server_bin} server.config ${private_key} ${cert} > ${server_bin}.log 2>&1 &" &
((count++))
done
while [ $count -gt 0 ]; do
wait $pids
count=`expr $count - 1`
done
# Check ready logs
for ip in ${deploy_iplist[@]};
do
resp=""
while [ "$resp" = "" ]
do
resp=`ssh -i ${key} -n -o BatchMode=yes -o StrictHostKeyChecking=no ubuntu@${ip} "grep \"receive public size:${#new_config_iplist[@]}\" ${server_bin}.log"`
if [ "$resp" = "" ]; then
sleep 1
fi
done
done
echo "Servers are running....."