mkdir -p /opt/java
1.2.2. Загрузить jre из http://oracle.com и скопировать на серверn
scp jre* user@host:/opt/java/
1.2.3. Распаковка архиваn
cd /opt/java ; tar xvzf jre*tar.gz
1.2.4. Создание ссылок в /usr/binn
update-alternatives --install "/usr/bin/java" "java" /opt/java/jre1.8.0_77/bin/java 1 update-alternatives --set java /opt/java/jre1.8.0_77/bin/java
1.3. Установка Java Native Access (JNA)n
# https://github.com/java-native-access/jna cd /usr/share/java && wget
# https://github.com/java-native-access/jna cd /usr/share/java && wget
1.4. Установка libjemallocn
apt-get install libjemalloc1
1.5. Установка Cassandrann1.5.1. Необходимо отключить swap в fstab иn
swapoff -a
1.5.2. Необходимо, чтоб имя хоста разрешалось либо через DNS, либо через /etc/hostsn
# cat /etc/hostsn127.0.0.1 localhostn127.0.1.1 cassandra-node2
1.5.3. Добавление пользователя для Cassandra nn nn
n
adduser cassandra
1.5.4. Загрузка Cassandra из http://cassandra.apache.orgn
su - cassandranmkdir -p cassandra/3.4 && cd cassandra/3.4nwget http://apache.javapipe.com/cassandra/3.4/apache-cassandra-3.4-bin.tar.gz
1.5.5. Распаковка архиваn
tar xzvf apache-cassandra-3.4-bin.tar.gz
1.5.6. Создание ссылки на исполняемый файл JNAn
ln -s /usr/share/java/jna-4.2.2.jar /home/cassandra/cassandra/3.4/apache-cassandra-3.4/lib/jna.jar
1.5.7. Настройка лимитов /etc/security/limits.confnnЭти настройки можно сделать исходя из аппаратных возможностей сервера, но стартовый скрипт Cassandra сам выделяет память, исходя из её количества.n
cassandra | soft | memlock | unlimited |
cassandra | hard | memlock | unlimited |
cassandra | soft | nproc | unlimited |
cassandra | hard | nproc | unlimited |
n1.5.8. Редактируем ~/cassandra/3.4/apache-cassandra-3.4/conf/cassandra.yamln
cluster_name: 'My Cassandra Cluster' num_tokens: 256nnseed_provider:n- class_name: org.apache.cassandra.locator.SimpleSeedProvider nparameters:n- seeds: "192.168.1.200,192.168.1.201"nendpoint_snitch: GossipingPropertyFileSnitch nauthenticator: PasswordAuthenticatornnrpc_address: 0.0.0.0nn# Эти настройки индивидуальные для каждого сервераnlisten_address: 192.168.1.200 nbroadcast_rpc_address: 192.168.1.200nn# Настройка каталогов.ndata_file_directories:n- /var/lib/cassandra/datanncommitlog_directory: /var/lib/cassandra/commitlog nsaved_caches_directory: /var/lib/cassandra/saved_cachesnhints_directory: /var/lib/cassandra/hints
1.5.9. Создание каталогов для данных и журналов nn nn
n
# mkdir -v /var/{lib,log}/cassandra && chown -v cassandra:cassandra /var/ {lib,log}/cassandra
1.5.10. Редактирование ~cassandra/3.4/apache-cassandra-3.4/conf/logback.xmlnnВозможно, есть другой способ. Заменить все строкиn
${cassandra.logdir}
наn
/var/log/cassandra
Закомментировав эту строку можно отключить DEBUG логn
<!-- <appender-ref ref="ASYNCDEBUGLOG" /> -->
1.5.11. Редактирование ~cassandra/3.4/apache-cassandra-3.4/conf/cassandra-env.shn
JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc.log"nJVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"nLOCAL_JMX=nonJVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
1.6. Проверяем запуск Cassandra и смотрим выводn
~/cassandra/3.4/apache-cassandra-3.4$ ./bin/cassandra -f
1.7. Используемые портыn
TCP:7000 - Gossip(междунодовые коммуникации), открыть порт в файерволле для подсети кластераnTCP:7199 - JMX(Java Management)nTCP:9160 - Thrift(взаимодействие с внешними приложениями и фреймворками)
1.8. Запуск Cassandra через systemdnn1.8.1. Делаем ссылку на каталог с исполняемыми файламиnnЭто делается, чтоб не вводить длинные пути. Можно так же добавить в PATHn
cassandra@debian:~$ ln -s /home/cassandra/cassandra/3.4/apache-cassandra-3.4/bin ./
1.8.2. Конфигурация для автоматического создания каталога pid файлаn
cat /etc/tmpfiles.d/cassandra.confnd /var/run/cassandra 0755 cassandra cassandra
1.8.3. Запуск systemd-tmpfiles nn nn
n
# env SYSTEMD_LOG_LEVEL=debug systemd-tmpfiles --create cassandra.conf /var/run/cassandra created successfully.n# ls -ld /var/run/cassandrandrwxr-xr-x 2 cassandra cassandra 60 Apr 12 00:45 /var/run/cassandra
1.8.4. Создание systemd конфигурации для запуска демона — cassandra.servicenn
n
# cat /lib/systemd/system/cassandra.servicen[Unit]nDescription=Cassandra databasenAfter=network.targetn[Service]nPIDFile=/var/run/cassandra/cassandra.pidnUser=cassandranGroup=cassandranExecStart=/home/cassandra/bin/cassandra -p /var/run/cassandra/cassandra.pid -E /var/log/cassandra/errors.lognExecStop=-/sbin/start-stop-daemon --quiet --stop --retry INT/15/TERM/15 --pidfile /run/cassandra.pidnTimeoutStopSec=45nKillMode=mixedn[Install]nWantedBy=multi-user.target
# service cassandra startn# service cassandra statusn● cassandra.service - Cassandra databasenLoaded: loaded (/lib/systemd/system/cassandra.service; enabled)nActive: active (running) since Tue 2016-04-12 01:35:14 EEST; 33s agonProcess: 3938 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry INT/15/TERM/15 --pidfile /var/run/cassandra/cassandra.pid (code=exited, status=0/SUCCESS)nMain PID: 4049 (java)nCGroup: /system.slice/cassandra.servicen└─4049 java -Xloggc:/var/log/cassandra/gc.log -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+Hea...n# service cassandra stopn# service cassandra statusn● cassandra.service - Cassandra databasenLoaded: loaded (/lib/systemd/system/cassandra.service; enabled)nActive: failed (Result: exit-code) since Tue 2016-04-12 01:36:51 EEST; 11s agonProcess: 4188 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry INT/15/TERM/15 --pidfile /var/run/cassandra/cassandra.pid (code=exited, status=0/SUCCESS)nProcess: 4049 ExecStart=/home/cassandra/bin/cassandra -p /var/run/cassandra/cassandra.pid -E /var/log/cassandra/errors.log (code=exited, status=143)nMain PID: 4049 (code=exited, status=143)
1.8.6. Включение сервиса и его запускnn nn
n
# systemctl enable cassandra.servicenn# service cassandra start
Предоставляем услуги по созданию отказоустойчивых систем, а также их администрированию, дополнительная информация через раздел Контакты.