Связаться по:
vkarabedyants Telegram Viber

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Настройка кластера Cassandra

1. Руководство по установке Cassandra

1.1. О серверах

Имеется 5 серверов в диапазоне IP адресов 192.168.1.200-204. 192.168.1.200-201 — seeds

1.2. Установка JRE

1.2.1. Создание каталога для java

mkdir -p /opt/java

1.2.2. Загрузить jre из http://oracle.com и скопировать на сервер

scp jre* [email protected]:/opt/java/

1.2.3. Распаковка архива

cd /opt/java ; tar xvzf jre*tar.gz

1.2.4. Создание ссылок в /usr/bin

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)

# 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. Установка libjemalloc

apt-get install libjemalloc1

1.5. Установка Cassandra

1.5.1. Необходимо отключить swap в fstab и

swapoff -a

1.5.2. Необходимо, чтоб имя хоста разрешалось либо через DNS, либо через /etc/hosts

# cat /etc/hosts
127.0.0.1           localhost
127.0.1.1           cassandra-node2

1.5.3. Добавление пользователя для Cassandra 

 

adduser cassandra

1.5.4. Загрузка Cassandra из http://cassandra.apache.org

su - cassandra
mkdir -p cassandra/3.4 && cd cassandra/3.4
wget http://apache.javapipe.com/cassandra/3.4/apache-cassandra-3.4-bin.tar.gz

1.5.5. Распаковка архива

tar xzvf apache-cassandra-3.4-bin.tar.gz

1.5.6. Создание ссылки на исполняемый файл JNA

 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.conf

Эти настройки можно сделать исходя из аппаратных возможностей сервера, но стартовый скрипт Cassandra сам выделяет память, исходя из её количества.

cassandra soft memlock unlimited
cassandra hard memlock unlimited
cassandra soft nproc unlimited
cassandra hard nproc unlimited

1.5.8. Редактируем ~/cassandra/3.4/apache-cassandra-3.4/conf/cassandra.yaml

cluster_name: 'My Cassandra Cluster' num_tokens: 256

seed_provider:
-  class_name: org.apache.cassandra.locator.SimpleSeedProvider 
parameters:
-  seeds: "192.168.1.200,192.168.1.201"
endpoint_snitch: GossipingPropertyFileSnitch 
authenticator: PasswordAuthenticator

rpc_address: 0.0.0.0

#  Эти настройки индивидуальные для каждого сервера
listen_address: 192.168.1.200 
broadcast_rpc_address: 192.168.1.200

#  Настройка каталогов.
data_file_directories:
- /var/lib/cassandra/data

commitlog_directory: /var/lib/cassandra/commitlog 
saved_caches_directory: /var/lib/cassandra/saved_caches
hints_directory: /var/lib/cassandra/hints

1.5.9. Создание каталогов для данных и журналов 

 

# 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.xml

Возможно, есть другой способ. Заменить все строки

 ${cassandra.logdir}

на

 /var/log/cassandra

Закомментировав эту строку можно отключить DEBUG лог

 <!--         <appender-ref ref="ASYNCDEBUGLOG" />  -->

1.5.11. Редактирование ~cassandra/3.4/apache-cassandra-3.4/conf/cassandra-env.sh

JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc.log"
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"
LOCAL_JMX=no
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"

1.6. Проверяем запуск Cassandra и смотрим вывод

 ~/cassandra/3.4/apache-cassandra-3.4$ ./bin/cassandra -f

1.7. Используемые порты

TCP:7000 - Gossip(междунодовые коммуникации), открыть порт в файерволле для подсети кластера
TCP:7199 - JMX(Java Management)
TCP:9160 - Thrift(взаимодействие с внешними приложениями и фреймворками)

1.8. Запуск Cassandra через systemd

1.8.1. Делаем ссылку на каталог с исполняемыми файлами

Это делается, чтоб не вводить длинные пути. Можно так же добавить в PATH

[email protected]:~$ ln -s /home/cassandra/cassandra/3.4/apache-cassandra-3.4/bin ./

1.8.2. Конфигурация для автоматического создания каталога pid файла

cat /etc/tmpfiles.d/cassandra.conf
d   /var/run/cassandra   0755 cassandra cassandra

1.8.3. Запуск systemd-tmpfiles 

 

#  env SYSTEMD_LOG_LEVEL=debug systemd-tmpfiles --create cassandra.conf /var/run/cassandra created successfully.
#  ls -ld /var/run/cassandra
drwxr-xr-x 2 cassandra cassandra 60 Apr 12 00:45 /var/run/cassandra

1.8.4. Создание systemd конфигурации для запуска демона — cassandra.service

1.8.5. Проверка запуска

# service cassandra start
# service cassandra status
● cassandra.service - Cassandra database
Loaded: loaded (/lib/systemd/system/cassandra.service; enabled)
Active: active (running) since Tue 2016-04-12 01:35:14 EEST; 33s ago
Process: 3938 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry INT/15/TERM/15 --pidfile /var/run/cassandra/cassandra.pid (code=exited, status=0/SUCCESS)
Main PID: 4049 (java)
CGroup: /system.slice/cassandra.service
└─4049 java -Xloggc:/var/log/cassandra/gc.log -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+Hea...
# service cassandra stop
# service cassandra status
● cassandra.service - Cassandra database
Loaded: loaded (/lib/systemd/system/cassandra.service; enabled)
Active: failed (Result: exit-code) since Tue 2016-04-12 01:36:51 EEST; 11s ago
Process: 4188 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry INT/15/TERM/15 --pidfile /var/run/cassandra/cassandra.pid (code=exited, status=0/SUCCESS)
Process: 4049 ExecStart=/home/cassandra/bin/cassandra -p /var/run/cassandra/cassandra.pid -E /var/log/cassandra/errors.log (code=exited, status=143)
Main PID: 4049 (code=exited, status=143)

1.8.6. Включение сервиса и его запуск

 

 #  systemctl enable cassandra.service

#  service cassandra start

cassandra6

 

Предоставляем услуги по созданию отказоустойчивых систем, а также их администрированию, дополнительная информация через раздел Контакты.

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.