Rabbitmq Cluster on CentOS 7

Step 0. Prelimenaries

Run yum update

$ sudo yum update

Stop the firewall

To make the ports accessible i.e. for clustering nodes use 5672, 4369, and 25672.
$ sudo systemclt stop firewall-cmd

Disable SELinux

$ sudo setenforce 0
The above command will disable SELinux for the session i.e. until next reboot – to permanently disable it set SELINUX=disabled in /etc/selinux/config file.

Set host names

Doing so later will most probably break the installation.
We’ll name the nodes/VMs as rabbit1 ( and rabbit2 ( – the default is localhost.

Continue reading “Rabbitmq Cluster on CentOS 7”

Install Elasticsearch 5 on CentOS 7.x

Elasticsearch is a distributed storage and real-time search engine.
  • Distributed storage – you just need to setup and add Elasticsearch nodes, it’ll keep the data distributed on the cluster nodes. The distributed-ness makes data durable and highly-available too.
  • Real-time search engine – You can get to query the data the moment it’s been written.
Due to the above 2 attributes you have been listening and reading about Elasticsearch, wherever there’s a discussion of real-time data analysis. It’d not be an overstatement to say technologies like Elasticsearch set the foundation for any efficient and reliable search engine.

Continue reading “Install Elasticsearch 5 on CentOS 7.x”

Install Java 8 on CentOS/RHEL 7.x

If you have a fresh installation, it is recommended to run the update first
yum update
Usually Java comes installed on CentOS 7 (Everything), for CentOS 7 minimal you may need to install Java for various setups. On a CentOS 7 Everything, you can verify it by simply checking the version:
java -version

The output:

# java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b15)
OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)
Java 1.8.0_111-b15 is the latest available, ‘1.8.0’ states it is Java 8, ‘u111’ means update 111, and ‘b15’means build 15.
For CentOS 7 minimal, the same command will give a different output:
# java -version
-bash: java: command not found
Which means Java is not installed. The latest Java version currently is Java 8.

Continue reading “Install Java 8 on CentOS/RHEL 7.x”

Syncing Date and Timezone – Install and configure ntpd

For various cluster or distributed application setups it’s an explicit requirement to have date and timezone (TZ) on each node synced. The difference in date or TZ may result in serious issues, for example in case of Puppet Master/Agent setup it’s a must requirement to have the data and TZ synced across all the nodes, if not, Puppet master server being the certificate authority may issue agent certificate from the distant past or future, which other nodes will treat as expire.
For syncing data and timezone across all the nodes, for whatever reason the tool at hand is ntpd.
The Network Time Protocol daemon (ntpd) is an operating system program that maintains the system time in synchronization with time servers using the Network Time Protocol (NTP).

Continue reading “Syncing Date and Timezone – Install and configure ntpd”

Vagrantfile explained

Post’s pre-requisites:

You must understand each and every word in ‘vagrant up‘, otherwise the following text won’t make much sense to you.

A minimal Vagrantfile

Let’s start with a minimal Vagrantfile, which you’ll get on executing vagrant init hashicorp/precise64:


# -*- mode: ruby -*-
# vi: set ft=ruby :# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "hashicorp/precise64"# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: ""# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
# View the documentation for the provider you are using for more
# information on available options.# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# end# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2

Continue reading “Vagrantfile explained”

Vagrant: VirtualBox and GuestAdditions version

One last thing about Vagrant (setup and installation) I want to share with you guys is, syncing the VirtualBox and GuestAdditions versions. I hope you’re here after going through the previous Vagrant posts ‘Installing Vagrant on CentOS 7‘ and ‘Vagrant 101‘ – on setting up the first VM (i.e. precise64), when you executed the ‘vagrant up’ for the first time, you may end up getting the following warning message:

Continue reading “Vagrant: VirtualBox and GuestAdditions version”

The story behind ‘vagrant up’ – Vagrant 101

You’re a curios tech guy, who wants to test every new Linux package, or a tech blogger who has an impulsion to write a step-by-step guide for installation of a seemingly complex tool/software, or simply a developer who needs to test some new stack with all the operating system level dependencies, all you need is a lightweight, quickly up, portable development environment. The good news is we have Vagrant – a simple to use virtual machine management tool. With Vagrant setting up a fresh development sandbox is just a matter of few commands – at max 3 step process:
  1. Setup – download and install Vagrant – Installing Vagrant on CentOS 7.
  2. Configure – Create a single file i.e. ‘Vagrantfile’, to specify the specs for the virtual machine you want Vagrant to spawn, and run vagrant init <box-to-use>;
  3. Work – simply run ‘vagrant up‘, and a clean development environment will be there.

Continue reading “The story behind ‘vagrant up’ – Vagrant 101”

Installing Vagrant on CentOS 7

Vagrant is virtual machine configuration and provisioning utility – uses VirtualBox, VMWare, KVM, etc for virualization and Puppet, Chef, Ansible, or shell scripts for provisioning.

Step 0 – Pre-requisites for Vagrant

The setup just requires VirtualBox to be installed – as Vagrant runs on top of a virtualization software. Here is a previous post – “Install VirtualBox 5.1 for CentOS 7/RHEL 7“. I am also listing the steps/commands here:
# cd /etc/yum.repos.d/
# wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
# yum update -y
# yum -y install epel-release
# yum -y install gcc make patch  dkms qt libgomp
# yum -y install kernel-headers kernel-devel fontforge binutils glibc-headers glibc-devel
# yum -y install VirtualBox-5.1

Step 1 – Install Vagrant

You can download the Vagrant as per your platform – for this post we’ll be downloading it for CentOS 7. The latest available version is 1.8.6.
# wget https://releases.hashicorp.com/vagrant/1.8.6/vagrant_1.8.6_x86_64.rpm

Continue reading “Installing Vagrant on CentOS 7”

Install VirtualBox 5.1 for CentOS 7/RHEL 7

VirtualBox (aka Oracle VM VirtualBox) is an open-source “full virtualization” solution by Oracle Corporation. Basically it is a hypervisor, which makes it possible to install an unmodified OS on top of your existing host OS – these environments are generally termed as virtual machines or guest machines (the base machine the Host). Hypervisors i.e. VirtualBox provide a virtualization layer i.e. making it possible for the guest machines to access the abstracted hardware resources.

Continue reading “Install VirtualBox 5.1 for CentOS 7/RHEL 7”