Как запустить Cassandra, если появляется ошибка “Connection refused”?

Вопрос или проблема

Я установил Cassandra на Ubuntu 16.04. (Мне удалось заставить Cassandra работать на RedHat. Но теперь я хочу, чтобы она работала на Ubuntu.) Установка, казалось, прошла гладко. Я выполняю эту команду, чтобы доказать, что Cassandra активна:

sudo service cassandra status

Эта команда возвращает следующий вывод:

cassandra.service - LSB: распределенная система хранения структурированных данных
Loaded: loaded (/etc/init.d/cassandra; bad; vendor preset: enabled)
Active: active (exited) since Tue 2017-12-26 19:22:43 UTC; 8min ago
Docs: man:systemd-sysv-generator(8) Process: 1252 ExecStart=/etc/init.d/cassandra start (code=exited, status=0/SUCCESS)
Tasks: 0 Memory: 0B CPU: 0

Вышеупомянутое “bad” беспокоит меня. Но оно возвращает “Active”. Кажется, что серьезной проблемы нет.

Когда я запускаю “cqlsh” или “cqlsh 127.0.0.1”, я получаю

Ошибка соединения: (‘Не удалось подключиться к каким-либо серверам’, {‘127.0.0.1’: ошибка(111, “Пробовал подключиться к [(‘127.0.0.1’, 9042)]. Последняя ошибка: соединение отклонено”)})

Я использовал nmap для проверки порта 9042. Порт не заблокирован. Брандмауэр также не установлен.

Я перезагрузил сервер. Я попробовал изменить cassandra-env.sh. Я убрал комментарий с одного блока и установил его на 127.0.0.1:

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"

Ничего не работает. Я ожидаю попасть в другую командную строку, когда ввожу “cqlsh” или “cqlsh 127.0.0.1”. Но этого не происходит. Что мне сделать, чтобы “cqlsh” работал на сервере Ubuntu?

Если вы посмотрите в /var/log/cassandra/system.log, вы увидите:

Порт уже используется: 7199; вложенное исключение: java.net.BindException: Адрес уже используется (Сбой привязки)

Это порт по умолчанию в /etc/cassandra/cassandra-env.sh:

JMX_PORT=”7199″

Измените его на другой порт: 7198.

Это решение сработало для меня.

Ответ или решение

Для решения проблемы с запуском Apache Cassandra на Ubuntu 16.04 и устранения ошибки "Connection refused", требуется выполнить несколько шагов, связанных с конфигурацией и проверкой сетевых соединений. Давайте разберем этот процесс подробнее.

1. Проверка состояния службы Cassandra

Сначала нужно убедиться, что служба Cassandra действительно запущена корректно. Команда sudo service cassandra status показывает, что Cassandra находится в состоянии "active (exited)", что может указывать на то, что процесс службы завершился. Это может произойти по нескольким причинам, таким как проблемы с конфигурацией или конфликт портов.

2. Анализ логов

Загляните в лог-файл /var/log/cassandra/system.log, чтобы проанализировать текущие ошибки. Сообщение о том, что "Port already in use: 7199; nested exception is: java.net.BindException: Address already in use (Bind failed)" указывает на конфликт портов, используемых для JMX-мониторинга.

3. Изменение портов

Для решения проблемы портов, откройте файл конфигурации /etc/cassandra/cassandra-env.sh и измените значение порта JMX с дефолтного 7199 на другой, например, на 7198:

JMX_PORT="7198"

Сохраните изменения и перезапустите службу Cassandra:

sudo service cassandra restart

4. Проверка сетевых настроек

Убедитесь, что порт 9042, на котором работает Cassandra, действительно открыт и прослушивается. Используйте команду nmap:

nmap -p 9042 127.0.0.1

Проверьте, что порт отмечен как "open". Если это не так, проверьте настройки сети вашего сервера.

5. Поправка конфигурации JVM

Параметр -Djava.rmi.server.hostname=127.0.0.1, добавленный в cassandra-env.sh, необходим для корректной работы RMI, но не решает проблему подключения cqlsh. Убедитесь, что у вас правильно настроены остальные параметры и нет ошибок в файле конфигурации.

6. Запуск cqlsh

После выполнения вышеуказанных шагов, снова запустите cqlsh:

cqlsh 127.0.0.1

Если все настроено верно, это вызовет успешное подключение и откроет вам доступ к командной строке Cassandra Query Language.

Заключение

Следуя этим шагам, вы сможете устранить ошибку "Connection refused" при запуске Apache Cassandra на Ubuntu 16.04. Помните, что любые изменения конфигурации требуют внимательности, и всегда полезно сохранять резервные копии файлов конфигурации перед их изменением.

Таким образом, с учетом всех этих шагов, вы сможете не только решить текущую задачу, но и подготовить инфраструктуру для дальнейшего продуктивного использования Cassandra.

Оцените материал
Добавить комментарий

Капча загружается...