OpenSearch 3.7.0 fails to start

OpenSearch 3.7.0 fails to start. I have Almalinux 10 installed. I needed OpenSearch for magento 2.

Describe the issue:

When run the command: sudo systemctl start opensearch and you will see: Job for opensearch.service failed because the control process exited with error code.
See “systemctl status opensearch.service” and “journalctl -xeu opensearch.service” for details.

opensearch.log:

[2026-07-17T20:51:28,136][WARN ][stderr                   ] [vmi3436067.contaboserver.net] Jul 17, 2026 8:51:28 PM org.opensearch.javaagent.bootstrap.AgentPolicy setPolicy
[2026-07-17T20:51:28,140][WARN ][stderr                   ] [vmi3436067.contaboserver.net] INFO: Policy attached successfully: org.opensearch.bootstrap.OpenSearchPolicy@383864d5
[2026-07-17T20:51:28,162][INFO ][o.o.n.Node               ] [vmi3436067.contaboserver.net] version[3.7.0], pid[2856809], build[rpm/72121f014083f9ca010fd5a7da83b2ec4886027f/2026-06-03T23:30:23.512631638Z], OS[Linux/6.12.0-211.33.1.el10_2.x86_64/amd64], JVM[Eclipse Adoptium/OpenJDK 64-Bit Server VM/25.0.3/25.0.3+9-LTS]
[2026-07-17T20:51:28,163][INFO ][o.o.n.Node               ] [vmi3436067.contaboserver.net] JVM home [/usr/share/opensearch/jdk], using bundled JDK/JRE [true]
[2026-07-17T20:51:28,163][INFO ][o.o.n.Node               ] [vmi3436067.contaboserver.net] JVM arguments [-Xshare:auto, -Dopensearch.networkaddress.cache.ttl=60, -Dopensearch.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,CLDR, -Xms1g, -Xmx1g, -XX:+UseG1GC, -XX:G1ReservePercent=25, -XX:InitiatingHeapOccupancyPercent=30, -Djava.io.tmpdir=/var/lib/opensearch/tmp, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=/var/lib/opensearch, -XX:ErrorFile=/var/log/opensearch/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=/var/log/opensearch/gc.log:utctime,pid,tags:filecount=32,filesize=64m, --add-modules=jdk.incubator.vector, -javaagent:agent/opensearch-agent.jar, --add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED, -Dorg.apache.lucene.store.MMapDirectory.sharedArenaMaxPermits=1, -XX:+UseCompactObjectHeaders, -XX:MaxDirectMemorySize=536870912, -Dopensearch.path.home=/usr/share/opensearch, -Dopensearch.path.conf=/etc/opensearch, -Dopensearch.distribution.type=rpm, -Dopensearch.bundled_jdk=true]
[2026-07-17T20:51:28,263][WARN ][o.o.p.PluginsService     ] [vmi3436067.contaboserver.net] Missing plugin [workload-management], dependency of [opensearch-security]
[2026-07-17T20:51:28,264][WARN ][o.o.p.PluginsService     ] [vmi3436067.contaboserver.net] Some features of this plugin may not function without the dependencies being installed.

[2026-07-17T20:51:28,264][WARN ][o.o.p.PluginsService     ] [vmi3436067.contaboserver.net] Missing plugin [analytics-engine], dependency of [opensearch-sql]
[2026-07-17T20:51:28,264][WARN ][o.o.p.PluginsService     ] [vmi3436067.contaboserver.net] Some features of this plugin may not function without the dependencies being installed.

[2026-07-17T20:51:28,553][WARN ][stderr                   ] [vmi3436067.contaboserver.net] Jul 17, 2026 8:51:28 PM org.apache.lucene.internal.vectorization.PanamaVectorizationProvider <init>
[2026-07-17T20:51:28,553][WARN ][stderr                   ] [vmi3436067.contaboserver.net] INFO: Java vector incubator API enabled; uses preferredBitSize=256; FMA enabled
[2026-07-17T20:51:30,289][INFO ][o.o.c.b.JarHell          ] [vmi3436067.contaboserver.net] Plugin [opensearch-neural-search] extends multiple plugins/modules that share common dependencies: [file:/usr/share/opensearch/modules/transport-grpc/grpc-util-1.75.0.jar, file:/usr/share/opensearch/modules/transport-grpc/failureaccess-1.0.2.jar, file:/usr/share/opensearch/modules/transport-grpc/grpc-protobuf-lite-1.75.0.jar, file:/usr/share/opensearch/modules/transport-grpc/grpc-protobuf-1.75.0.jar, file:/usr/share/opensearch/modules/transport-grpc/grpc-netty-shaded-1.75.0.jar, file:/usr/share/opensearch/modules/transport-grpc/transport-grpc-3.7.0.jar, file:/usr/share/opensearch/modules/transport-grpc/grpc-stub-1.75.0.jar, file:/usr/share/opensearch/modules/transport-grpc/protobufs-1.4.0.jar, file:/usr/share/opensearch/modules/transport-grpc/guava-33.2.1-jre.jar, file:/usr/share/opensearch/modules/transport-grpc/grpc-api-1.75.0.jar, file:/usr/share/opensearch/modules/transport-grpc/perfmark-api-0.27.0.jar, file:/usr/share/opensearch/modules/transport-grpc/grpc-services-1.75.0.jar, file:/usr/share/opensearch/modules/transport-grpc/grpc-core-1.75.0.jar, file:/usr/share/opensearch/modules/transport-grpc/transport-grpc-spi-3.7.0.jar]. This is expected when extended plugins share common ancestors.
[2026-07-17T20:51:30,785][INFO ][o.o.s.s.t.SSLConfig      ] [vmi3436067.contaboserver.net] SSL dual mode is disabled
[2026-07-17T20:51:30,786][INFO ][o.o.s.OpenSearchSecurityPlugin] [vmi3436067.contaboserver.net] OpenSearch Config path is /etc/opensearch
[2026-07-17T20:51:32,545][ERROR][o.o.b.Bootstrap          ] [vmi3436067.contaboserver.net] Exception
java.lang.IllegalStateException: failed to load plugin class [org.opensearch.security.OpenSearchSecurityPlugin]
	at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:928)
	at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:870)
	at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:653)
	at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:227)
	at org.opensearch.node.Node.<init>(Node.java:567)
	at org.opensearch.node.Node.<init>(Node.java:495)
	at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:252)
	at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:252)
	at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:414)
	at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:168)
	at org.opensearch.bootstrap.OpenSearch.execute(OpenSearch.java:159)
	at org.opensearch.common.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:110)
	at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
	at org.opensearch.cli.Command.main(Command.java:101)
	at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:125)
	at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:91)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
	at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:919)
	... 15 more
Caused by: OpenSearchException[No SSL configuration found]
	at org.opensearch.security.ssl.SslSettingsManager.loadConfigurations(SslSettingsManager.java:145)
	at org.opensearch.security.ssl.SslSettingsManager.buildSslContexts(SslSettingsManager.java:103)
	at org.opensearch.security.ssl.SslSettingsManager.<init>(SslSettingsManager.java:86)
	at org.opensearch.security.ssl.OpenSearchSecuritySSLPlugin.<init>(OpenSearchSecuritySSLPlugin.java:229)
	at org.opensearch.security.OpenSearchSecurityPlugin.<init>(OpenSearchSecurityPlugin.java:384)
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	... 18 more
[2026-07-17T20:51:32,552][ERROR][o.o.b.OpenSearchUncaughtExceptionHandler] [vmi3436067.contaboserver.net] uncaught exception in thread [main]
org.opensearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to load plugin class [org.opensearch.security.OpenSearchSecurityPlugin]
	at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:172)
	at org.opensearch.bootstrap.OpenSearch.execute(OpenSearch.java:159)
	at org.opensearch.common.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:110)
	at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
	at org.opensearch.cli.Command.main(Command.java:101)
	at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:125)
	at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:91)
Caused by: java.lang.IllegalStateException: failed to load plugin class [org.opensearch.security.OpenSearchSecurityPlugin]
	at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:928)
	at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:870)
	at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:653)
	at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:227)
	at org.opensearch.node.Node.<init>(Node.java:567)
	at org.opensearch.node.Node.<init>(Node.java:495)
	at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:252)
	at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:252)
	at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:414)
	at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:168)
	... 6 more
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
	at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:919)
	... 15 more
Caused by: OpenSearchException[No SSL configuration found]
	at org.opensearch.security.ssl.SslSettingsManager.loadConfigurations(SslSettingsManager.java:145)
	at org.opensearch.security.ssl.SslSettingsManager.buildSslContexts(SslSettingsManager.java:103)
	at org.opensearch.security.ssl.SslSettingsManager.<init>(SslSettingsManager.java:86)
	at org.opensearch.security.ssl.OpenSearchSecuritySSLPlugin.<init>(OpenSearchSecuritySSLPlugin.java:229)
	at org.opensearch.security.OpenSearchSecurityPlugin.<init>(OpenSearchSecurityPlugin.java:384)
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	... 18 more

Configuration:

/etc/opensearch/opensearch.yml

# ======================== OpenSearch Configuration =========================
#
# NOTE: OpenSearch comes with reasonable defaults for most settings.
#       Before you set out to tweak and tune the configuration, make sure you
#       understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.opensearch.org
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
#cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/opensearch
#
# Path to log files:
#
path.logs: /var/log/opensearch
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# OpenSearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
#network.host: 192.168.0.1
#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of cluster-manager-eligible nodes:
#
#cluster.initial_cluster_manager_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_data_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
#
# ---------------------------------- Remote Store -----------------------------------
# Controls whether cluster imposes index creation only with remote store enabled
# cluster.remote_store.enabled: true
#
# Repository to use for segment upload while enforcing remote store for an index
# node.attr.remote_store.segment.repository: my-repo-1
#
# Repository to use for translog upload while enforcing remote store for an index
# node.attr.remote_store.translog.repository: my-repo-1
#
# ---------------------------------- Experimental Features -----------------------------------
# Gates the visibility of the experimental segment replication features until they are production ready.
#
#opensearch.experimental.feature.segment_replication_experimental.enabled: false
#
# Gates the functionality of a new parameter to the snapshot restore API
# that allows for creation of a new index type that searches a snapshot
# directly in a remote repository without restoring all index data to disk
# ahead of time.
#
#opensearch.experimental.feature.searchable_snapshot.enabled: false
#
#
# Gates the functionality of enabling extensions to work with OpenSearch.
# This feature enables applications to extend features of OpenSearch outside of
# the core.
#
#opensearch.experimental.feature.extensions.enabled: false
#
#
# Gates the optimization of datetime formatters caching along with change in default datetime formatter
# Once there is no observed impact on performance, this feature flag can be removed.
#
#opensearch.experimental.optimization.datetime_formatter_caching.enabled: false

/etc/opensearch/jvm.options

## JVM configuration

################################################################
## IMPORTANT: JVM heap size
################################################################
##
## You should always set the min and max JVM heap
## size to the same value. For example, to set
## the heap to 4 GB, set:
##
## -Xms4g
## -Xmx4g
##
## See https://opensearch.org/docs/opensearch/install/important-settings/
## for more information
##
################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g
-Xmx1g

################################################################
## Expert settings
################################################################
##
## All settings below this section are considered
## expert settings. Don't tamper with them unless
## you understand what you are doing
##
################################################################

## GC configuration
8-10:-XX:+UseConcMarkSweepGC
8-10:-XX:CMSInitiatingOccupancyFraction=75
8-10:-XX:+UseCMSInitiatingOccupancyOnly

## G1GC Configuration
# NOTE: G1GC is the default GC for all JDKs 11 and newer
11-:-XX:+UseG1GC
# See https://github.com/elastic/elasticsearch/pull/46169 for the history
# behind these settings, but the tl;dr is that default values can lead
# to situations where heap usage grows enough to trigger a circuit breaker
# before GC kicks in.
11-:-XX:G1ReservePercent=25
11-:-XX:InitiatingHeapOccupancyPercent=30

## JVM temporary directory
-Djava.io.tmpdir=/var/lib/opensearch/tmp

## heap dumps

# generate a heap dump when an allocation from the Java heap fails
# heap dumps are created in the working directory of the JVM
-XX:+HeapDumpOnOutOfMemoryError

# specify an alternative path for heap dumps; ensure the directory exists and
# has sufficient space
-XX:HeapDumpPath=/var/lib/opensearch

# specify an alternative path for JVM fatal error logs
-XX:ErrorFile=/var/log/opensearch/hs_err_pid%p.log

## JDK 8 GC logging
8:-XX:+PrintGCDetails
8:-XX:+PrintGCDateStamps
8:-XX:+PrintTenuringDistribution
8:-XX:+PrintGCApplicationStoppedTime
8:-Xloggc:/var/log/opensearch/gc.log
8:-XX:+UseGCLogFileRotation
8:-XX:NumberOfGCLogFiles=32
8:-XX:GCLogFileSize=64m

# JDK 9+ GC logging
9-:-Xlog:gc*,gc+age=trace,safepoint:file=/var/log/opensearch/gc.log:utctime,pid,tags:filecount=32,filesize=64m

# JDK 20+ Incubating Vector Module for SIMD optimizations;
# disabling may reduce performance on vector optimized lucene
20-:--add-modules=jdk.incubator.vector

# See please https://bugs.openjdk.org/browse/JDK-8341127 (openjdk/jdk#21283)
23:-XX:CompileCommand=dontinline,java/lang/invoke/MethodHandle.setAsTypeCache
23:-XX:CompileCommand=dontinline,java/lang/invoke/MethodHandle.asTypeUncached

21-:-javaagent:agent/opensearch-agent.jar
21-:--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED

# For cases with high memory-mapped file counts, a lower value can improve stability and
# prevent issues like "leaked" maps or performance degradation. A value of 1 effectively
# disables the shared Arena pooling and uses a confined Arena for each MMapDirectory
-Dorg.apache.lucene.store.MMapDirectory.sharedArenaMaxPermits=1

25-:-XX:+UseCompactObjectHeaders

What I need to do so it start?

I resolved the issues, so it start now.

/etc/sysconfig/opensearch

OPENSEARCH_JAVA_OPTS=“-Djava.io.tmpdir=/var/lib/opensearch/tmp”

/etc/opensearch/jvm.options

-Xms12g
-Xmx12g

If there is still something wrong with the configuration, please let me know.

Hi @User26, welcome to the OpenSearch community and glad to hear that OpenSearch is starting now.

From the logs, it appears that the Security plugin is installed and enabled, but the SSL/TLS configuration has not been completed.
You can also confirm Security plugin state by running the below command:

/usr/share/opensearch/bin/opensearch-plugin list

The Security plugin errors still need to be addressed. To configure security plugin please use install_demo_configuration.sh script or use the example from OpenSearch documentation.
https://docs.opensearch.org/latest/security/configuration/yaml/#opensearchyml

To use demo configuration script, please run the below commands.

export OPENSEARCH_INITIAL_ADMIN_PASSWORD='<strong-password>'
cd /usr/share/opensearch/plugins/opensearch-security/tools
./install_demo_configuration.sh

Follow the terminal prompts to complete the setup.
For more details, please refer to:
https://docs.opensearch.org/latest/security/getting-started/#setting-up-the-demo-configuration

To better understand your setup, could you clarify what you’re trying to achieve? Is this intended to be a single-node deployment? Or are you planning to build a multi-node cluster?