Introduction
Consul is a very lightweight and simple Dev Ops tool by Hashicorp to enable monitoring of servers and services on it. It comprises of:
- A cluster – a group of servers acting as Consul managers. In this blog, we are setting up a cluster of 3 servers or managers.
- Agents – the servers that you want to monitor
The following blog is based on Ubuntu 14.04 and run as root user.
Consul Cluster
wget https://releases.hashicorp.com/consul/0.8.0/consul_0.8.0_linux_amd64.zip
- Unzip the binary package
unzip https://releases.hashicorp.com/consul/0.8.0/consul_0.8.0_linux_amd64.zip
- Create consul directory
mkdir -p /etc/consul.d/server
- Create data directory
mkdir /var/consul
- Create consul user
useradd -m consul
- Generate consul key
consul keygen
- Writes server config file in /etc/consul.d/server/config.json
{
“bind_addr”: “<server’s IP address>”,
“datacenter”: “dc1”,
“data_dir”: “/var/consul”,
“encrypt”: “<consul key you generated>”,
“log_level”: “INFO”,
“enable_syslog”: true,
“enable_debug”: true,
“client_addr”: “0.0.0.0”,
“server”: true,
“bootstrap_expect”: 3,
“leave_on_terminate”: false,
“skip_leave_on_interrupt”: true,
“rejoin_after_leave”: true,
“retry_join”: [
“<IP address for server 1>:8301”,
“<IP address for server 2>:8301”,
“<IP address for server 3>:8301”
]
}
- Write server start script into /etc/init/consul.conf
description “Consul server process”
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]respawn
setuid consul
setgid consulexec consul agent -config-dir /etc/consul.d/server -ui
- Start consul:
start consul
Consul Agent
As in Consul Server:
- Install Consul
- Unzip binary package
- Create consul user
- Creates consul directory
mkdir -p /etc/consul.d/client
- Writes client config file in /etc/consul.d/client/config.json
{
“bind_addr”: “<agent’s server IP>”,
“datacenter”: “dc1”,
“data_dir”: “/var/consul”,
“encrypt”: “<Consul key>”,
“log_level”: “INFO”,
“enable_syslog”: true,
“enable_debug”: true,
“server”: false,
“node_meta”: {
“name”: “Consul client”,
},
“rejoin_after_leave”: true,
“retry_join”: [
“<IP of Consul server 1>”,“<IP of Consul server 2>”,
“<IP of Consul server 3>”
]
}
- Write client start script in /etc/init/consul.conf
description “Consul Client process”
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]respawn
setuid consul
setgid consulexec consul agent -config-dir /etc/consul.d/client
- Starts Consul agent with command
start consul
Leave a Reply