{"id":3216,"date":"2019-07-11T23:33:55","date_gmt":"2019-07-11T20:33:55","guid":{"rendered":"https:\/\/kifarunix.com\/?p=3216"},"modified":"2023-11-23T20:49:48","modified_gmt":"2023-11-23T17:49:48","slug":"setup-multi-node-elasticsearch-cluster","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/setup-multi-node-elasticsearch-cluster\/","title":{"rendered":"Setup Multi-node Elasticsearch Cluster"},"content":{"rendered":"\n<p>In this guide, we are going to learn how to setup multi-node Elasticsearch cluster. This guide has been tested on Fedora 30\/Fedora 29\/CentOS 7. <\/p>\n\n\n\n<p>So what is Elasticsearch cluster? An Elasticsearch&nbsp;<em><strong>cluster<\/strong><\/em>&nbsp;is a group of nodes that have the same&nbsp;<code>cluster.name<\/code>&nbsp;attribute. As nodes join or leave a cluster, the cluster automatically reorganizes itself to evenly distribute the data across the available nodes. This ensures increased capacity and reliability.<\/p>\n\n\n\n<p>Each node in an Elasticsearch cluster serves one or more purpose:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Master-eligible node<\/strong> &#8211; A node that has&nbsp;<code>node.master<\/code>&nbsp;set to&nbsp;<code>true<\/code>&nbsp;(default). It  is responsible for lightweight cluster-wide actions such as creating or deleting an index, tracking which nodes are part of the cluster, and deciding which shards to allocate to which nodes.<\/li>\n\n\n\n<li><strong>Data node<\/strong> &#8211; A node that has&nbsp;<code>node.data<\/code>&nbsp;set to&nbsp;<code>true<\/code>&nbsp;(default). Data nodes hold data and perform data related operations such as CRUD, search, and aggregations.<\/li>\n\n\n\n<li><strong>Ingest node <\/strong>&#8211; A node that has&nbsp;<code>node.ingest<\/code>&nbsp;set to&nbsp;<code>true<\/code>&nbsp;(default). Ingest nodes are able to apply an&nbsp;<a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/pipeline.html\" target=\"_blank\" rel=\"noopener\">ingest pipeline<\/a> to a document in order to transform and enrich the document before indexing.<\/li>\n\n\n\n<li><strong>Coordinating node<\/strong> &#8211; Its main role is to route search and indexing requests from clients to data nodes. It behaves as smart load balancers.<\/li>\n<\/ul>\n\n\n\n<p>See an updated guide on <a href=\"https:\/\/kifarunix.com\/setup-multinode-elasticsearch-8-x-cluster\/\" target=\"_blank\" rel=\"noreferrer noopener\">Setup Multinode Elasticsearch 8.x Cluster<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#setup-multi-node-elasticsearch-cluster\">Setup Multi-node Elasticsearch Cluster<\/a><ul><li><a href=\"#installing-elasticsearch-7-on-fedora-30-29-cent-os-7\">Installing Elasticsearch 7 on Fedora 30\/29\/CentOS 7<\/a><\/li><li><a href=\"#setup-multi-node-elasticsearch-cluster-1\">Setup Multi-node Elasticsearch Cluster<\/a><ul><li><a href=\"#set-elasticsearch-cluster-name\">Set Elasticsearch Cluster name<\/a><\/li><li><a href=\"#set-descriptive-names-for-elasticsearch-nodes\">Set Descriptive names for Elasticsearch Nodes<\/a><\/li><li><a href=\"#disable-memory-swapping\">Disable Memory Swapping<\/a><\/li><li><a href=\"#define-the-roles-of-each-elasticsearch-node\">Define the Roles of each Elasticsearch Node<\/a><\/li><li><a href=\"#bind-elasticsearch-to-non-loopback-address\">Bind Elasticsearch to Non-loopback Address<\/a><\/li><li><a href=\"#discovery-and-cluster-formation-settings\">Discovery and cluster formation settings<\/a><\/li><li><a href=\"#set-jvm-heap-size\">Set JVM Heap Size<\/a><\/li><\/ul><\/li><li><a href=\"#configure-other-important-systems-settings\">Configure Other Important Systems Settings<\/a><ul><li><a href=\"#set-maximum-open-file-descriptor\">Set maximum Open File Descriptor<\/a><\/li><li><a href=\"#virtual-memory-settings\">Virtual Memory Settings<\/a><\/li><li><a href=\"#open-elasticsearch-ports-on-firewall-d\">Open Elasticsearch Ports on FirewallD<\/a><\/li><li><a href=\"#running-elasticsearch\">Running Elasticsearch<\/a><\/li><li><a href=\"#check-elasticsearch-cluster-health\">Check Elasticsearch Cluster Health<\/a><\/li><li><a href=\"#check-the-cluster-nodes\">Check the Cluster Nodes<\/a><\/li><\/ul><\/li><li><a href=\"#related-tutorials\">Related Tutorials;<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setup-multi-node-elasticsearch-cluster\">Setup Multi-node Elasticsearch Cluster<\/h2>\n\n\n\n<p>In this guide, we are going to set up a three node Elasticsearch cluster with each node being master eligible.<\/p>\n\n\n\n<p>My Environment:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Node 1: es-node-01.kifarunix-demo.com<\/li>\n\n\n\n<li>Node 2: es-node-02.kifarunix-demo.com<\/li>\n\n\n\n<li>Node 3: es-node-03.kifarunix-demo.com<\/li>\n<\/ul>\n\n\n\n<p>Ensure that the hostnames are resolvable on each node. If you do not have a DNS server, then you can use your hosts file. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>192.168.43.103 es-node-01.kifarunix-demo.com es-node-01\n192.168.43.15 es-node-02.kifarunix-demo.com es-node-02\n192.168.43.62 es-node-03.kifarunix-demo.com es-node-03<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installing-elasticsearch-7-on-fedora-30-29-cent-os-7\">Installing Elasticsearch 7 on Fedora 30\/29\/CentOS 7<\/h3>\n\n\n\n<p>We have covered the installation of Elasticsearch on Fedora 30\/29\/CentOS 7 in our previous guides. Follow the link below to install Elasticsearch.<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-elasticsearch-7-on-fedora-30\/\">Install Elasticsearch 7 on Fedora 30<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-elasticsearch-7-x-on-centos-7-fedora-29\/\">Install Elasticsearch 7.x on CentOS 7\/Fedora 29<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"setup-multi-node-elasticsearch-cluster-1\">Setup Multi-node Elasticsearch Cluster<\/h3>\n\n\n\n<p>Once the installation of Elasticsearch on the three nodes is done, proceed to configure Elasticsearch cluster.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"set-elasticsearch-cluster-name\">Set Elasticsearch Cluster name<\/h4>\n\n\n\n<p>On each node, open the Elasticsearch configuration file and set the name of your Elasticsearch cluster.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vim \/etc\/elasticsearch\/elasticsearch.yml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# ---------------------------------- Cluster -----------------------------------\n#\n# Use a descriptive name for your cluster:\n#\ncluster.name: es-nodes\n...<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"set-descriptive-names-for-elasticsearch-nodes\">Set Descriptive names for Elasticsearch Nodes<\/h4>\n\n\n\n<p>Node 1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# ------------------------------------ Node ------------------------------------\n#\n# Use a descriptive name for the node:\n#\nnode.name: es-node-01\n...<\/code><\/pre>\n\n\n\n<p>Node 2<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ------------------------------------ Node ------------------------------------\n#\n# Use a descriptive name for the node:\n#\nnode.name: es-node-02\n...<\/code><\/pre>\n\n\n\n<p>Node 3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# ------------------------------------ Node ------------------------------------\n#\n# Use a descriptive name for the node:\n#\nnode.name: es-node-03\n...<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"disable-memory-swapping\">Disable Memory Swapping<\/h4>\n\n\n\n<p>Swapping affects the stability of Elasticsearch cluster as it can cause nodes to respond slowly or even to disconnect from the cluster. Once of the ways of <a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/master\/setup-configuration-memory.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"disabling memory swapping (opens in a new tab)\">disabling memory swapping<\/a> is by enabling memory lock. Hence, uncomment the line <strong>bootstrap.memory_lock: true<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# ----------------------------------- Memory -----------------------------------\n#\n# Lock the memory on startup:\n#\nbootstrap.memory_lock: true\n...<\/code><\/pre>\n\n\n\n<p>I recommend that you disable swapping using <strong>systemd<\/strong> by editing Elasticsearch service and adding the content below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl edit elasticsearch<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Service]\nLimitMEMLOCK=infinity<\/code><\/pre>\n\n\n\n<p>Whenever a systemd service is modified, you need to reload the systemd configurations.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sudo systemctl daemon-reload<\/code><\/pre>\n\n\n\n<p>One of the recommended ways to disable swapping is to completely disable swap. This is fine if Elasticsearch is the only service running on the server.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>swapoff -a<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"define-the-roles-of-each-elasticsearch-node\">Define the Roles of each Elasticsearch Node<\/h4>\n\n\n\n<p>As stated above, you can assign each node a respective role as <strong>master<\/strong>, data node, ingest node, coordinating node.. In this setup, we will configure all the three nodes to act as both <strong><code>master<\/code><\/strong> and <strong><code>data<\/code><\/strong> node.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# ---------------------------------- Cluster -----------------------------------\n#\n# Use a descriptive name for your cluster:\n#\ncluster.name: es-nodes\n\n<strong>node.master: true\nnode.data: true<\/strong>\n...<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"bind-elasticsearch-to-non-loopback-address\">Bind Elasticsearch to Non-loopback Address<\/h4>\n\n\n\n<p>Elasticsearch binds to loopback addresses&nbsp;by default. For a node to form a cluster, you need to bind it to non-loopback address. This can be done by setting the IP address of the node as the value of <strong>network.host<\/strong>.<\/p>\n\n\n\n<p>Node 1<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>network.host: 192.168.43.103<\/code><\/pre>\n\n\n\n<p>Node 2<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>network.host: 192.168.43.15<\/code><\/pre>\n\n\n\n<p>Node 3<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>network.host: 192.168.43.62<\/code><\/pre>\n\n\n\n<p>Elasticsearch by default uses TCP port 9200 to expose REST APIs. TCP port 9300-9400 is used for node communication<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"discovery-and-cluster-formation-settings\">Discovery and cluster formation settings<\/h4>\n\n\n\n<p>There are two important discovery and cluster formation settings that should be configured before going to production so that nodes in the cluster can discover each other and elect a master node;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>discovery.seed_hosts<\/strong> and <strong>cluster.initial_master_nodes<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p><strong>discovery.seed_hosts<\/strong> setting Provides a list of master-eligible nodes in the cluster. Each value has the format&nbsp;<code>host:port<\/code>&nbsp;or&nbsp;<code>host<\/code>, where&nbsp;<code>port<\/code>&nbsp;defaults to the setting&nbsp;<code>transport.profiles.default.port<\/code>. This setting was previously known as <strong>discovery.zen.ping.unicast.hosts<\/strong>. Configure this setting on all Nodes as follows;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# --------------------------------- Discovery ----------------------------------\n#\n# Pass an initial list of hosts to perform discovery when this node is started:\n# The default list of hosts is &#91;\"127.0.0.1\", \"&#91;::1]\"]\n#\ndiscovery.seed_hosts: &#91;\"192.168.43.103\", \"192.168.43.15\", \"192.168.43.62\"]\n...<\/code><\/pre>\n\n\n\n<p><strong>cluster.initial_master_nodes<\/strong> setting defines the initial set of master-eligible nodes. This is important when starting an Elasticsearch cluster for the very first time. This setting is ignored once the cluster is formed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# Bootstrap the cluster using an initial set of master-eligible nodes:\n#\n#cluster.initial_master_nodes: &#91;\"node-1\", \"node-2\"]\ncluster.initial_master_nodes: &#91;\"es-node-01\", \"es-node-02\", \"es-node-03\"]\n...<\/code><\/pre>\n\n\n\n<p>Elasticsearch 7 doesn&#8217;t use the Zen Discovery coordination method used by the previous versions and thus, the <code>discovery.zen.minimum_master_nodes<\/code>&nbsp;setting has been phased out so that Elasticsearch itself can choose which nodes can form a quorum.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"set-jvm-heap-size\">Set JVM Heap Size<\/h4>\n\n\n\n<p>Elasticsearch sets the heap size to 1GB by default. As a rule of thump, set&nbsp;<code>Xmx<\/code>&nbsp;to no more than 50% of your physical RAM but not more than 32GB.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vim \/etc\/elasticsearch\/jvm.options<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n################################################################\n\n# Xms represents the initial size of total heap space\n# Xmx represents the maximum size of total heap space\n\n-Xms1g\n-Xmx1g\n...<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-other-important-systems-settings\">Configure Other Important Systems Settings<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"set-maximum-open-file-descriptor\">Set maximum Open File Descriptor<\/h4>\n\n\n\n<p>Set the maximum number of open files for the&nbsp;<code>elasticsearch<\/code> user to 65,536. This is already set by default in the, <strong>\/usr\/lib\/systemd\/system\/elasticsearch.service<\/strong>. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# Specifies the maximum file descriptor number that can be opened by this process\nLimitNOFILE=65535\n...<\/code><\/pre>\n\n\n\n<p>You also should set the maximum number of processes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n# Specifies the maximum number of processes\nLimitNPROC=4096<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"virtual-memory-settings\">Virtual Memory Settings<\/h4>\n\n\n\n<p>Elasticsearch uses a&nbsp;<a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/index-modules-store.html#mmapfs\" target=\"_blank\" rel=\"noopener\"><code>mmapfs<\/code><\/a>&nbsp;directory by default to store its indices. To ensure that you do not run out of virtual memory, edit the <strong>\/etc\/sysctl.conf<\/strong> and update the value of <strong>vm.max_map_count<\/strong> as shown below.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vm.max_map_count=262144<\/code><\/pre>\n\n\n\n<p>You can simply run the command below to configure virtual memory settings.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>echo \"vm.max_map_count=262144\" &gt;&gt; \/etc\/sysctl.conf<\/code><\/pre>\n\n\n\n<p>Reboot the system to apply the changes then run the command, <strong>sysctl vm.max_map_count<\/strong>, to verify the configurations.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sysctl vm.max_map_count\nvm.max_map_count = 262144<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"open-elasticsearch-ports-on-firewall-d\">Open Elasticsearch Ports on FirewallD<\/h4>\n\n\n\n<p>As mentioned above, Elasticsearch exposes HTTP APIs over TCP port 9200 and allows nodes to communicate over TCP port 9300-9400. You need to open these ports on firewalld.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>firewall-cmd --add-port={9200,9300-9400}\/tcp --permanent\nfirewall-cmd --reload<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"running-elasticsearch\">Running Elasticsearch<\/h4>\n\n\n\n<p>Reload the systemd manager configuration.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl daemon-reload<\/code><\/pre>\n\n\n\n<p>Enable Elasticsearch to run on system boot.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl enable elasticsearch<\/code><\/pre>\n\n\n\n<p>Start Elasticsearch<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl start elasticsearch<\/code><\/pre>\n\n\n\n<p>You can check the Elasticsearch status running the command below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl status elasticsearch.service<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\u25cf elasticsearch.service - Elasticsearch\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/elasticsearch.service; enabled; vendor preset: disabled)\n  Drop-In: \/etc\/systemd\/system\/elasticsearch.service.d\n           \u2514\u2500override.conf\n   Active: active (running) since Thu 2019-07-11 23:03:21 EAT; 3min 5s ago\n     Docs: http:\/\/www.elastic.co\n Main PID: 1539 (java)\n    Tasks: 39 (limit: 3477)\n   Memory: 1.3G\n   CGroup: \/system.slice\/elasticsearch.service\n           \u251c\u25001539 \/usr\/share\/elasticsearch\/jdk\/bin\/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiat&gt;\n           \u2514\u25001627 \/usr\/share\/elasticsearch\/modules\/x-pack-ml\/platform\/linux-x86_64\/bin\/controller<\/code><\/pre>\n\n\n\n<p>To check for any errors, you can tail the Elasticsearch cluster log file.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>tail \/var\/log\/elasticsearch\/&lt;cluster-name&gt;.log<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"check-elasticsearch-cluster-health\">Check Elasticsearch Cluster Health<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>curl -X GET \"192.168.43.103:9200\/_cluster\/health?pretty\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"cluster_name\" : \"es-nodes\",\n  \"status\" : \"green\",\n  \"timed_out\" : false,\n  \"number_of_nodes\" : 3,\n  \"number_of_data_nodes\" : 3,\n  \"active_primary_shards\" : 0,\n  \"active_shards\" : 0,\n  \"relocating_shards\" : 0,\n  \"initializing_shards\" : 0,\n  \"unassigned_shards\" : 0,\n  \"delayed_unassigned_shards\" : 0,\n  \"number_of_pending_tasks\" : 0,\n  \"number_of_in_flight_fetch\" : 0,\n  \"task_max_waiting_in_queue_millis\" : 0,\n  \"active_shards_percent_as_number\" : 100.0\n}<\/code><\/pre>\n\n\n\n<p>The cluster health status is:&nbsp;<code>green<\/code>,&nbsp;<code>yellow<\/code>&nbsp;or&nbsp;<code>red<\/code>. &nbsp;<code>red<\/code>&nbsp;status indicates that the specific shard is not allocated in the cluster,&nbsp;<code>yellow<\/code>&nbsp;means that the primary shard is allocated but replicas are not, and&nbsp;<code>green<\/code>&nbsp;means that all shards are allocated.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"check-the-cluster-nodes\">Check the Cluster Nodes<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>curl -X GET \"192.168.43.103:9200\/_cat\/nodes?v\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>ip             heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name\n192.168.43.62            11          79   5    0.00    0.02     0.04 mdi       -      es-node-03\n192.168.43.103            8          66   3    0.13    0.11     0.09 mdi       -      es-node-01\n192.168.43.15             9          79   5    0.00    0.01     0.03 mdi       *      es-node-02<\/code><\/pre>\n\n\n\n<p>You Elasticsearch cluster is now working fine.<\/p>\n\n\n\n<p><strong><em>After the cluster forms successfully for the first time, remove the&nbsp;<code>cluster.initial_master_nodes<\/code>&nbsp;setting from each nodes&#8217; configuration. Do not use this setting when restarting a cluster or adding a new node to an existing cluster<\/em><\/strong>.<\/p>\n\n\n\n<p>To remove this setting, run the command below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sed -i 's\/^cluster.initial_master_nodes:\/#&amp;\/' \/etc\/elasticsearch\/elasticsearch.yml<\/code><\/pre>\n\n\n\n<p>Next, restart Elasticsearch on each node.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl restart elasticsearch<\/code><\/pre>\n\n\n\n<p>That is all on how to setup multi-node Elasticsearch 7.x cluster on Fedora 30\/Fedora 29\/CentOS 7.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"related-tutorials\">Related Tutorials;<\/h3>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-and-configure-elastic-auditbeat-on-ubuntu-18-04\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Install and Configure Elastic Auditbeat on Ubuntu 18.04<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-elastic-stack-7-on-fedora-30-fedora-29-centos-7\/\" target=\"_blank\">Install Elastic Stack 7 on Fedora 30\/Fedora 29\/CentOS 7<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-elastic-stack-7-on-ubuntu-18-04-debian-9-8\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Install Elastic Stack 7 on Ubuntu 18.04\/Debian 9.8<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this guide, we are going to learn how to setup multi-node Elasticsearch cluster. This guide has been tested on Fedora 30\/Fedora 29\/CentOS 7. So<\/p>\n","protected":false},"author":1,"featured_media":8931,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[72,910,121],"tags":[3590,912,1031,1029,913,1030,3589],"class_list":["post-3216","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-monitoring","category-elastic-stack","category-howtos","tag-configure-elasticsearch-cluster","tag-elastic-stack","tag-elasticsearch-7","tag-elasticsearch-cluster","tag-elk","tag-multi-node-elasticsearch-cluster","tag-setup-multinode-elasticsearch-cluster","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/3216"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=3216"}],"version-history":[{"count":12,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/3216\/revisions"}],"predecessor-version":[{"id":19386,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/3216\/revisions\/19386"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/8931"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=3216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=3216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=3216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}