|
|
@@ -10,22 +10,42 @@ fi
|
|
|
BANNED_USER="root"
|
|
|
USER="$(whoami)"
|
|
|
CURRENT_HOST=$(hostname -s)
|
|
|
-RELEASE_HOST="m3"
|
|
|
PROJECT_NAME=$(basename "${BASE_DIR}")
|
|
|
-DATAX_WORKERS=(
|
|
|
- m3 d1 d2 d3 d4
|
|
|
-)
|
|
|
-declare -A DATAX_WORKERS_WEIGHTS=(
|
|
|
- ["m3"]=1
|
|
|
- ["d1"]=2 ["d2"]=2 ["d3"]=3 ["d4"]=3
|
|
|
-)
|
|
|
+
|
|
|
+# 从 conf/workers.ini 加载 RELEASE_HOST + DATAX_WORKERS + 权重 + 加权随机池
|
|
|
+declare -A DATAX_WORKERS_WEIGHTS
|
|
|
+DATAX_WORKERS=()
|
|
|
+_section=""
|
|
|
+while IFS= read -r _line; do
|
|
|
+ _line="${_line%%[;#]*}"
|
|
|
+ _line="$(echo -n "${_line}" | xargs)"
|
|
|
+ [[ -z "${_line}" ]] && continue
|
|
|
+ if [[ "${_line}" =~ ^\[(.+)\]$ ]]; then
|
|
|
+ _section="${BASH_REMATCH[1]}"
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+ case "${_section}" in
|
|
|
+ release)
|
|
|
+ if [[ "${_line}" =~ ^host[[:space:]]*=[[:space:]]*(.+)$ ]]; then
|
|
|
+ RELEASE_HOST="${BASH_REMATCH[1]}"
|
|
|
+ fi
|
|
|
+ ;;
|
|
|
+ weights)
|
|
|
+ if [[ "${_line}" =~ ^([^[:space:]=]+)[[:space:]]*=[[:space:]]*([0-9]+)$ ]]; then
|
|
|
+ DATAX_WORKERS+=("${BASH_REMATCH[1]}")
|
|
|
+ DATAX_WORKERS_WEIGHTS["${BASH_REMATCH[1]}"]="${BASH_REMATCH[2]}"
|
|
|
+ fi
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+done < "${BASE_DIR}/conf/workers.ini"
|
|
|
+
|
|
|
DATAX_WORKERS_QUEUE=()
|
|
|
-# 定义一个map存储机器的ip地址和分配的权重
|
|
|
-for key in ${!DATAX_WORKERS_WEIGHTS[*]}; do
|
|
|
- for ((i = 0; i < ${DATAX_WORKERS_WEIGHTS[$key]}; i++)); do
|
|
|
- DATAX_WORKERS_QUEUE+=("$key")
|
|
|
+for _key in "${!DATAX_WORKERS_WEIGHTS[@]}"; do
|
|
|
+ for ((_i = 0; _i < DATAX_WORKERS_WEIGHTS[$_key]; _i++)); do
|
|
|
+ DATAX_WORKERS_QUEUE+=("${_key}")
|
|
|
done
|
|
|
done
|
|
|
+unset _section _line _key _i
|
|
|
if [ "${USER}" == "${BANNED_USER}" ]; then
|
|
|
pretty_print "${NORM_RED}Project ${NORM_GRN}${PROJECT_NAME}${NORM_RED} is running by banned user ${NORM_GRN}${BANNED_USER}${NORM_RED}, exit with error code ${NORM_GRN}18"
|
|
|
exit 18
|