Я установил Cassandra на Ubuntu 16.04. (Я заставил Кассандру работать на RedHat. Но теперь я хочу, чтобы она работала на Ubuntu.) Казалось, что установка прошла гладко. Я запускаю эту команду, чтобы доказать, что Кассандра активна:
sudo service cassandra status
Эта команда возвращает этот вывод:
cassandra.service - LSB: distributed storage system for structured data
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
Вышеуказанное «плохо» касается меня. Но он возвращает «Активный». Кажется, что нет никаких серьезных проблем.
Когда я запускаю «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.
Это решение работает для меня.