This is a simple Storm Cluster Setup. We are using a dedicated Zookeeper Cluster/Node, instead of the standalone zkserver. Below is how we will deploy our cluster.
/ ---- supervisor01
Nimbus[nimbus and ui]-----
\ ---- supervisor02
Before we start.
Download apache-storm-0.9.4.tar.gz
to file_archives
directory.
Download zookeeper-3.4.5-cdh5.1.2.tar.gz
to file_archives
directory.
Download jdk-7u75-linux-x64.tar.gz
to file_archives
directory.
Get the script from Github.
Below is the command to clone.
ahmed@ahmed-server ~]$ git clone https://github.com/ahmedzbyr/ansible-playbooks-bigdata
Step 1: Update Hosts File.
Update the host file to reflect your server IPs.
Currently hosts
file looks as below.
[zookeepernodes]
10.10.18.11 zookeeper_id=1
10.10.18.12 zookeeper_id=2
10.10.18.13 zookeeper_id=3
#
# storm cluster
#
[stormnimbusnodes]
10.10.18.11
[stormsupervisornodes]
10.10.18.12
10.10.18.13
[stormcluster:children]
stormnimbusnodes
stormsupervisornodes
Step 2: Update group_vars
information as required.
Update users/password and Directory information in group_vars/all
file.
Currently we have the below information.
# --------------------------------------
# USERs
# --------------------------------------
# password below for all the users is `hdadmin@123`
zookeeper_user: zkadmin
zookeeper_group: zkadmin
zookeeper_password: <encrypted_password_here>
storm_user: stormadmin
storm_group: stormadmin
storm_password: <encrypted_password_here>
# --------------------------------------
# STORM Variables
# --------------------------------------
storm_local_dir: /data/ansible/storm
storm_log_dir: /data/ansible/storm_logging
# --------------------------------------
# COMMON FOR INSTALL PATH
# --------------------------------------
# Common Location information.
common:
install_base_path: /usr/local
soft_link_base_path: /opt
Password can be generated using the below python snippet.
# Password Generated using python command below.
python -c "from passlib.hash import sha512_crypt; \
import getpass; print sha512_crypt.encrypt(getpass.getpass())"
Here is the execution. After entering the password you will get the encrypted password which can be used in the user creation.
ahmed@ahmed-server ~]$ python -c "from passlib.hash \
import sha512_crypt; import getpass; \
print sha512_crypt.encrypt(getpass.getpass())"
Enter Password: *******
$6$rounds=40000$/VINUa2uPsmGK/2xnmOt80TjDwbof9rNvnYY6icCkdAR2qrFquirBtT1
ahmed@ahmed-server ~]$
Step 3: Update default
information in roles/<install_role>/default/main.yml
.
Update the default
values if required.
Step 4: Executing.
Below is the command.
ahmed@ahmed-server ansible_kafka_tarball]$ ansible-playbook ansible_storm.yml -i hosts --ask-pass