This sample demonstrates how to deploy Elasticsearch so that each of its nodes perform all three roles: primary (also known as master), data and client/ingest. The sample deploys the nodes as primary (master) nodes and updates them to include the data and client roles. While it is possible to deploy additional data and client nodes, these additional nodes cannot be made multi-role; this sample only supports enabling multi-role for primary nodes. In the standard configuration of this project, each node performs a single node.
Although multi-role Elasticsearch nodes are widely used, they are not natively supported by the Open Distro for Elasticsearch Helm chart that is used to deploy the logging components of this project. In order to enable multi-role Elasticsearch nodes, our deployment process must patch various Kubernetes objects. Because performance and other criteria are still being evaluated, this use of multi-role nodes is experimental and is not yet part of our standard configuration.
- Copy the
../samples/esmulti
sample directory (including sub-directories) to a separate local path.
See the main README for information about the customization process.
- Set the
USER_DIR
environment variable to the local path:
export USER_DIR=/path/to/my/copy/esmulti
-
Note that the
ES_MULTIROLE_NODES
environment variable has been set totrue
in the$USER_DIR/logging/user.env
file in order to enable multi-role Elasticsearch nodes. -
Review the contents of the
$USER_DIR/logging/user-values-elasticsearch-open.yaml
file and make any changes needed for your environment. These are two areas that could be customized:
Storage: When primary nodes also serve as data nodes, they need more disk space than when they serve only as primary nodes. The master.persistence.size
property specifies the amount of storage that is assigned to the primary nodes. Review this setting and adjust it as necessary.
Additional data or client nodes: If you are using multi-role Elasticsearch nodes, you usually do not need to deploy additional nodes that perform only a data or client role. However, if additional nodes are required for your scenario, make these changes:
- To add data nodes, update the
replicas
value in thedata
stanza to specify the number of additional data nodes needed. When determining the total number of data nodes needed, remember that all of the primary nodes also continue to serve as data nodes. - To add client nodes, update the
replicas
value in theclient
stanza to specify the number of additional client nodes needed. When determining the total number of client nodes needed, remember that all of the primary nodes also continue to serve as client nodes.
Note that you cannot add additional nodes that perform only the primary role. You also cannot deploy nodes that perform different combinations of roles.
- Deploy logging using the standard deployment script:
/path/to/this/repo/logging/bin/deploy_logging_open.sh