blob: c7d05e567747b3259a905ca35a4951b862f38021 [file]
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
DORIS_HOME="$(dirname "${BASH_SOURCE-$0}")"
DORIS_HOME="$(cd "${DORIS_HOME}">/dev/null; pwd)"
DORIS_FE_HOME="${DORIS_HOME}/fe/"
DORIS_BE_HOME="${DORIS_HOME}/be/"
# print the disk usage
echo "Disk usage:"
df -h
# check free disk space, if little then 6GB, Doris FE (version < 2.1.0) can not start
# TODO: change the threshold to 2GB when Doris Version is up to 2.1.0, add bdbje_free_disk_bytes to fe.conf
THRESHOLD=6
DISK_FREE=`df -BG | grep '/$' | tr -s ' ' | cut -d ' ' -f4 | grep -o '[0-9]*'`
if [ "$DISK_FREE" -le "$THRESHOLD" ]
then
echo "ERROR: Doris FE (version < 2.1.0) can not start with less than ${THRESHOLD}G disk space."
fi
# comment a code snippet about max_map_count, it's not necessary for IT environment
DORIS_BE_SCRIPT="${DORIS_BE_HOME}/bin/start_be.sh"
sed -i '/Please set vm.max_map_count/,/exit 1/{s/exit 1/#exit 1\n echo "skip this"/}' ${DORIS_BE_SCRIPT}
sed -i '/Please set the maximum number of open file descriptors/,/exit 1/{s/exit 1/#exit 1\n echo "skip this"/}' ${DORIS_BE_SCRIPT}
# remove chmod command in start_be.sh, it will cost a lot of time. Add it to Dockerfile
sed -i 's/chmod 755 "${DORIS_HOME}\/lib\/doris_be"/#&/' ${DORIS_BE_SCRIPT}
# update fe.conf & be.conf, set priority_networks
CONTAINER_IP=$(hostname -i)
PRIORITY_NETWORKS=$(echo "${CONTAINER_IP}" | awk -F '.' '{print$1"."$2"."$3".0/24"}')
echo "add priority_networks = ${PRIORITY_NETWORKS} to fe.conf & be.conf"
echo "priority_networks = ${PRIORITY_NETWORKS}" >> ${DORIS_FE_HOME}/conf/fe.conf
echo "priority_networks = ${PRIORITY_NETWORKS}" >> ${DORIS_BE_HOME}/conf/be.conf
echo "report_disk_state_interval_seconds = 10" >> ${DORIS_BE_HOME}/conf/be.conf
# start doris fe and be in daemon mode
${DORIS_FE_HOME}/bin/start_fe.sh --daemon
${DORIS_BE_HOME}/bin/start_be.sh --daemon
# wait for the fe to start
fe_started=false
for i in {1..10}; do
sleep 5
# check http://localhost:8030/api/bootstrap return contains content '"msg":"success"' to see if the fe is ready
url="http://localhost:8030/api/bootstrap"
echo "check fe for the $i times"
response=$(curl --silent --request GET $url)
if echo "$response" | grep -q "\"msg\":\"success\""; then
fe_started=true
echo "Doris fe started successfully, response: $response"
break
else
echo "check failed, response: $response"
fi
done
if [ "$fe_started" = false ]; then
echo "ERROR: Doris fe failed to start"
fi
# check for be started
be_started=false
for i in {1..10}; do
sleep 5
# check localhost:8040/api/health return contains content '"status": "OK"' to see if the be is ready
url="localhost:8040/api/health"
echo "check be for the $i times"
response=$(curl --silent --request GET $url)
if echo "$response" | grep -q "\"status\": \"OK\""; then
be_started=true
echo "Doris be started successfully, response: $response"
break
else
echo "check failed, response: $response"
fi
done
if [ "$be_started" = false ]; then
echo "ERROR: Doris be failed to start"
fi
# add the be to the fe
be_added=false
for i in {1..10}; do
echo "add Doris BE to FE for the $i times"
mysql -h127.0.0.1 -P9030 -uroot -e "ALTER SYSTEM ADD BACKEND '${CONTAINER_IP}:9050'"
if [ $? -ne 0 ]; then
echo "Failed to add the BE to the FE"
else
be_added=true
echo "Doris BE added to FE successfully"
break
fi
sleep 1
done
if [ "$be_added" = false ]; then
echo "ERROR: Doris BE failed to add to FE"
fi
# persist the container
tail -f /dev/null