[Enhancement] refactor allin1 image (#28240)
* add supervisor and nginx into allin1 * add broker into allin1 * robust register BE BROKER into FE * be able to use stream load directly talking to nginx http port Fixes #13319 Signed-off-by: Kevin Xiaohua Cai <caixiaohua@starrocks.com>
This commit is contained in:
parent
8fd8e2a064
commit
011bf1714c
|
|
@ -17,3 +17,6 @@ output/fe/meta
|
||||||
output/fe/log
|
output/fe/log
|
||||||
output/be/storage
|
output/be/storage
|
||||||
output/be/log
|
output/be/log
|
||||||
|
# allow build fs_broker into allin1 docker image
|
||||||
|
!fs_brokers/apache_hdfs_broker/output
|
||||||
|
fs_brokers/apache_hdfs_broker/output/log
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# Please run this command from the git repo root directory to build:
|
# Please run this command from the git repo root directory to build:
|
||||||
#
|
#
|
||||||
# - Use artifact image to package runtime container:
|
# - Use artifact image to package runtime container:
|
||||||
# > DOCKER_BUILDKIT=1 docker build --build-arg ARTIFACT_SOURCE=image --build-arg ARTIFACTIMAGE=ghcr.io/starrocks/starrocks/artifact-centos7:latest -f docker/dockerfiles/allin1/allin1-ubi.Dockerfile -t allin1-ubi:latest .
|
# > DOCKER_BUILDKIT=1 docker build --build-arg ARTIFACT_SOURCE=image --build-arg ARTIFACTIMAGE=starrocks/artifacts-centos7:latest -f docker/dockerfiles/allin1/allin1-ubi.Dockerfile -t allin1-ubi:latest .
|
||||||
# - Use locally build artifacts to package runtime container:
|
# - Use locally build artifacts to package runtime container:
|
||||||
# > DOCKER_BUILDKIT=1 docker build --build-arg ARTIFACT_SOURCE=local --build-arg LOCAL_REPO_PATH=. -f docker/dockerfiles/allin1/allin1-ubi.Dockerfile -t allin1-ubi:latest .
|
# > DOCKER_BUILDKIT=1 docker build --build-arg ARTIFACT_SOURCE=local --build-arg LOCAL_REPO_PATH=. -f docker/dockerfiles/allin1/allin1-ubi.Dockerfile -t allin1-ubi:latest .
|
||||||
#
|
#
|
||||||
|
|
@ -20,6 +20,7 @@ ARG LOCAL_REPO_PATH
|
||||||
|
|
||||||
COPY ${LOCAL_REPO_PATH}/output/fe /release/fe_artifacts/fe
|
COPY ${LOCAL_REPO_PATH}/output/fe /release/fe_artifacts/fe
|
||||||
COPY ${LOCAL_REPO_PATH}/output/be /release/be_artifacts/be
|
COPY ${LOCAL_REPO_PATH}/output/be /release/be_artifacts/be
|
||||||
|
COPY ${LOCAL_REPO_PATH}/fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker /release/broker_artifacts/apache_hdfs_broker
|
||||||
|
|
||||||
|
|
||||||
FROM artifacts-from-${ARTIFACT_SOURCE} as artifacts
|
FROM artifacts-from-${ARTIFACT_SOURCE} as artifacts
|
||||||
|
|
@ -29,10 +30,11 @@ FROM registry.access.redhat.com/ubi8/ubi:8.7
|
||||||
ARG DEPLOYDIR=/data/deploy
|
ARG DEPLOYDIR=/data/deploy
|
||||||
ENV SR_HOME=${DEPLOYDIR}/starrocks
|
ENV SR_HOME=${DEPLOYDIR}/starrocks
|
||||||
|
|
||||||
RUN yum install -y java-1.8.0-openjdk-devel tzdata openssl curl vim ca-certificates fontconfig gzip tar less hostname procps-ng lsof && \
|
RUN yum install -y java-1.8.0-openjdk-devel tzdata openssl curl vim ca-certificates fontconfig gzip tar less hostname procps-ng lsof python3-pip nginx nc && \
|
||||||
rpm -ivh https://repo.mysql.com/mysql57-community-release-el7.rpm && \
|
rpm -ivh https://repo.mysql.com/mysql80-community-release-el8-7.noarch.rpm && \
|
||||||
yum -y install mysql-community-client --nogpgcheck && \
|
yum -y install mysql-community-client --nogpgcheck && \
|
||||||
yum remove -y mysql57-community-release-el7
|
yum remove -y mysql80-community-release && \
|
||||||
|
pip3 install supervisor
|
||||||
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
|
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
|
||||||
|
|
||||||
WORKDIR $DEPLOYDIR
|
WORKDIR $DEPLOYDIR
|
||||||
|
|
@ -40,14 +42,13 @@ WORKDIR $DEPLOYDIR
|
||||||
# Copy all artifacts to the runtime container image
|
# Copy all artifacts to the runtime container image
|
||||||
COPY --from=artifacts /release/be_artifacts/ $DEPLOYDIR/starrocks
|
COPY --from=artifacts /release/be_artifacts/ $DEPLOYDIR/starrocks
|
||||||
COPY --from=artifacts /release/fe_artifacts/ $DEPLOYDIR/starrocks
|
COPY --from=artifacts /release/fe_artifacts/ $DEPLOYDIR/starrocks
|
||||||
|
COPY --from=artifacts /release/broker_artifacts/ $DEPLOYDIR/starrocks
|
||||||
|
|
||||||
# Copy Setup script.
|
# Copy setup script and config files
|
||||||
COPY --chmod=755 docker/dockerfiles/allin1/*.sh $DEPLOYDIR
|
COPY docker/dockerfiles/allin1/*.sh docker/dockerfiles/allin1/*.conf docker/dockerfiles/allin1/*.txt $DEPLOYDIR
|
||||||
|
COPY docker/dockerfiles/allin1/services/ $SR_HOME
|
||||||
# Copy config files
|
|
||||||
COPY docker/dockerfiles/allin1/*.conf $DEPLOYDIR
|
|
||||||
RUN cat be.conf >> $DEPLOYDIR/starrocks/be/conf/be.conf && \
|
RUN cat be.conf >> $DEPLOYDIR/starrocks/be/conf/be.conf && \
|
||||||
cat fe.conf >> $DEPLOYDIR/starrocks/fe/conf/fe.conf && \
|
cat fe.conf >> $DEPLOYDIR/starrocks/fe/conf/fe.conf && \
|
||||||
mkdir -p $DEPLOYDIR/starrocks/fe/meta && mkdir -p $DEPLOYDIR/starrocks/be/storage && touch /.dockerenv
|
mkdir -p $DEPLOYDIR/starrocks/fe/meta && mkdir -p $DEPLOYDIR/starrocks/be/storage && touch /.dockerenv
|
||||||
|
|
||||||
CMD ./start_fe_be.sh
|
CMD ./entrypoint.sh
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# Please run this command from the git repo root directory to build:
|
# Please run this command from the git repo root directory to build:
|
||||||
#
|
#
|
||||||
# - Use artifact image to package runtime container:
|
# - Use artifact image to package runtime container:
|
||||||
# > DOCKER_BUILDKIT=1 docker build --build-arg ARTIFACT_SOURCE=image --build-arg ARTIFACTIMAGE=ghcr.io/starrocks/starrocks/artifact-ubuntu:latest -f docker/dockerfiles/allin1/allin1-ubuntu.Dockerfile -t allin1-ubuntu:latest .
|
# > DOCKER_BUILDKIT=1 docker build --build-arg ARTIFACT_SOURCE=image --build-arg ARTIFACTIMAGE=starrocks/artifacts-ubuntu:latest -f docker/dockerfiles/allin1/allin1-ubuntu.Dockerfile -t allin1-ubuntu:latest .
|
||||||
# - Use locally build artifacts to package runtime container:
|
# - Use locally build artifacts to package runtime container:
|
||||||
# > DOCKER_BUILDKIT=1 docker build --build-arg ARTIFACT_SOURCE=local --build-arg LOCAL_REPO_PATH=. -f docker/dockerfiles/allin1/allin1-ubuntu.Dockerfile -t allin1-ubuntu:latest .
|
# > DOCKER_BUILDKIT=1 docker build --build-arg ARTIFACT_SOURCE=local --build-arg LOCAL_REPO_PATH=. -f docker/dockerfiles/allin1/allin1-ubuntu.Dockerfile -t allin1-ubuntu:latest .
|
||||||
#
|
#
|
||||||
|
|
@ -20,6 +20,7 @@ ARG LOCAL_REPO_PATH
|
||||||
|
|
||||||
COPY ${LOCAL_REPO_PATH}/output/fe /release/fe_artifacts/fe
|
COPY ${LOCAL_REPO_PATH}/output/fe /release/fe_artifacts/fe
|
||||||
COPY ${LOCAL_REPO_PATH}/output/be /release/be_artifacts/be
|
COPY ${LOCAL_REPO_PATH}/output/be /release/be_artifacts/be
|
||||||
|
COPY ${LOCAL_REPO_PATH}/fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker /release/broker_artifacts/apache_hdfs_broker
|
||||||
|
|
||||||
|
|
||||||
FROM artifacts-from-${ARTIFACT_SOURCE} as artifacts
|
FROM artifacts-from-${ARTIFACT_SOURCE} as artifacts
|
||||||
|
|
@ -30,7 +31,7 @@ ARG DEPLOYDIR=/data/deploy
|
||||||
ENV SR_HOME=${DEPLOYDIR}/starrocks
|
ENV SR_HOME=${DEPLOYDIR}/starrocks
|
||||||
|
|
||||||
RUN apt-get update -y && apt-get install -y --no-install-recommends \
|
RUN apt-get update -y && apt-get install -y --no-install-recommends \
|
||||||
binutils-dev default-jdk python2 mysql-client curl vim tree net-tools less tzdata linux-tools-common linux-tools-generic && \
|
binutils-dev default-jdk python2 mysql-client curl vim tree net-tools less tzdata linux-tools-common linux-tools-generic supervisor nginx netcat && \
|
||||||
ln -fs /usr/share/zoneinfo/UTC /etc/localtime && \
|
ln -fs /usr/share/zoneinfo/UTC /etc/localtime && \
|
||||||
dpkg-reconfigure -f noninteractive tzdata && \
|
dpkg-reconfigure -f noninteractive tzdata && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
@ -42,14 +43,14 @@ WORKDIR $DEPLOYDIR
|
||||||
# Copy all artifacts to the runtime container image
|
# Copy all artifacts to the runtime container image
|
||||||
COPY --from=artifacts /release/be_artifacts/ $DEPLOYDIR/starrocks
|
COPY --from=artifacts /release/be_artifacts/ $DEPLOYDIR/starrocks
|
||||||
COPY --from=artifacts /release/fe_artifacts/ $DEPLOYDIR/starrocks
|
COPY --from=artifacts /release/fe_artifacts/ $DEPLOYDIR/starrocks
|
||||||
|
COPY --from=artifacts /release/broker_artifacts/ $DEPLOYDIR/starrocks
|
||||||
|
|
||||||
# Copy Setup script.
|
# Copy setup script and config files
|
||||||
COPY --chmod=755 docker/dockerfiles/allin1/*.sh $DEPLOYDIR
|
COPY docker/dockerfiles/allin1/*.sh docker/dockerfiles/allin1/*.conf docker/dockerfiles/allin1/*.txt $DEPLOYDIR
|
||||||
|
COPY docker/dockerfiles/allin1/services/ $SR_HOME
|
||||||
|
|
||||||
# Copy config files
|
|
||||||
COPY docker/dockerfiles/allin1/*.conf $DEPLOYDIR
|
|
||||||
RUN cat be.conf >> $DEPLOYDIR/starrocks/be/conf/be.conf && \
|
RUN cat be.conf >> $DEPLOYDIR/starrocks/be/conf/be.conf && \
|
||||||
cat fe.conf >> $DEPLOYDIR/starrocks/fe/conf/fe.conf && \
|
cat fe.conf >> $DEPLOYDIR/starrocks/fe/conf/fe.conf && \
|
||||||
mkdir -p $DEPLOYDIR/starrocks/fe/meta && mkdir -p $DEPLOYDIR/starrocks/be/storage && touch /.dockerenv
|
mkdir -p $DEPLOYDIR/starrocks/fe/meta && mkdir -p $DEPLOYDIR/starrocks/be/storage && touch /.dockerenv
|
||||||
|
|
||||||
CMD ./start_fe_be.sh
|
CMD ./entrypoint.sh
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
****************************************************************************************************
|
||||||
|
* ________ _________ ________ ________ ________ ________ ________ ___ __ ________
|
||||||
|
* |\ ____\|\___ ___\\ __ \|\ __ \|\ __ \|\ __ \|\ ____\|\ \|\ \ |\ ____\
|
||||||
|
* \ \ \___|\|___ \ \_\ \ \|\ \ \ \|\ \ \ \|\ \ \ \|\ \ \ \___|\ \ \/ /|\ \ \___|_
|
||||||
|
* \ \_____ \ \ \ \ \ \ __ \ \ _ _\ \ _ _\ \ \\\ \ \ \ \ \ ___ \ \_____ \
|
||||||
|
* \|____|\ \ \ \ \ \ \ \ \ \ \ \\ \\ \ \\ \\ \ \\\ \ \ \____\ \ \\ \ \|____|\ \
|
||||||
|
* ____\_\ \ \ \__\ \ \__\ \__\ \__\\ _\\ \__\\ _\\ \_______\ \_______\ \__\\ \__\____\_\ \
|
||||||
|
* |\_________\ \|__| \|__|\|__|\|__|\|__|\|__|\|__|\|_______|\|_______|\|__| \|__|\_________\
|
||||||
|
* \|_________| \|_________|
|
||||||
|
*
|
||||||
|
* ________ ___ ___ ___ ________ _____
|
||||||
|
* |\ __ \|\ \ |\ \ |\ \|\ ___ \ / __ \
|
||||||
|
* \ \ \|\ \ \ \ \ \ \ \ \ \ \ \\ \ \|\/_|\ \
|
||||||
|
* \ \ __ \ \ \ \ \ \ \ \ \ \ \\ \ \|/ \ \ \
|
||||||
|
* \ \ \ \ \ \ \____\ \ \____\ \ \ \ \\ \ \ \ \ \
|
||||||
|
* \ \__\ \__\ \_______\ \_______\ \__\ \__\\ \__\ \ \__\
|
||||||
|
* \|__|\|__|\|_______|\|_______|\|__|\|__| \|__| \|__|
|
||||||
|
*
|
||||||
|
****************************************************************************************************
|
||||||
|
|
||||||
|
StarRocks [(Blazing Fast)]> _
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Copyright 2021-present StarRocks, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed 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
|
||||||
|
#
|
||||||
|
# https://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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
get_fe_http_port()
|
||||||
|
{
|
||||||
|
source $SR_HOME/fe/bin/common.sh
|
||||||
|
export_env_from_conf $SR_HOME/fe/conf/fe.conf
|
||||||
|
echo ${http_port:-8030}
|
||||||
|
}
|
||||||
|
|
||||||
|
update_feproxy_config()
|
||||||
|
{
|
||||||
|
# process fe http_port from a sub shell to avoid env var escalation
|
||||||
|
fehttpport=`get_fe_http_port`
|
||||||
|
cat $SR_HOME/feproxy/feproxy.conf.template | sed -e "s|{{feproxyhome}}|$SR_HOME/feproxy|g" -e "s|{{fewebport}}|${fehttpport}|g" > $SR_HOME/feproxy/feproxy.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_priority_networks()
|
||||||
|
{
|
||||||
|
echo "priority_networks = 127.0.0.1/32" >> $SR_HOME/fe/conf/fe.conf
|
||||||
|
echo "priority_networks = 127.0.0.1/32" >> $SR_HOME/be/conf/be.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
# print banner
|
||||||
|
if [ -f $SR_HOME/../banner.txt ] ; then
|
||||||
|
cat $SR_HOME/../banner.txt
|
||||||
|
fi
|
||||||
|
|
||||||
|
# setup log directories
|
||||||
|
mkdir -p $SR_HOME/{supervisor,fe,be,apache_hdfs_broker,feproxy}/log
|
||||||
|
|
||||||
|
update_feproxy_config
|
||||||
|
# use 127.0.0.1 for all the services, include fe/be/broker
|
||||||
|
setup_priority_networks
|
||||||
|
|
||||||
|
# setup supervisor and start
|
||||||
|
SUPERVISORD_HOME=$SR_HOME/supervisor
|
||||||
|
# allow supervisorctl to find the correct supervisord.conf
|
||||||
|
ln -sfT $SUPERVISORD_HOME/supervisord.conf /etc/supervisord.conf
|
||||||
|
|
||||||
|
cd $SUPERVISORD_HOME
|
||||||
|
exec supervisord -n -c $SUPERVISORD_HOME/supervisord.conf
|
||||||
|
|
@ -0,0 +1,248 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Copyright 2021-present StarRocks, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed 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
|
||||||
|
#
|
||||||
|
# https://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.
|
||||||
|
|
||||||
|
SQL_RETRY_INTERNAL=5
|
||||||
|
FE_HOME=$SR_HOME/fe
|
||||||
|
BE_HOME=$SR_HOME/be
|
||||||
|
MYCNF=$SR_HOME/director/my.cnf
|
||||||
|
BROKER_HOME=$SR_HOME/apache_hdfs_broker
|
||||||
|
source $FE_HOME/bin/common.sh
|
||||||
|
PREVIOUS_FQDN=
|
||||||
|
CURRENT_FQDN=`hostname -f`
|
||||||
|
|
||||||
|
PASSWD_ERROR_MSG="Password error, stop retrying!
|
||||||
|
If the root user password is changed, please re-run the container with '-e MYSQL_PWD=<root_password>'"
|
||||||
|
PERSISTENT_MSG=" * IMPORTANT NOTICE!
|
||||||
|
|
||||||
|
If FE/BE state needs to be persisted, please be sure the following directories are mounted:
|
||||||
|
* FE service meta: $FE_HOME/meta
|
||||||
|
* BE service storage: $BE_HOME/storage
|
||||||
|
"
|
||||||
|
HOSTNAME_MISMATCH_MSG="
|
||||||
|
Detect FE service hostname mismatch, FE service won't start.
|
||||||
|
This is probably caused by persisted fe/meta from outside container, but the container's
|
||||||
|
hostname is not fixed. If running with docker engine, use '-h <hostname>' to assign a
|
||||||
|
fixed hostname and restart.
|
||||||
|
"
|
||||||
|
|
||||||
|
MYHOST=127.0.0.1
|
||||||
|
|
||||||
|
log_stderr()
|
||||||
|
{
|
||||||
|
echo "`date --rfc-3339=seconds` $@" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
loginfo()
|
||||||
|
{
|
||||||
|
log_stderr "INFO $@"
|
||||||
|
}
|
||||||
|
|
||||||
|
logwarn()
|
||||||
|
{
|
||||||
|
log_stderr "WARN $@"
|
||||||
|
}
|
||||||
|
|
||||||
|
logerror()
|
||||||
|
{
|
||||||
|
log_stderr "ERROR $@"
|
||||||
|
}
|
||||||
|
|
||||||
|
hang_and_die()
|
||||||
|
{
|
||||||
|
sleeptime=15
|
||||||
|
logerror "will force shutdown in $sleeptime seconds ..."
|
||||||
|
sleep $sleeptime
|
||||||
|
supervisorctl shutdown
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
fe_mysql_port()
|
||||||
|
{
|
||||||
|
export_env_from_conf $FE_HOME/conf/fe.conf
|
||||||
|
echo ${query_port:-"9030"}
|
||||||
|
}
|
||||||
|
|
||||||
|
be_heartbeat_service_port()
|
||||||
|
{
|
||||||
|
export_env_from_conf $BE_HOME/conf/be.conf
|
||||||
|
echo ${heartbeat_service_port:-"9050"}
|
||||||
|
}
|
||||||
|
|
||||||
|
broker_ipc_port()
|
||||||
|
{
|
||||||
|
export_env_from_conf $BROKER_HOME/conf/apache_hdfs_broker.conf
|
||||||
|
echo ${broker_ipc_port:-"8000"}
|
||||||
|
}
|
||||||
|
|
||||||
|
check_fe_fqdn_mismatch()
|
||||||
|
{
|
||||||
|
if [ -f $FE_HOME/meta/image/ROLE ] ; then
|
||||||
|
previous_name=`grep '^name=' $FE_HOME/meta/image/ROLE | sed 's/name=//' | awk -F'_' '{print $1}'`
|
||||||
|
if [ "$previous_name" == "127.0.0.1" ] ; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
current_name=`hostname -f`
|
||||||
|
if [[ "$previous_name" != "$current_name" ]] ; then
|
||||||
|
loginfo "hostname in FE meta: $previous_name"
|
||||||
|
loginfo "current container hostname: $current_name"
|
||||||
|
logerror "$HOSTNAME_MISMATCH_MSG"
|
||||||
|
hang_and_die
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check fe service aliveness
|
||||||
|
check_fe_liveness()
|
||||||
|
{
|
||||||
|
fequeryport=`fe_mysql_port`
|
||||||
|
loginfo "checking if FE service query port:$fequeryport alive or not ..."
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
if nc -z -4 -w 5 $MYHOST $fequeryport ; then
|
||||||
|
loginfo "FE service query port:$fequeryport is alive!"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
logwarn "FE service query port:$fequeryport is NOT alive yet!"
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_my_cnf()
|
||||||
|
{
|
||||||
|
loginfo "generate my.cnf file ..."
|
||||||
|
fequeryport=`fe_mysql_port`
|
||||||
|
cat > $MYCNF << EOF
|
||||||
|
[client]
|
||||||
|
user=root
|
||||||
|
host=$MYHOST
|
||||||
|
port=$fequeryport
|
||||||
|
column-names=FALSE
|
||||||
|
connect-timeout=2
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_sql()
|
||||||
|
{
|
||||||
|
mysql --defaults-file=$MYCNF --batch -e "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_sql_with_column()
|
||||||
|
{
|
||||||
|
mysql --defaults-file=$MYCNF --column-names --batch -e "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_sql_with_retry()
|
||||||
|
{
|
||||||
|
local sql="$@"
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
result=`exec_sql "$@" 2>&1`
|
||||||
|
ret=$?
|
||||||
|
if [ $ret -eq 0 ] ; then
|
||||||
|
echo "$result"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
errcode=`echo $result | awk -F " " '{print $2}'`
|
||||||
|
if [[ $errcode = '1045' || $errcode = '1064' ]] ; then
|
||||||
|
logerror "$PASSWD_ERROR_MSG"
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
logwarn "mysql command fails with error: '$result', will try again"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
sleep $SQL_RETRY_INTERNAL
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check_and_add_be()
|
||||||
|
{
|
||||||
|
loginfo "check if need to add BE into FE service ..."
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
result=`exec_sql_with_retry "SHOW BACKENDS;"`
|
||||||
|
ret=$?
|
||||||
|
if [ $ret -ne 0 ] ; then
|
||||||
|
hang_and_die
|
||||||
|
else
|
||||||
|
if echo "$result" | grep -q $MYHOST &>/dev/null ; then
|
||||||
|
loginfo "BE service already added into FE service ... "
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
beheartbeatport=`be_heartbeat_service_port`
|
||||||
|
loginfo "Add BE($MYHOST:$beheartbeatport) into FE service ..."
|
||||||
|
exec_sql_with_retry "ALTER SYSTEM ADD BACKEND '$MYHOST:$beheartbeatport';"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check_and_add_broker()
|
||||||
|
{
|
||||||
|
loginfo "check if need to add BROKER into FE service ..."
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
result=`exec_sql_with_retry "SHOW BROKER;"`
|
||||||
|
ret=$?
|
||||||
|
if [ $ret -ne 0 ] ; then
|
||||||
|
hang_and_die
|
||||||
|
else
|
||||||
|
if echo "$result" | grep -q $MYHOST &>/dev/null ; then
|
||||||
|
loginfo "broker service already added into FE service ... "
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
brokerport=`broker_ipc_port`
|
||||||
|
loginfo "Add BROKER($MYHOST:$brokerport) into FE service ..."
|
||||||
|
exec_sql_with_retry "ALTER SYSTEM ADD BROKER allin1broker '$MYHOST:$brokerport';"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
loginfo "checking if need to perform auto registring Backend and Broker ..."
|
||||||
|
check_fe_fqdn_mismatch
|
||||||
|
check_fe_liveness
|
||||||
|
generate_my_cnf
|
||||||
|
check_and_add_be
|
||||||
|
check_and_add_broker
|
||||||
|
loginfo "cluster initialization DONE!"
|
||||||
|
loginfo "wait a few seconds for BE and Broker's heartbeat ..."
|
||||||
|
# allow heartbeat from BE/BROKER to FE
|
||||||
|
sleep 10
|
||||||
|
loginfo "StarRocks Cluster information details:"
|
||||||
|
exec_sql_with_column 'SHOW FRONTENDS\G'
|
||||||
|
exec_sql_with_column 'SHOW BACKENDS\G'
|
||||||
|
exec_sql_with_column 'SHOW BROKER\G'
|
||||||
|
|
||||||
|
loginfo
|
||||||
|
loginfo
|
||||||
|
loginfo "$PERSISTENT_MSG"
|
||||||
|
loginfo
|
||||||
|
loginfo "FE mysql query port: `fe_mysql_port`"
|
||||||
|
loginfo "FE http service port: 8080"
|
||||||
|
loginfo
|
||||||
|
loginfo "Enjoy the journal to StarRocks blazing-fast lake-house engine!"
|
||||||
|
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
st=`supervisorctl status`
|
||||||
|
running=`echo "$st" | grep RUNNING | wc -l`
|
||||||
|
bad=`echo "$st" | grep -v RUNNING | wc -l`
|
||||||
|
if [ $bad -gt 0 ] ; then
|
||||||
|
logwarn "has $bad services into non-RUNNING status!"
|
||||||
|
logwarn "$st"
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
user root;
|
||||||
|
worker_processes 4;
|
||||||
|
pid {{feproxyhome}}/nginx.pid;
|
||||||
|
include /usr/share/nginx/modules/*.conf;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 256;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_log {{feproxyhome}}/log/error.log info;
|
||||||
|
|
||||||
|
http {
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
client_max_body_size 0;
|
||||||
|
ignore_invalid_headers off;
|
||||||
|
underscores_in_headers on;
|
||||||
|
|
||||||
|
access_log {{feproxyhome}}/log/access.log;
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
server_name starrocks-allin1.localdomain;
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:{{fewebport}};
|
||||||
|
proxy_set_header Expect $http_expect;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_intercept_errors on;
|
||||||
|
error_page 307 = @handle_redirect;
|
||||||
|
}
|
||||||
|
location /api/transaction/load {
|
||||||
|
proxy_pass http://127.0.0.1:{{fewebport}};
|
||||||
|
proxy_pass_request_body off;
|
||||||
|
proxy_set_header Expect $http_expect;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_intercept_errors on;
|
||||||
|
error_page 307 = @handle_redirect;
|
||||||
|
}
|
||||||
|
location ~ ^/api/.*/.*/_stream_load$ {
|
||||||
|
proxy_pass http://127.0.0.1:{{fewebport}};
|
||||||
|
proxy_pass_request_body off;
|
||||||
|
proxy_set_header Expect $http_expect;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_intercept_errors on;
|
||||||
|
error_page 307 = @handle_redirect;
|
||||||
|
}
|
||||||
|
location @handle_redirect {
|
||||||
|
set $redirect_uri '$upstream_http_location';
|
||||||
|
proxy_pass $redirect_uri;
|
||||||
|
proxy_set_header Expect $http_expect;
|
||||||
|
proxy_pass_request_body on;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
[unix_http_server]
|
||||||
|
file=%(ENV_SR_HOME)s/supervisor/supervisor.sock
|
||||||
|
|
||||||
|
|
||||||
|
[supervisord]
|
||||||
|
logfile=%(ENV_SR_HOME)s/supervisor/log/supervisord.log
|
||||||
|
logfile_maxbytes=50MB
|
||||||
|
logfile_backups=10
|
||||||
|
loglevel=info
|
||||||
|
pidfile=%(ENV_SR_HOME)s/supervisor/supervisord.pid
|
||||||
|
user=root
|
||||||
|
nodaemon=true
|
||||||
|
|
||||||
|
|
||||||
|
[rpcinterface:supervisor]
|
||||||
|
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
||||||
|
|
||||||
|
|
||||||
|
[supervisorctl]
|
||||||
|
serverurl=unix://%(ENV_SR_HOME)s/supervisor/supervisor.sock
|
||||||
|
|
||||||
|
|
||||||
|
[program:feservice]
|
||||||
|
command=%(ENV_SR_HOME)s/fe/bin/start_fe.sh
|
||||||
|
numprocs=1
|
||||||
|
directory=%(ENV_SR_HOME)s/fe
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
startsecs=5
|
||||||
|
startretries=3
|
||||||
|
stopwaitsecs=15
|
||||||
|
redirect_stderr=true
|
||||||
|
stdout_logfile=%(ENV_SR_HOME)s/fe/log/fe.out
|
||||||
|
stdout_logfile_maxbytes=200MB
|
||||||
|
stdout_logfile_backups=20
|
||||||
|
|
||||||
|
|
||||||
|
[program:beservice]
|
||||||
|
command=%(ENV_SR_HOME)s/be/bin/start_be.sh
|
||||||
|
numprocs=1
|
||||||
|
directory=%(ENV_SR_HOME)s/be
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
startsecs=5
|
||||||
|
startretries=3
|
||||||
|
stopwaitsecs=15
|
||||||
|
redirect_stderr=true
|
||||||
|
stdout_logfile=%(ENV_SR_HOME)s/be/log/be.out
|
||||||
|
stdout_logfile_maxbytes=200MB
|
||||||
|
stdout_logfile_backups=20
|
||||||
|
|
||||||
|
|
||||||
|
[program:broker]
|
||||||
|
command=%(ENV_SR_HOME)s/apache_hdfs_broker/bin/start_broker.sh
|
||||||
|
numprocs=1
|
||||||
|
directory=%(ENV_SR_HOME)s/apache_hdfs_broker
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
startsecs=5
|
||||||
|
startretries=3
|
||||||
|
stopwaitsecs=15
|
||||||
|
redirect_stderr=true
|
||||||
|
stdout_logfile=%(ENV_SR_HOME)s/apache_hdfs_broker/log/apache_hdfs_broker.out
|
||||||
|
stdout_logfile_maxbytes=200MB
|
||||||
|
stdout_logfile_backups=20
|
||||||
|
|
||||||
|
|
||||||
|
[program:feproxy]
|
||||||
|
command=nginx -g "daemon off;" -c %(ENV_SR_HOME)s/feproxy/feproxy.conf
|
||||||
|
numprocs=1
|
||||||
|
directory=%(ENV_SR_HOME)s/feproxy
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
startsecs=5
|
||||||
|
startretries=3
|
||||||
|
stopwaitsecs=15
|
||||||
|
redirect_stderr=true
|
||||||
|
stdout_logfile=%(ENV_SR_HOME)s/feproxy/log/feproxy.out
|
||||||
|
stdout_logfile_maxbytes=200MB
|
||||||
|
stdout_logfile_backups=20
|
||||||
|
|
||||||
|
|
||||||
|
[program:director]
|
||||||
|
command=%(ENV_SR_HOME)s/director/run.sh
|
||||||
|
numprocs=1
|
||||||
|
directory=%(ENV_SR_HOME)s/director
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
startsecs=5
|
||||||
|
startretries=3
|
||||||
|
stopwaitsecs=15
|
||||||
|
redirect_stderr=true
|
||||||
|
stdout_logfile=/dev/fd/1
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
log_stdin()
|
|
||||||
{
|
|
||||||
echo "[`date`] $@" >&1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Start FE.
|
|
||||||
cd $SR_HOME/fe/bin/
|
|
||||||
log_stdin "Start FE"
|
|
||||||
./start_fe.sh --host_type FQDN --daemon
|
|
||||||
|
|
||||||
# Start BE.
|
|
||||||
log_stdin "Start BE"
|
|
||||||
cd $SR_HOME/be/bin/
|
|
||||||
./start_be.sh --daemon
|
|
||||||
|
|
||||||
|
|
||||||
# Sleep until the cluster starts.
|
|
||||||
sleep 15;
|
|
||||||
|
|
||||||
# Fetch fqdn with the command suggested by AWS official doc: https://docs.aws.amazon.com/managedservices/latest/userguide/find-FQDN.html
|
|
||||||
MYFQDN=`hostname --fqdn`
|
|
||||||
log_stdin "Register BE ${MYFQDN} to FE"
|
|
||||||
mysql -uroot -h${MYFQDN} -P 9030 -e "alter system add backend '${MYFQDN}:9050';"
|
|
||||||
|
|
||||||
|
|
||||||
# health check the entire stack end-to-end and exit on failure.
|
|
||||||
while sleep 10; do
|
|
||||||
PROCESS_STATUS=`mysql -uroot -h127.0.0.1 -P 9030 -e "show backends\G" |grep "Alive: true"`
|
|
||||||
if [ -z "$PROCESS_STATUS" ]; then
|
|
||||||
log_stdin "service has exited"
|
|
||||||
exit 1;
|
|
||||||
fi;
|
|
||||||
log_stdin $PROCESS_STATUS
|
|
||||||
done
|
|
||||||
|
|
@ -28,9 +28,9 @@ FROM registry.access.redhat.com/ubi8/ubi:8.7
|
||||||
ARG STARROCKS_ROOT=/opt/starrocks
|
ARG STARROCKS_ROOT=/opt/starrocks
|
||||||
|
|
||||||
RUN yum install -y java-1.8.0-openjdk-devel tzdata openssl curl vim ca-certificates fontconfig gzip tar less hostname procps-ng lsof && \
|
RUN yum install -y java-1.8.0-openjdk-devel tzdata openssl curl vim ca-certificates fontconfig gzip tar less hostname procps-ng lsof && \
|
||||||
rpm -ivh https://repo.mysql.com/mysql57-community-release-el7.rpm && \
|
rpm -ivh https://repo.mysql.com/mysql80-community-release-el8-7.noarch.rpm && \
|
||||||
yum -y install mysql-community-client --nogpgcheck && \
|
yum -y install mysql-community-client --nogpgcheck && \
|
||||||
yum remove -y mysql57-community-release-el7
|
yum remove -y mysql80-community-release
|
||||||
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
|
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
|
||||||
|
|
||||||
RUN touch /.dockerenv
|
RUN touch /.dockerenv
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ FROM registry.access.redhat.com/ubi8/ubi:8.7
|
||||||
ARG STARROCKS_ROOT=/opt/starrocks
|
ARG STARROCKS_ROOT=/opt/starrocks
|
||||||
|
|
||||||
RUN yum install -y java-1.8.0-openjdk-devel tzdata openssl curl vim ca-certificates fontconfig gzip tar less hostname procps-ng lsof && \
|
RUN yum install -y java-1.8.0-openjdk-devel tzdata openssl curl vim ca-certificates fontconfig gzip tar less hostname procps-ng lsof && \
|
||||||
rpm -ivh https://repo.mysql.com/mysql57-community-release-el7.rpm && \
|
rpm -ivh https://repo.mysql.com/mysql80-community-release-el8-7.noarch.rpm && \
|
||||||
yum -y install mysql-community-client --nogpgcheck && \
|
yum -y install mysql-community-client --nogpgcheck && \
|
||||||
yum remove -y mysql57-community-release-el7
|
yum remove -y mysql80-community-release
|
||||||
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
|
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
|
||||||
|
|
||||||
RUN touch /.dockerenv
|
RUN touch /.dockerenv
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue