2013-11-19 2 views
4

Я запускаю Accumulo 1.5 в виртуальной виртуальной машине Ubuntu 12.04 VirtualBox. Я установил файл accumulo-site.xml instance.zookeeper.host на IP-адрес виртуальной машины, и я могу подключиться к накопителю и запускать запросы с удаленной клиентской машины. С клиентской машины я также могу использовать браузер, чтобы увидеть имя-имя-аддопа, просмотреть файловую систему и т. Д. Но я не могу подключиться к странице обзора Accumulo (порт 50095) из любого места, кроме непосредственно из виртуальной машины Accumulo. Между VM и клиентом нет межсетевого экрана, и, кроме того, что страница обзора Accumulo недоступна, все остальное работает нормально.Консоль консоли Accumulo недоступна за пределами VirtualBox VM

Есть ли настройка конфигурации, которую мне нужно изменить, чтобы разрешить внешний доступ к консоли консоли Accumulo?

благодаря

ответ

4

Я был в состоянии получить Accumulo следить, чтобы связать все сетевые интерфейсы вручную применения этого патча: https://git-wip-us.apache.org/repos/asf?p=accumulo.git;a=commit;h=7655de68

В conf/accumulo-env.sh добавить:

# Should the monitor bind to all network interfaces -- default: false 
export ACCUMULO_MONITOR_BIND_ALL="true" 

В bin/config.sh добавить:

# ACCUMULO-1985 provide a way to use the scripts and still bind to all network interfaces 
export ACCUMULO_MONITOR_BIND_ALL=${ACCUMULO_MONITOR_BIND_ALL:-"false"} 

И изменить bin/start-server.sh на совпадение:

SOURCE="${BASH_SOURCE[0]}" 
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 
    bin="$(cd -P "$(dirname "$SOURCE")" && pwd)" 
    SOURCE="$(readlink "$SOURCE")" 
    [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 
done 
bin="$(cd -P "$(dirname "$SOURCE")" && pwd)" 
# Stop: Resolve Script Directory 

. "$bin"/config.sh 

HOST="$1" 
host "$1" >/dev/null 2>/dev/null 
if [ $? -ne 0 ]; then 
    LOGHOST="$1" 
else 
    LOGHOST=$(host "$1" | head -1 | cut -d' ' -f1) 
fi 
ADDRESS="$1" 
SERVICE="$2" 
LONGNAME="$3" 
if [ -z "$LONGNAME" ]; then 
    LONGNAME="$2" 
fi 
SLAVES=$(wc -l < ${ACCUMULO_HOME}/conf/slaves) 

IFCONFIG=/sbin/ifconfig 
if [ ! -x $IFCONFIG ]; then 
    IFCONFIG='/bin/netstat -ie' 
fi 

# ACCUMULO-1985 Allow monitor to bind on all interfaces 
if [ ${SERVICE} == "monitor" -a ${ACCUMULO_MONITOR_BIND_ALL} == "true" ]; then 
    ADDRESS="0.0.0.0" 
fi 

ip=$($IFCONFIG 2>/dev/null| grep inet[^6] | awk '{print $2}' | sed 's/addr://' | grep -v 0.0.0.0 | grep -v 127.0.0.1 | head -n 1) 
if [ $? != 0 ] 
then 
    ip=$(python -c 'import socket as s; print s.gethostbyname(s.getfqdn())') 
fi 

if [ "$HOST" = "localhost" -o "$HOST" = "`hostname`" -o "$HOST" = "$ip" ]; then 
    PID=$(ps -ef | egrep ${ACCUMULO_HOME}/.*/accumulo.*.jar | grep "Main $SERVICE" | grep -v grep | awk {'print $2'} | head -1) 
else 
    PID=$($SSH $HOST ps -ef | egrep ${ACCUMULO_HOME}/.*/accumulo.*.jar | grep "Main $SERVICE" | grep -v grep | awk {'print $2'} | head -1) 
fi 

if [ -z $PID ]; then 
    echo "Starting $LONGNAME on $HOST" 
    if [ "$HOST" = "localhost" -o "$HOST" = "`hostname`" -o "$HOST" = "$ip" ]; then 
     #${bin}/accumulo ${SERVICE} --address $1 >${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.out 2>${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.err & 
     ${bin}/accumulo ${SERVICE} --address ${ADDRESS} >${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.out 2>${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.err & 
     MAX_FILES_OPEN=$(ulimit -n) 
    else 
     #$SSH $HOST "bash -c 'exec nohup ${bin}/accumulo ${SERVICE} --address $1 >${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.out 2>${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.err' &" 
     $SSH $HOST "bash -c 'exec nohup ${bin}/accumulo ${SERVICE} --address ${ADDRESS} >${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.out 2>${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.err' &" 
     MAX_FILES_OPEN=$($SSH $HOST "/usr/bin/env bash -c 'ulimit -n'") 
    fi 

    if [ -n "$MAX_FILES_OPEN" ] && [ -n "$SLAVES" ] ; then 
     if [ "$SLAVES" -gt 10 ] && [ "$MAX_FILES_OPEN" -lt 65536 ]; then 
     echo "WARN : Max files open on $HOST is $MAX_FILES_OPEN, recommend 65536" 
     fi 
    fi 
else 
    echo "$HOST : $LONGNAME already running (${PID})" 
fi 
1

Проверьте, что монитор связан с правильным интерфейсом, а не «локальный» петлевой интерфейс. Возможно, вам придется отредактировать файл мониторов в каталоге конфигурации Accumulo с IP/hostname правильного интерфейса.

+0

Можете ли вы уточнить, где и как добавить эту настройку? У меня нет файла «мониторов», и нет ничего в файле accumulo-site.xml из примеров. – 10flow

+1

Вы можете создать файл мониторов в каталоге conf Accumulo. Он имеет тот же формат, что и файл мастеров или подчиненных. Если он не существует, он будет возвращаться к содержимому файла мастеров. – Christopher

Смежные вопросы