Thursday, 12 May 2016

Setup Consul on a Single Server

How to setup Consul on one instance

Running Consul on one instance

 

This installation guide assumes Ubuntu 14.04 OS, tmux and nginx already installed. Follow the below instruction to complete the consul installation.

  • Run the following command to download and install consul
cd /usr/local/bin
sudo wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
sudo unzip consul_0.6.4_linux_amd64.zip
sudo rm consul_0.6.4_linux_amd64.zip


Now the consul command should be ready to use

  • Download the web-ui of consul in /home/ubuntu/consul-ui/
cd ~
mkdir -p consul-ui
wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_web_ui.zip
unzip consul_0.6.4_web_ui.zip
sudo rm consul_0.6.4_web_ui.zip


  • Create the file config.json in /home/ubuntu/consul-config/server/ directory and put the following configuration in it. Here P.P.P.P is the private IP of the instance
{
    "bootstrap": true,
    "server": true,
    "log_level": "DEBUG",
    "enable_syslog": true,
    "datacenter": "dc1",
    "addresses" : {
      "http": "0.0.0.0"
    },
    "bind_addr": "P.P.P.P",
    "node_name": "P.P.P.P",
    "data_dir": "/home/ubuntu/consuldata",
    "ui_dir": "/home/ubuntu/consul-ui",
    "acl_datacenter": "dc1",
    "acl_master_token": "4f3fa35a-h3ab-45a2-914f-f82a34fab0c45",
    "acl_default_policy": "deny",
    "encrypt": "pXoaLOJ816mO+da8y8zrsg=="
}


  • Make consul.conf file in /etc/nginx/conf.d/ directory and put the following configurations in it
server
{
  listen 80 ;
  server_name myconsul.com;
  root /home/ubuntu/consul-ui;
      location / {
        proxy_pass http://127.0.0.1:8500;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
    }
}


Change myconsul.com to the the desired domain, save and exit. Restart the nginx server sudo service nginx restart.

  • Open a tmux session by running tmux command. Run the following command to start consul
consul agent -config-dir ~/consul-config/server -ui-dir ~/consul-ui -bootstrap true -client=0.0.0.0


Now, the consul should be running. Leave the process running by running ctrl+b than d. This will leave the tmux session running in which consul process was running.
The web-ui must be running on the public-ip or domain mentioned in the consul.conf file.

Note - If the link to download consul and web-ui doesn't work (in case of version of consul changed) than visit this page to get the right link.

The video Tutorial
 

9 comments:

  1. I think it makes more sense to add another 2 sections into this article: how to use docker in order to run consul in a single command, and how to setup single consul via init, upstart or systemd, instead of tmux.

    ReplyDelete
  2. Do you have any documentation to setup two data center. getting some errors while adding with 1st data center.

    ReplyDelete
    Replies
    1. What is the error? Use single server if you don't need a second one and if you still want to use two instances then follow below tutorial and do all steps only for two instances instead of four.
      http://jee-appy.blogspot.com/2015/09/consul-setup-tutorial.html

      Delete
  3. Hi Ajeet, Hope your day is going great. I am very new to Consul, do you have instructions on how to set this up on RHEL 7? Thanks.

    ReplyDelete
  4. Hi,
    I need your help to read data like these values
    "configurationsettings/applicationsettings/configspecurl",
    "configurationsettings/applicationsettings/maxhitsallowed",
    "configurationsettings/applicationsettings/metadataserviceurl",
    "configurationsettings/filelogsettings/errorLogPath",
    "configurationsettings/filelogsettings/transactionLogPath",
    "configurationsettings/getaroomsettings/ProductionUrl",
    "configurationsettings/getaroomsettings/TestUrl"
    into hierarchical format into C# class format like this

    public class ConfigurationSettings
    {
    public ApplicationSettings applicationSettings { get; set; }
    public SupplierSettings supplierSettings { get; set; }
    }

    public class ApplicationSettings
    {
    public string MetadataServiceUrl { get; set; }
    }

    public class SupplierSettings
    {
    public string TestUrl { get; set; }
    }

    Please help me on this.

    ReplyDelete
  5. Hi,
    Thanks for your guidance.
    My requirement is whenever any key-value added / updated, my handler will get some notification to reload cache in my application, after reload of cache I will get latest configuration values?
    Can u suggest best approach to implement the above scenario?

    ReplyDelete
  6. How to read diffence / updated value in hander file?

    Consul Command: consul watch -type=keyprefix -prefix="{keyname}" my-prefix-handler.sh

    So, whenever any key is updated or added in that {keyname}, How can I will get update result into my handler file?

    Please share some sample code for it.

    What should be the content of my-prefix-handler.sh file?

    ReplyDelete
  7. Hi Ajeet,
    I am very new to Consul. I followed all the instruction to install the consul. I am doing it on AWS. But i am getting the error consul command not found. What to do to solve this?

    ReplyDelete
    Replies
    1. Hello!! Probably consul has not been installed properly. If you find any issue by following this tutorial, then you can follow our video tutorial as well. https://www.youtube.com/watch?v=iVKveB-2bGQ

      Delete

 

Copyright @ 2013 Appychip.

Designed by Appychip & YouTube Channel