Infor ION Grid Administration Guide
Infor ION Grid Administration Guide
Infor ION Grid Administration Guide
Release 12.0.2.0
Copyright © 2022 Infor
Important Notices
The material contained in this publication (including any supplementary information) constitutes and
contains confidential and proprietary information of Infor.
By gaining access to the attached, you acknowledge and agree that the material (including any
modification, translation or adaptation of the material) and all copyright, trade secrets and all other
right, title and interest therein, are the sole property of Infor and that you shall not gain right, title or
interest in the material (including any modification, translation or adaptation of the material) by virtue
of your review thereof other than the non-exclusive right to use the material solely in connection with
and the furtherance of your license and use of software made available to your company from Infor
pursuant to a separate agreement, the terms of which separate agreement shall govern your use of
this material and all supplemental related materials ("Purpose").
In addition, by accessing the enclosed material, you acknowledge and agree that you are required to
maintain such material in strict confidence and that your use of such material is limited to the Purpose
described above. Although Infor has taken due care to ensure that the material included in this publication
is accurate and complete, Infor cannot warrant that the information contained in this publication is
complete, does not contain typographical or other errors, or will meet your specific requirements. As
such, Infor does not assume and hereby disclaims all liability, consequential or otherwise, for any loss
or damage to any person or entity which is caused by or relates to errors or omissions in this publication
(including any supplementary information), whether such errors or omissions result from negligence,
accident or any other cause.
Without limitation, U.S. export control laws and other applicable export and import laws govern your
use of this material and you will neither export or re-export, directly or indirectly, this material nor any
related materials or supplemental information in violation of such laws, or use such materials for any
purpose prohibited by such laws.
Trademark Acknowledgements
The word and design marks set forth herein are trademarks and/or registered trademarks of Infor and/or
related affiliates and subsidiaries. All rights reserved. All other company, product, trade or service
names referenced may be registered trademarks or trademarks of their respective owners.
Publication Information
Release: Infor ION Grid 12.0.2.0
Publication Date: March 1, 2022
Document code: iongrid_12.0.2.0_iongridag__en-us
Contents
Contents
Contacting Infor..................................................................................................................................7
Contacting Infor
If you have questions about Infor products, go to Infor Concierge at https://concierge.infor.com/ and
create a support incident.
The latest documentation is available from docs.infor.com or from the Infor Support Portal. To access
documentation on the Infor Support Portal, select Search > Browse Documentation. We recommend
that you check this portal periodically for updated documentation.
If you have comments about Infor documentation, contact documentation@infor.com.
Knowledge prerequisites
To install this product, you must have:
• Experience installing and configuring applications.
• Operating system administrator experience.
• Starting other grid JVMs on its host (application nodes and deploy nodes)
• Presenting a fixed point for communication with the grid from external clients (for example, the
grid administration ui)
• Node
A node is a JVM that is registered as being part of a grid where grid applications are running. A
grid typically has several nodes running different applications. Each node is running on one of the
hosts that are part of the grid.
Nodes operating in the same grid do not have to be running the same Java version as each other.
A grid can contain any combination of nodes running the supported Java versions. A typical example
of combining Java versions could be using 32-bit and 64-bit editions together depending on the
memory requirements for a specific node or application.
• Deploy Node
Deploy Nodes are used to execute deployment, upgrades, and undeployment of applications. The
deploy node is not necessarily launched on a host which is the target of an application deployment
operation. Also, one Deploy Node may perform a deployment operation with several hosts as
targets.
Node types
A node type defines what to run in a specific node. Each node is of exactly one node type. More
precisely, the node type defines what application to run in nodes of this type and may also define default
values for properties (for example, heap size). Node types are defined by the application developer.
Bindings
A binding defines where and how to run nodes of a specific node type. It can be seen as an association
between a node type and a set of hosts. In order to start a specific node type on a particular host, a
binding that associates the node type with the host is needed. Properties needed by the node or the
application running in the node may be defined per binding.
Bindings are defined when applications are installed or by a grid administrator at runtime.
Applications
A grid application is a logical grouping of one or more application modules. An application may be
running in more than one node. It is then said to have more than one application instance. Applications
for the grid are packaged in gar files. A gar file is a type of zip file that can be installed in a grid. It
contains Java class files (.jar files) and any other resources that the application may need.
This section describes the administrative tools that are available for a grid and how to access these
tools.
2 Navigate to the URL https://server:port/ where server is the name of the server hosting
the grid and port is the HTTPS port for the grid router.
Alternative method
The following method will open the Grid Management Pages with grid-admin as assigned role. The
grid-admin role is required to perform many of the tasks.
Note:
• The following method can only be used on platforms which support a graphical user interface and
have a supported browser installed.
• The scripts delivered assume that the Java executable location is on the path. To verify this, open
a command prompt and type java and press Enter. If a command not found exception occurs
then Java is not on the path and should be added.
1 Open the file explorer or browser tool on the server hosting the grid and navigate to grid_root_
installation_path\bin.
2 Run the AdminUI.cmd by double-clicking on it.
Note: You can start the legacy swing-based Grid Management UI by running AdminUIClassic.
cmd instead.
Home
The Home page is the first page of the Grid user interface. In addition to the top menu and drop-down
menu, which are available from all sub-pages of the Grid user interface, the Home page contains a
collection of widgets:
• List of notifications from events in the Grid that can be filtered by error, warning, or info
• List of hosts in the Grid, noting the number of running nodes and CPU and memory usage
• List of applications
Hosts
The Hosts page shows all hosts in the grid. The page can be viewed as a list, which is useful when
the Grid contain a larger number of hosts, or as individual cards, which is suitable for Grids that contains
few hosts. Switch view by clicking the corresponding icon.
Select a host card to open the detail card and access the host context menu.
This table shows the additional items in the detailed host card:
Applications
The Applications page shows all installed applications in the grid. The page can be viewed as individual
cards, or as a list. You can also click Install New to install additional applications, as detailed in Install
New Application on page 75.
The page can be viewed as a list, which is useful when the Grid contains a larger number of installed
applications, or as individual cards, which is suitable for Grids that contain few applications. Switch
view by clicking the corresponding icon.
A detailed view of the selected application is displayed in the lower part of the application list view.
Select a specific application card to view the detailed card and access the context menu for the
applications.
This table shows the additional items in the detailed application card:
Node count Shows the total number of running Click the node count to list the
nodes for the application nodes.
Target Min Count Shows the total number of running
nodes for the application and the
total number of nodes that will start.
The total denotes the sum of all
binding min values, when the appli-
cation is online and started.
Miniature cards for each Each application node is represent- See Nodes card view on page
node ed by a miniature card. 23
Context menu The context menu contains addition-
al application-related views and ac-
tions.
Nodes
The Nodes page shows all running nodes in the grid. The page can be viewed as a list, which is useful
in most Grids. The page can also be viewed as individual cards, which is suitable for Grids that contain
few nodes. Switch view by clicking the corresponding icon.
You can also click Start Node to start an additional node, as detailed in Starting a new node on page
85.
A detailed view of the selected node is displayed in the lower part of the page.
This table shows the additional items in the detailed node card:
Monitoring
The Monitoring page is the starting point for the monitoring information and tasks in Grid Management
pages. The top category page contains these pages:
Security
Most information about security-related topics is covered in the Infor ION Grid Security Administration
Guide.
Configuration
Configuration pages Description Additional information
Grid Properties This page enables configuring See Grid Properties on page
Grid Properties on different lev- 50.
els, grid-wide, or per host, appli-
cation, node type, or binding.
JDBC Drivers This page enables managing See JDBC Drivers on page 54.
the available JDBC drivers.
Application Repository This page shows a table over See Application Repository on
all Grid Application Archives page 75.
(.gar files) that have been up-
loaded. It also enables upload-
ing and installing grid applica-
tions.
Runtime History This page enables comparing
two version of the Runtime his-
tory.
Endpoints This page shows the endpoints
available in the Grid that is
published on the router your
browser is accessing.
Routers This page shows the available
routers and their configuration.
Host Groups This page enables defining host See Host Groups on page 72.
groups.
4 Copy the address url and paste it in the address field of a web browser.
To open the Bootstrap status page from the Grid host (Windows hosts only)
1 Open the file explorer or browser tool and navigate to grid_root_installation_path.
2 Double click on the BootstrapWebUI-xxxxx where xxxxx is the port on which the bootstrap
HTTP interface is running.
To open the Bootstrap status page directly (from other hosts or clients), in a browser, access the
bootstrap WebUI link at http://server:port where server is the name of the server hosting
the grid and port is the HTTP port for the bootstrap process.
Viewing log files for old nodes or nodes not currently running
Note: This procedure is useful to access log files for nodes that have crashed. The log files in that
case are not accessible by the usual means.
1 Select the Monitoring tab and then the Log Files tab.
2 In the list of log files, click the link in the File Name column for the log file you want to view.
You can also download log files. Click the Download link in the last column for the log file you want
to download.
You can click a column header to sort log files. Clicking a column header again will toggle between
ascending and descending order. Use the text field to filter the view. Specify a search word and
then press Enter.
7 When the required events have been captured in the logs, click the Reset icon. This resets the log
level configuration to the corresponding property values, for all loggers for this application. Resetting
the log levels is especially important for log levels Debug and Trace, which can have a serious
impact on performance.
Log Archiver
The log archiver consists of three parts: an archiver, a purger, and a scheduler.
The archiver, when run, archives all the inactive log files on one or more hosts within the Grid. An
inactive log is a log for which its node has stopped. Whenever the log archiver is run, a notification is
displayed. Notifications can be viewed on the Home screen and under Monitoring > Notifications.
The purger, when run, purges old archives in the database to free up disk space or remove archives
that are no longer need to be kept.
Note: Log archiving will run when you are uninstalling hosts if the archiveLogsInDatabase flag is
passed to the uninstaller. For more information, see Remove an additional host on page 70.
Monitoring tools
Profiler Viewer
This tool enables advanced low-level profiling for the grid application nodes to enable troubleshooting
and advanced performance monitoring. The profiler is primarily intended for use by developers and
those with a deep understanding of how the grid functions.
When you launch the tool, you will be presented with a list of the grid nodes for which profiling is
enabled. That view is structured as follows:
Grid
Node:<node_name>/<ip_address>:<port>-<process_id>
-<module_name>
-<grid_proxy_name>
-<method>
-<counter>
For each of the counters you can view the following information which is valid for the duration between
you starting then stopping profiling:
• Count - number of iterations of that entity
• Time(ms) - total time spent on iterations in msSize (KB) - total amount of data for all the
iterationsTime/Count - average time spent per iterationSize/Count - average amount of data per
iteration
Menu options available in the function and descriptions are as follows:
Log Viewer
The log viewer allows multiple log files to be able to be combined and searched in a merged fashion.
This has multiple uses including the ability to find out what an entire grid was doing at a particular point
in time, or to find all instances of a particular word or phrase.
The viewer consists of four separate panels:
• Files panel
Use to add files either by clicking Add or by dragging and dropping them directly into the pane.
You can select multiple files for adding by using Shift and Ctrl. Files can be either individual .log
files or .zip files. If you add a .zip file, the tool recursively searched the .zip file directories
and adds all .log files to the panel. This is useful for loading the contents of a Grid Status Report
.zip file.
For any files that do not have a .log extension, you will be prompted with the option to include
them.
Note: Adding files which do not have a .log extension may prevent the merging of the log files
from occurring properly.
The Files panel has several buttons:
Viewing counters
Counters are a mechanism that measures (counts) different things that occur in a grid node and that
may be of interest for monitoring and diagnosing the inner workings of an application. Counters are
maintained for each grid node and they are not persisted, so the information is lost if a node is stopped.
Good examples of counters are Used Heap, which shows the memory consumption, and Total Requests,
which shows how many requests have been handled by a thread pool in a node. However, there are
many others.
One very important aspect of counters is that the counter value is sampled periodically and a history
of counter values is maintained for each counter. This makes it possible to view things like memory
usage over time and even get the information displayed as a graph.
1 Navigate to the Nodes page.
2 Select Counters from the details of the relevant node.
A list of counters will be displayed. The displayed list shows the counters with their current value.
Some counters define a valid value range. If a counter is outside of the valid range, it is marked
with a yellow background. A counter that is outside of its valid range is unusual and is worth
investigating.
3 Clicking on the name of a counter will display a graph with the counter values over time. At the top
of the page it is possible to select units of measurement and also how often the counter history
should be polled and how much of it to keep in memory.
Alarms
Alarms are used by an application to signal that they are partly in a faulty state, that is, even though
all nodes are functioning (Global State is ok) it can't carry out all tasks. The alarms are raised by
module, and when the module is fully functioning again, the alarm is automatically cleared.
To view the raised alarms, select Monitoring > Alarms. To get more information about a specific
alarm, review the description or click the information icon (i) next to the alarm.
Notifications
The purpose of notifications is to bring the attention of Grid Administrators both to required tasks that
must be performed and to inform about what has recently happened in the Grid. Notifications are
created when certain actions are performed, either by an admin or by an automatic process. All
notifications are stored in the Grid database up to a maximum of 10000 notifications. This default can
be changed through the grid.events.max.stored property.
Viewing notifications
Notifications can both be viewed in the Notifications section on the Home page of the Grid Admin UI
and on the Monitoring - Notifications page. An Atom feed is also available at
https://host:port/grid/rest/events/events.atom. For monitoring what happens in a Grid,
the Events REST API is a good starting point. The events REST service is located at
https://host:port/grid/rest/events. The documentation for the REST API is available at
https://host:port/grid/rest.
Notification page
By default, the Monitoring > Notifications page displays both active notifications and resolved
notifications. Active notifications are also displayed on the Notification panel on the Home page.
The sorting is based on the time of publishing, with the latest notification listed at the top.
Resolving notifications
1 Navigate to the Notification page under the Monitoring tab.
2 Apply suitable filters.
3 Select one or more check boxes. If the top check box is selected, all rows in the current display
are affected. Individual check boxes can be cleared by clicking them.
4 Click Resolve Selected.
The selected notification are resolved, but van still be viewed on this page.
Notifications can also be resolved in the Notification panel on the Home page, by clicking the X
icon. Resolved notifications are no longer displayed on the Notifications panel on the Home page.
Each card on the Monitoring page represents a filter for the event type (column) and application (row).
The Event Filter card details what application the filter is for and, if e-mail notifications are enabled, the
number of recipients of e-mail notifications and the number of times the event has been triggered.
• E-mail notifications can be enabled or disabled per event type and application by selecting the
enable or disable button.
• To edit the e-mail recipients for a given event type and application, click on the recipients icon in
the card to open the Recipients dialog box.
• To view the triggered events, click on the Triggered badge to open the Notifications page with
those events displayed.
Note: For e-mail notifications to be fully enabled the following Grid Properties must be specified on the
Grid Properties page:
• SMTP Server Address - required
• SMTP Server Port - optional if the default port is used
• SMTP Sender - required
• SMTP Password - required depending on security
• SMTP Security - required depending on security
Configuring bindings
Bindings are needed in order to start applications. A binding is a mapping from a node type, which the
application defines, to a set of hosts. So, in order to start an application on a particular host, there has
to be or at least one binding that associates the application (and its node type) with that host.
The bindings are also used to govern the minimum and maximum number of application node instances
that should be allowed. This means that if a binding is configured with a minimum of 2, the grid will
always try to make sure that at least two application node instances referenced by that binding are
running in the grid. If the number of nodes becomes fewer than the configured value, the grid will
automatically start nodes until the minimum is met.
The maximum works in the same but reverse way. It is impossible to start more application node
instances using this binding than the configured maximum. It should be noted that the maximum is
soft-enforced, if some condition arises which means the running node count exceeds the maximum
value, the Grid will not terminate a node to enforce the constraint.
It is also possible to configure the initial number of application nodes you want for a binding. If configured,
the initial value will be considered when the application starts. In fact, starting applications is just a
matter of honoring the initial value for all the bindings that belong to the application.
Also, as described in Grid Properties on page 50, the bindings are one of the different contexts that
you may use when defining property overrides. This enables you to define different property values for
your application depending on which binding is used to do the launch.
Type
Select the node type to create a host binding.
Hosts
Select one or more hosts or select All, which means that the binding can be started on any host
on which the application is deployed.
Min
The minimum number of nodes for this binding which should be running in the Grid according to
the launch constraints, if the number of running nodes becomes lower than the minimum value
set, the Grid will start additional ones.
Initial
The initial number of nodes for this binding which should be started when the grid is first started
(providing that the application is not offline) or when the application is started if that is later,
according to the launch constraints.
Note: For most use cases the initial setting can be left as is, using the Min and Max settings should
be enough for most applications.
Max
The maximum number of nodes for this binding which should be started according to the launch
constraints. Maximum values are softly-enforced meaning if a condition arises where there are
more nodes running than the maximum value, the Grid will not stop running nodes and if necessary
they must be stopped manually.
Constraint
• Global: The constraints will be applied globally, that is, the number of nodes will be distributed
evenly across all hosts to which the binding applies (affected by Preferred Host, see below).
• Per Host: The constraints will be applied to each host, that is, the number of nodes will be
started on all hosts to which the binding applies.
Preferred Host
The preferred host on which this binding will be started, if the preferred host is not available when
the consistency check is performed, the binding will be started on another host for which this
binding is configured. Preferred host is only available when the constraint type is global.
Note: If the application is connected to one or more host groups, the only difference is that there
is a choice of host group (or all host groups) instead of hosts and there is no preferred host
selection.
• You want a particular application to be launched using a particular JDK or JRE that is different
from the one used by the grid agent.
• You have an application that is monopolizing a resource (such as CPU) and you want to constrain
the application nodes to a subset of the available CPU cores on a host.
You want JVM processes belonging to a particular application to be launched using a specific user
that is different from the user running the grid agent process.
Regardless of example or needs, the way you change how JVM processes are launched is as follows:
1 Create a host operating system specific script file that launches the JVM process in the way you
want.
2 Override the Java Executable grid property so that it points to the script file created above. The
scripts are most likely OS- and host-specific, so the recommendation is to define the property
overrides in different host contexts.
a To override the property in the global context, select Configuration > Grid Properties.
Note: Applications can be selected on the Grid Properties page.
2 In the Grid Defined Properties section under Node Properties, click the Java Executable property.
The edit page for the property is displayed. Here the value can be set and overridden in different
contexts. Using this matrix it is possible to override in various contexts. In the different example
scenarios described below, details will be given relevant to each case that will enable you to
continue from this point.
3 Given details from the different scenarios described below, identify the property context that you
want to override and edit the corresponding value.
4 Specify the path to the script file from the different example scenarios. Note that regardless of host
platform (OS) the path to the script file should be entered using forward slashes ("/") (even on
Windows).
5 Click Save.
Example scripts
The scripts are executed by the operating system of each grid host. Since the operating system may
vary between different hosts the scripts has to be made specifically for each platform. The examples
in this document are for the Windows platform but there should be no problem to port them to other
platforms using other but equivalent commands.
Multi-host grids
The grid you are working on may be a multi-host grid and the application you want to change in the
different scenarios may be deployed on many of the hosts in that multi-host grid. In order to keep things
simple, the description of each scenario below will operate on one host but you must repeat the process
for each host that is relevant for each scenario.
Scenarios
The scenarios described below give detailed information for each case. The detailed information is
intended to be used together with the generic instructions above.
applications. In this case, you need to launch nodes belonging to just this particular application by using
another user.
Doing this in a safe way can be tricky since it may require that user names and passwords are hard
coded in script files. However, that is not something that can be recommended for security reasons.
Because of these challenges, there are no recommendations for this case, but general observations
can be noted.
On a UNIX platform, you have the sudo command and on Windows you have the run as command
that can be used to start processes as another user. Neither of them accepts that passwords are passed
to them from the command line. This is good since hard coding passwords in script files should be
avoided.
Third-party tools that are similar to the Windows run as command and also accept a password on the
command line exist. However, these are not recommended by Infor for the reasons mentioned above,
even though they would technically solve the problem. Some of the third-party tools support encryption
of the password information. Potentially those tools may provide a secure way of solving this problem,
but Infor does not give any recommendations in this area.
Giving the user access to the configuration area
If a particular user is used to run all or some of the grid nodes, it is crucial that the user has sufficient
security rights in the grid configuration area. The topic, Changing the Grid Service user on page 86,
describes how to change the directory security. The information is for Windows but the situation is the
same on all platforms. The user has to be given access to the grid configuration area.
Grid Properties
The Grid Properties are a fixed set of settings defined for the Grid or the grid applications. Each property
has a collection type and a type (single, list, map, map list : integer, string, boolean, enum etc). Most
of them have a given default value. An administrator may set another value for the property in a different
context with higher priority, so that it will have another value at runtime.
In addition to the fixed grid-defined and application-defined grid properties, ad hoc properties can be
defined if needed.
The Grid Properties are primarily managed from Grid Management Pages>Configuration>Grid Properties,
where each property is described in detail. If the Grid is offline, the properties and their descriptions
are still accessible by launching the offline UI, see Accessing the offline version of the Grid GUI on
page 67.
If no application is selected from the drop down list in Configuration > Grid Properties, Grid Defined
Properties and Ad Hoc Properties are displayed. If an application is selected, the properties Application
Defined Properties are displayed, followed by Grid Defined Properties and Ad Hoc Properties.
On each row, the following are displayed:
• The property title, if defined (if not, the property name is displayed)
• The value of the property in the current context (grid-wide or application)
• A description of the property
• The property name
Click a property in the list to edit the runtime value. When editing a property, you can define and set
the value for this property in different contexts.
Property context
When editing a property value, all available contexts are listed on the left side of the page. Contexts
are shown hierarchically. For example, node types are displayed below applications, and bindings
below node types. Each level is more specific and overrides any value set by its parent. Values for
specific hosts can be set on each context. Grid-defined global properties can only have values on the
grid-wide context. Application-defined global properties can only have values on the application-wide
context.
An input field is available for filtering the displayed contexts. This can be useful when there are a lot
of bindings. There is also a check box for showing only the contexts that have a value set on that
context, or any of its children.
An arrow to the left of the context name indicates if a value has been set on that context or any of its
children.
For example, consider an application that uses lots of memory, which can be managed by overriding
the global value of Max Heap property. Typically, you would give this property a value in the
application-wide context. That means that all application nodes on any host will get this value when
launched.
Now, assume that the application has two different node types with different memory requirements. In
this case, you assign a higher value to the MaxHeap property in the context of the node type that
requires more memory. This will override the application context for this node type. Consequently, the
property will have the application-wide value in all application nodes except nodes of this node type.
The contexts have different priorities, so a property may be defined in several contexts, and the one
with the highest priority will be used as the actual runtime value depending on how and where the
application is running.
By setting a value in a context with higher priority, all children of that context will also resolve to that
value, unless they in turn have a different value specified. To see where a specific value is resolved,
click the expandable section Origin.
This is how the property value is resolved in runtime for single values:
• Each application node or router is started using exactly one binding on exactly one host. When
resolving a property, the system will look for a property override for exactly that binding on exactly
that host (Binding and specific host context). If it finds one, the system has found the applicable
runtime value and is finished. If not, the system will continue to look for a property value in contexts
with lower priority until it finds a context that has defined a value. The last context to look in is the
global context (grid-wide or application-wide).
• If a property has been specified in a given context, a right arrow is displayed in front of the value.
To remove a value set in a given context, click Clear.
Property strategies
If a value is set on different contexts (for example, grid-wide and for a specific application), the resulting
value (for any given node) that will be used depends on the property strategy for each context. When
you edit the value of a property you can also change the strategy. Different collection types have
different strategies.
• Single value properties will always use the value from the context with the highest priority. The
strategy is “replace”. Since the strategy cannot be changed, it is not displayed in the Grid
Management Pages.
• List value properties can have one of these strategies:
• Replace - will ignore all values with a lower priority.
• Prepend - will use the values for the current context before values with a lower priority.
• Append - will use the values for the current context after values with a lower priority.
• Map and Listmap value properties can have one of these strategies:
• Replace - will ignore all values with a lower priority.
• Merge - will add all key/value-pairs for the current context to the map with a lower priority. Any
conflicting keys will use the values from the context with a higher priority.
Note: The only properties that can be completely removed, that is, no longer listed, are ad hoc properties,
because these properties are the only ones that can be added in runtime. To remove an ad hoc property,
select it in the property list and clear the property value on all set contexts. This will remove the ad hoc
property.
JDBC drivers
JDBC drivers can be used by applications to connect to databases. The Grid provides drivers for the
databases that are supported by Grid. However, if an application requires other drivers they can be
uploaded manually.
Use the following procedures to manage the database drivers that can be used by application JDBC
connections.
Note: You cannot edit existing drivers, only add new ones (and remove old ones).
Routers
Defined routers are listed. Host routers are not visible by default.
Field Description
Edit Edits this router.
Delete Removes this router. Note that you cannot re-
move Host Routers.
Field Description
Host/ The hosts or host groups that the router is config-
Host Groups ured to run on. It is possible to configure a router
so that it automatically runs on all current and
future hosts in the Grid by choosing All. This
can be useful if configuring a load balancer to
distribute the load of client connections amongst
all the hosts in the Grid for either resilience or
load balancing.
External Address Optional external address (FQDN or IP Address).
If undefined, the router listens on the same ad-
dress as the grid agent is using on this host. If
the host has several network interfaces, it is
possible to select a different one here.
Proxy Port The port the router is listening on for non-HTTP
traffic such as legacy socket connections (con-
nection dispatchers) and the Grid client protocol.
Encryption & Ciphers It is possible to enable SSL encryption for the
proxy port. For more information on what these
settings mean, see "To configure SSL for Grid
proxy clients" in the Infor ION Grid Security Ad-
ministration Guide.
HTTPS Port The HTTPS port of the router if defined. The
HTTPS port serves web applications and web
services.
HTTPS Authentication Type It is possible to configure the authentication type
for the HTTPS connections on this port. See the
Infor ION Grid Security Administration Guide.
HTTPS Encryption & Ciphers It is possible to enable SSL encryption for this
port. For more information on what these settings
mean, see "To configure SSL for Grid HTTP
clients" in the Infor ION Grid Security Administra-
tion Guide.
HTTPS WWW AuthenticationMethods The router configuration dialog has settings for
WWW authentication methods. For more informa-
tion on what these settings mean, see "Configur-
ing Router WWW Authentication Methods" in the
Infor ION Grid Security Administration Guide.
HTTPS Identity Configure the HTTPS identity to use for this
router. For more information about HTTPS iden-
tities, see "HTTPS Identities" in the Infor ION Grid
Security Administration Guide.
Field Description
Token Authentication It is possible to enable token authentication for
this router. See "Token Authentication" in the Infor
ION Grid Security Administration Guide.
Impersonation It is possible to enable impersonation on this
router. For more information about impersonation,
see "Impersonation" in the Infor ION Grid Security
Administration Guide.
HTTP Strict Transport Security HTTP Strict Transport Security (HSTS) is a secu-
rity enhancement activated by a web application
through a HTTP response header. This enhance-
ment enforces the browsers to only use HTTPS
when accessing the web site domain. It also
prevents browsers from accessing the web server
if it does not have an SSL certificates signed by
a CA trusted by the browser.
Published Applications Configure which applications are accessible on
this router.
Note: Disabling SYSTEM disables access to the
Grid Management Pages using this router.
SYSTEM is listed as a publishable application in the routers. By not publishing SYSTEM via a given
router, the Management UI will not be accessible via that router. SYSTEM is always published by the
Host Routers.
Note: The SYSTEM application cannot be removed from host routers.
This section describes common administrative tasks, just as those for stopping and starting the grid.
Some of these tasks are performed interactively through an administrative user interface while others
can be performed programmatically.
If the grid does not start automatically, take the following steps (these are for Windows):
1 Access the Windows Server Manager on the server where the grid bootstrap service runs.
2 Under Configuration, select Services.
3 In the list of services, locate the grid bootstrap service. It will have a name in the format:Infor
ION Grid - gridName.
4 Verify the Status column states Started. If the service is not started, right-click on the service
and select Start.
5 If the grid still does not start automatically, execute the StartHost.cmd or StartAllHosts.
cmd script, which is located in grid_root_installation_path\bin.
6 If the grid still does not start automatically, follow these steps:
a Launch the offline configuration manager. See Accessing the offline version of the Grid GUI
on page 67.
b Click on the Hosts link.
c Check that the host is activated. If it is not, click the start symbol to activate the host.
The REST services are defined by a WADL file in the same way that web services are defined in a
WSDL file. For more information on WADL, see http://www.w3.org/Submission/wadl/.
The WADL file describes the set of operations that is exposed and the schema of the data that is
passed as requests and returned as responses. The WADL file is typically imported into some external
tooling that will generate code in different languages that makes it easy to implement calls to the
exposed REST services.
The REST services are accessed through any of the HTTPS ports that are defined in the grid routers.
The WADL file is also accessible through any of those ports.
REST API
The documentation and a testing tool for Infor ION Grid REST API is available on all grid routers.
To read the documentation and to test the Infor ION Grid REST API:
1 Open a supported web browser.
2 Navigate to this URL:
https://server:port/grid/rest where server is the name of the server hosting the grid and port is the
HTTPS port for the grid router.
3 The Infor ION Grid REST API UI with a listing of available resources is displayed.
• Click the name of a resource to expand the listing of available operations.
• Click the name of an operation to display details about that operation.
• Clicking the operation link again will minimize the operation.
Note about PUT and POST operations: By clicking the Model Schema link in the Parameters section
a JSON skeleton of what the input for that operation looks like is displayed. Clicking this JSON skeleton
will fill the Value text area in the Parameters section with the JSON skeleton.
The Infor ION Grid REST API requires authentication and some of the REST methods require
authentication with the grid-admin and/or app-admin role. Authentication may be performed using
username/password or certificates. For information about how to generate a client certificate, see the
Infor ION Grid Security Administration Guide.
each command. To list possible sub commands, type java -jar grid-cli.jar help command.
To display the available options and parameters for a sub command, specify java -jar grid-
cli.jar help command subcommand.
Rolling upgrade
Rolling upgrade primarily targets Grids deployed in cloud, and is normally initiated by the Infor Cloud
team.
When the Grid detects that a Rolling Upgrade of Grid has been initiated, the upgrade is visualized in
the top right corner of the Grid Management Pages. The progress of the upgrade is visualized in the
Hosts tab and the Node tab. Once one of the host routers run the new version, it is possible to switch
to the new version of the Grid Management Pages by clicking Switch UI Version in the top right corner.
If a failed patch or standard update is detected, a warning is displayed.
Chapter 6: Troubleshooting
Introduction to troubleshooting
The first approach to troubleshooting is to use the techniques for monitoring the grid. As described in
chapter "Monitoring the Grid", you typically view log files and change log levels in order to gain more
information. When this is not enough, you can consider the state of the hosts (machines) and anything
related to the operating system on them. Are they configured optimally and do they have enough
resources at hand. For example, are the disks full? Do you need more memory? Are the CPUs stressed?
Are there network issues?
Troubleshooting tools
The ION Grid provides many sources of information about the configuration and runtime status of a
grid and the applications running within the grid. These include:
• Log files
Log files are available for each node. For more information, see Viewing log files on page 30.
• Counters
Counters are available for each grid node as well as a counter history. For more information, see
Viewing counters on page 38.
• Configuration history
You can review a history of changes to the grid configuration so that you can, for example, identify
changes that caused a problem or revert to a previous configuration. For more information, see
Comparing runtime history on page 45.
• Heap dumps and thread dumps
You can view heap dumps and thread dumps for individual grid nodes.
• Grid Status report
The Grid Status report is a generated report that shows the overall status of the grid, and also
includes log files, configuration files. For more information, see Generating a Grid Status report on
page 34 and Viewing a Grid Status report on page 34.
Viewing threads
If a grid node is using an unusually high percentage of the CPU for an extended period of time or if a
node show signs of being unresponsive, you may consider looking at the threads in the node in order
to see what is happening in the node. It could be a situation where a thread is in an endless loop or it
could be in a deadlock situation.
1 Navigate to the Nodes tab.
2 Click a node.
3 Select Threads from the details of the node.
4 Click a specific thread or group link to view the current state and call stack.
Grid and how it is stored on disk on page 89 for instructions on how to locate the grid configuration
area. In the configuration area, all log files and configuration files may be found.
Disaster recovery
Note: Unlike Grid 1.x, Grid 2.x does not have the notion of a primary host. In 2.x you can install one
or more hosts and then remove any of them at will. As long as at least one host remains, the Grid will
be operational.
HttpTrace Logging
The HttpTrace Grid logger logs http traffic details. This page is used to configure which traffic is logged
on which detail level. Configuration changes made on the page are immediately active and persistent.
All log entries are tagged with a request ID to help correlate multiple log entries belonging to the same
request. The logging can be triggered by enabling the HttpTrace cookie, defining URL patterns or
defining Header patterns. When multiple triggers are in effect, the most detailed level of triggers is
applied.
Grid scripts
The ION Grid is delivered with a number of scripts which enable you to quickly perform operations
such as starting or stopping a host of the Grid. Furthermore, these scripts can be embedded in other
scripts, for example to control operation during a backup or maintenance script.
To locate the scripts, open the file explorer/browser tool or command prompt and navigate to grid_
root_installation_path\bin.
These scripts are delivered:
• StartAllHosts.cmd - set the status for all hosts in the grid to ACTIVATED which will cause the
bootstrap of each host to launch the Host Router resulting in Grid startup on all hosts.
• StartHost.cmd - set the status for the host on which the command is executed in the grid to
ACTIVATED which will cause the bootstrap of the host to launch the Host Router resulting in Grid
startup on this host.
• StopAllHosts.cmd - set the status for all hosts in the grid to DEACTIVATED which will cause
the bootstrap of each host to stop the Host Router resulting in the Grid stopping on all hosts.
• StopHost.cmd - set the status for the host on which the command is executed in the grid to
DEACTIVATED which will cause the bootstrap of the host to stop the Host Router resulting in the
Grid stopping on this host.
Note:
• Modifying the delivered scripts is not recommended as they are subject to replacement during
upgrades.
• The scripts delivered assume that the Java executable location is on the path. To verify that Java
is on the path, open a command prompt, type java, and then press Enter. If a command not found
exception occurs then Java is not on the path and should be added.
Uninstaller flags
If you want to force the uninstallation to ignore a certain problem, you can pass one or more flags to
the uninstaller. In the file system of the host you are removing, navigate to the grid uninstall folder. This
is grid_root_installation_path\uninstall. Using elevated rights (run as administrator on Windows, root
on Linux), run:
java -jar uninstall.jar flags -baseDir grid_root_installation_path
For example, if the database no longer exists, and you want to uninstall the grid, you can use:
java -jar uninstall.jar ignoreDBErrors -baseDir grid_root_installation_path
The flags you can use include:
• archiveLogsInDatabase - Archive all log files on disk in the database.
• forceClean - Remove uninstaller files even if errors occurred. You will not be able to rerun the
uninstaller.
• forceCleanIgnoreAll - Remove uninstaller files even if errors occurred and ignore all errors.
• help - Show the available start options.
• ignoreDBErrors - Ignore errors relating to database connections and cleanup. Use this if the
database is unreachable.
• ignoreLockedFileErrors - Ignore errors relating to locked files. Files might be left on disk after the
uninstaller finishes.
• ignoreScaleOutErrors - Ignore errors relating to scale out hosts. The whole grid will be deleted
from the database. Scaled out hosts might have files left on disk.
• ignoreServiceErrors - Ignore errors relating to the service/daemon. The service/daemon might not
be removed.
• ignoreStopGridErrors - Ignore errors relating to stopping the grid. Grid processes might be running,
and the files on disk might not be deleted.
• preserveLogFiles - Archive all log files on disk. The grid log files will be in a zip-file named
gridname-grid-log-archive-timestamp.zip. The uninstaller log will be named uninstall-gridname.log.
Both files will be located in the parent folder of the Grid install directory.
Host Groups
Host Groups are used to group together a number of hosts. Applications and routers can be assigned
to the host group. When you assign an application, it will be deployed to all hosts in the group. When
you assign a router, it will start on all hosts in the group.
Note: If the host is already added to a host group a message Are you sure? is displayed. Moving
a host from one host group to another can potentially uninstall and install different applications and
stop and start different routers on that host. Applications and routers are assigned to the host group
on their respective pages. On the Host Groups page, they are only listed.
Starting an application
An application is started based on the information given in the bindings. If a binding is configured with
an initial node count greater than zero, that node count will be considered when starting the application.
So, if an application has two different bindings and both of them have an initial count of one (1), the
grid will recognize this and start one node each for the two bindings.
Stop application
The Stop Application task stops all grid nodes belonging to this application and sets the application in
an offline state. Since the application is put in an offline state, nodes will not be automatically started
even if a binding exists with a minimum count greater than zero. The application will remain in an offline
state until it is started again; depending on the choice made when stopping the application it will remain
in this offline state permanently or until Grid restart.
Note: We recommend that you first put the application in an offline state before stopping it. This gives
the application time to finish processing while at the same time preventing it from accepting new client
requests.
1 Navigate to the Applications tab.
2 Select an application.
3 Select Stop from the application context menu displayed in list view, or click Stop Application in
the detailed card.
4 Click Yes to confirm the operation.
Application Repository
Shows a table over all Grid Application Archives (.gar files) that have been uploaded.
Note: An application might have been uploaded several times but with different versions.
All versions are listed in the table with information about when it was uploaded and if it is installed or
not. Application installation can be initiated right from this page by clicking the plus sign icon. Archives
can be downloaded by clicking the download icon located on the far right.
Upload application
1 Click Upload at the top of the page.
2 Select a .gar or .war file and click the Upload button.
Alternatively, drag and drop the .gar or .war file onto the repository page.
Application deployment
When describing managing the installation and un-installation of a Grid application on a host or a host
group, we use the terms deploy and undeploy. The Grid contains an application deployment mechanism
which supports managing applications deployment on one or more hosts including the primary install
(deploying to the first host), scaling-in, scaling-out, upgrading and un-installing. To be functional, a grid
application must be deployed on at least one host, but an application can also be installed without
being deployed.
1 An application's deploy state indicates, per host or globally, the current deploy state of the application
- that is, if the deploy was successful, is in progress or failed.
2 A deploy is considered successful if the application files could be unzipped on disk on the target
host and the deployment profile was executed successfully.
3 Note that an application binding can only be started on a host where the application is considered
to be OK. An application can have one of these deployed states:
The Deployment page shows which hosts the application is currently deployed on and the deploy
state.
On the Deployment page, you can do these tasks:
• Upgrade - Upgrade the application to another version.
• Scale Out - Deploys the application to another host so it is possible to start the application on that
host. Scale Out is only available if there are hosts the application yet has not been deployed to.
• Scale In - Undeploys the application from a host.
Note: This stops the application on that host if it is running. Scale in is only available if the application
is deployed to more than one host.
• Uninstall - Completely removes the application and its configuration from all hosts.
• Edit host groups, if host groups are defined in the grid.
4 The Install Application dialog box now shows the selected .war file along with two new fields, Type
Name and Version.
5 Specify a Type Name. This is the application name for the entry in the Application Repository.
6 Specify a Version. This is the application version for the entry in the Application Repository.
7 Optionally click the Show Details link for selection of advanced features.
Vertically Scalable
Determines whether the application can be scaled vertically on the same host; enabled by default.
Horizontally Scalable
Determines whether the application can be scaled horizontally across multiple hosts; enabled by
default.
Session Affinity
Indicates that the application requires Session Affinity; enabled by default.
8 Click the Upload button to add the Web Application to the Application Repository.
9 Select the newly uploaded application in the Install Application dialog box and click Next.
10 Specify a name for the application.
11 Select the Auto Scaling option if the application must be automatically installed on any new hosts
added to the Grid.
12 Select what hosts the application must initially be installed on.
13 Click Install to complete the installation.
By default a global Binding, named as the application, with minimum set one is created. Also a context
root with the same name as the binding in lower case is added.
Servlet Context Init Parameters
Servlets may require configuration in the form of Servlet Context Init Parameters. Such parameters
can be added to the application in the form of Grid Properties.
To add a Grid Property which will be used as a Servlet Context Init Parameter:
• On the Applications page, select the Web Application to expand the details for the application.
• From the details, select Properties to go to the property configuration page.
• Select Add Ad Hoc Property at the bottom of the page to display the fields for creating an ad hoc
property.
• Specify the name of the property. In order for the property to be propagated to the Servlet Context
as an Init Parameter, the property must be prefixed with "grid.servletContext.initParam.". For
example: "grid.servletContext.initParam.Language".
• Leave all check boxes unselected.
• Click Add to create the property and display the edit property page.
• Click Edit to set the value for all hosts. If the value should only be valid for a specific host, select
a host in the context listing on the left.
servletContext.language=EN
servletContext.database=dbserver.example.com
grid.servletContext.initParam.language=EN
grid.servletContext.initParam.database=dbserver.example.com
These properties in turn are available as Init Parameters named "language" and "database" in the
Servlet Context when the application starts.
Connection Dispatchers
Manage connection dispatchers, that is, open ports on behalf of Grid applications with proprietary
information.
This page displays any existing connection dispatcher configurations.
Note: Connection dispatchers are enabled only if the application has been configured to have connection
dispatchers.
1 Click Add New.
2 Specify this information.
Type
Specify a pre-defined application-specific name of the connection dispatcher.
Authentication Type
Select between No authentication, Server authentication only, Clients may
authenticate with certificate, or Clients must authenticate with
certificate.
Router
Specify which router to use when opening the port.
Port
Specify the port to use.
Description
Provide a description for the connection dispatcher.
Driver
Specify the JDBC driver in use for the database connection.
JDBC URL
Specify the connection string for the database connection.
Schema
Optionally, specify the database connection schema.
Username
Specify the database connection user name.
Password
Specify the database connection password.
Keys
Optionally, map the DBC Configuration to one or more keys. These can be used for tenant mapping.
Pool Settings
Click to expand and optional change how the database pooling is configured.
• Min idle connections: The minimum number of connections that can remain idle in the
pool, without extra ones being created, or zero to create none.
• Max idle connections: The maximum number of connections that can remain idle in the
pool, without extra ones being released, or negative for no limit.
• Max total connections: The maximum number of active connections that can be allocated
from this pool at the same time, or negative for no limit.
• Max wait millis: The maximum number of milliseconds that the pool will wait (when there
are no available connections) for a connection to be returned before throwing an exception,
or -1 to wait indefinitely.
• Time between evictions runs millis: The number of milliseconds to sleep between
runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be
run.
• Num tests per eviction run: The number of objects to examine during each run of the
idle object evictor thread (if any).
• Min evictable idle time millis: The minimum amount of time an object may sit idle
in the pool before it is eligible for eviction by the idle object evictor (if any).
• Soft min evictable idle time millis: The minimum amount of time a connection
may sit idle in the pool before it is eligible for eviction by the idle connection evictor, with the
extra condition that at least 'minIdle' connections remain in the pool. When
minEvictableIdleTimeMillis is set to a positive value, minEvictableIdleTimeMillis is examined
first by the idle connection evictor. For examle, when idle connections are visited by the evictor,
idle time is first compared against minEvictableIdleTimeMillis (without considering the number
of idle connections in the pool) and then against softMinEvictableIdleTimeMillis, including the
minIdle constraint.
• Test on borrow: The indication of whether objects will be validated before being borrowed
from the pool. If the object fails to validate, it will be dropped from the pool, and we will attempt
to borrow another.
• Test on create: The indication of whether objects will be validated after creation. If the
object fails to validate, the borrow attempt that triggered the object creation will fail.
• Test on return: The indication of whether objects will be validated before being returned
to the pool.
• Test while idle: The indication of whether objects will be validated by the idle object
evictor (if any). If an object fails to validate, it will be dropped from the pool.
Note: There are Grid counters for DBC pooling. These can be viewed for each node on the node
page.
Deployment Operations
This page displays a row for each deployment operation for the application, and links to the
corresponding log files.
On this page you can do these tasks:
• Retry/Undo - This option is available If an operation has failed. This is the same as on the Deploy
page.
• View profile data - This option is available if the operation used the deployment profile data.
Exporting a document
1 Navigate to Applications.
2 Click on the application where you want to import the settings.
3 Select Import/Export from the application details.
4 Under import, click on the folder icon.
5 Specify a password in the text field. The password must be at least 16 characters.
6 Verify the password.
7 In the Valid Through field, specify the date when the document should expire.
8 Click Export. A download prompt is displayed. When exporting a document, any sensitive data
will be encrypted. The encrypted fields cannot be decrypted after the specified validity date.
Importing a document
1 Navigate to Applications.
2 Click on the application where you want to import the settings.
3 Select Import/Export from the application details.
4 Under import, click on the folder icon.
5 Navigate to the document you want to import and click OK.
6 Specify the password to decrypt sensitive data.
If there is no sensitive data in the document, you will not be asked to specify the password.
7 Click Import.
When importing a document, any configuration for the application will be replaced with the data from
the imported document. This may remove or add settings for an application, such as bindings, properties,
and persisted data. If you want to check the changes to be made in the document, use the diff
functionality. The import will not modify anything if it detects that the document contains settings that
are illegally configured, but will present the detected errors in a list instead.
Diff is presented as a JSON document containing data from both the settings that are currently in use
for the application and the provided JSON document. Any setting that would be removed by an import
is marked red. Any setting that would be added by an import is marked green. Any setting that would
be changed by an import is marked yellow. Unchanged settings are not marked in any specific way. If
you agree with the presented changes, you can click Import.
If the diff shows something unwanted or if there is an error message presented when you import, you
may modify the document manually to change any values that should be imported. Before making any
changes to the document, it is recommended that you first create a copy of the document that you
want to modify.
Grid used to provide a different wizard based Import or Export zip format. This format is still supported
and now comes with a converter. The converter allows you to extract the settings for an application
and creates a JSON document for it. This JSON document can be imported. The new JSON preserves
the password to decrypt sensitive data so you must specify the same password used for the zip in the
old import/export tool.
Node capacity
The node capacity option makes it possible to define a threshold for the relative number of requests
accepted for this node.
2 Select a node.
3 Select Node Capacity from the node details.
4 Specify a Node Weight and click Set.
Busy monitor
Enabling the Busy Monitor makes the node go Offline whenever the heap usage in percent is greater
than the Memory Threshold. The denied request counter tracks the number of requests being denied
because of memory problems.
This configuration only affects the running node.
Note: This task is only applicable in environments without load balancers.
1 Navigate to Nodes.
2 Select a node.
3 Select Node Capacity from the node details.
4 Specify a value for Busy Monitor.
5 Click Set.
Stopping a node
You can stop a node immediately, which is not recommended, or in a controlled fashion, which gives
the node 60 seconds to clean up.
Normally, you do not stop individual application nodes. Instead, you stop an entire application and, as
a result, all nodes belonging to the application will be stopped. However, there are situations when you
want to stop an individual application node.
For example:
• A node is experiencing problems and you need to stop it, perhaps with the intention of starting a
new node to replace the stopped one.
• The application has been started in multiple instances (nodes) but all that capacity is no longer
required, so some of the nodes can be removed to free resources.
• You want to clear a particular host in a multi-host grid from all nodes to perform some maintenance
on that host.
Before stopping a node, note these considerations:
• Should the node be put in an offline state first?
• If the application node is the only one of its kind, the application may stop working. Should a new
similar application node be started first before the node is stopped?
• Applications are implemented differently. Some applications manage their nodes themselves.
• Consult the documentation of the application. Does the documentation recommend an alternative
procedure to stopping the node in this case?
Set offline
Sets the application offline, meaning that the Grid will not automatically start any nodes and most parts
of the application will not be available. For example, HTTP, REST, and non admin proxys.
Maintenance
Grid database
The grid uses a database to store all grid data, including but not limited to the following examples: