ttGridRollout
The ttGridRollout
utility, run from the installation_dir
/tt22.1.1.21.0/bin
directory of your TimesTen installation, creates a new grid with one database definition. The database is created and loaded, its distribution is configured, then it is opened.
The utility reads a configuration file that contains user-defined parameters and attributes for the grid you want to create. TimesTen provides a configuration template that you can copy and modify.
You can specify the shape of the grid, the hosts to use, the number of management instances (one or two), and the number of data instances, among other settings. By default, if you do not specify hosts, management instances, and data instances, then a single management instance and a number of data instances suitable for the specified shape are created on your local host.
The installation from which you run ttGridRollout
is copied to the other hosts you specify so that additional data instances and a standby management instance can be created as desired. If you specify two management instances, the first must be on your local host.
The ttGridRollout
utility is a wrapper for the ttGridAdmin
utility (also using ttInstanceCreate
for the first management instance), and actions performed by ttGridRollout
can optionally be performed directly using ttGridAdmin
. Once you have created a grid with ttGridRollout
, use ttGridAdmin
to maintain it and to make any changes.
The ttGridRollout
utility is typically used for creating sample grids or grids that will be used during product design and evaluation.
Note:
Run this utility exactly as "ttGridRollout
" (for example, not as "ttgridrollout
").
Required Privilege
The user who runs this utility becomes the instance administrator of all instances created, and the user's primary user group becomes the TimesTen user group.
File system write permission is required wherever installations and instances will be created.
Usage in TimesTen Scaleout and TimesTen Classic
This utility is specifically for use with TimesTen Scaleout.
Syntax
ttGridRollout [-h | -help | -?] ttGridRollout [-n | -dry-run] [-wait n] [-timeout n] conf_file
Options
ttGridRollout
has the options:
Option | Description |
---|---|
|
Displays help information. |
|
Specifies the configuration file that contains the parameters for creating the grid and database. A read-only template, |
|
Displays the commands to be run but does not run them. Other options you specify will be reflected in the display of commands to be run. Note: It is advisable to do this before executing the command. |
|
Specifies how long (Database operations in TimesTen Scaleout, such as creating, loading, and opening, initiate a state change that is recorded in the active management instance of the grid. The state change is complete once the database operation has completed on each instance of the grid.) |
|
Maximum number of seconds to wait for a long-running operation to complete. The default is 600. |
Note:
the -wait
option applies only to database operations. The -timeout
option applies to any operation. These options are passed to ttGridAdmin
.
Also see Command Timeouts and Waits.
Configuration File Parameters
The table that follows describes configuration parameters supported by the ttGridRollout
configuration file (named ttgrid.conf
by convention).
Note:
These parameters are required in your configuration file:
-
grid_name
-
dbdef_file
-
shape
(optionally withdata_hosts
) ordata_instances
-
instance_location
-
zoo_conf
, unless all TimesTen instances and the membership server are on the local host
Parameter | Description |
---|---|
|
Connectable files ( cs_connect_files = client1.connect, client2.connect For information about connectable files, see Create a Connectable (connectableCreate). |
|
List of entries for hosts to be used for data instances, in JSON format. Optionally use this with Do not use both If you do not specify enough hosts for an This parameter supports the attributes Specifying address(es) is required—either Example: data_hosts = [ { "internalAddress":"tthost1-priv", "externalAddress":"tthost1.example.com", "installation_location":"/u01/tthost1/TimesTen" }, { "internalAddress":"tthost2-priv", "externalAddress":"tthost2.example.com", "installation_location":"/u01/tthost2/TimesTen" }, { "internalAddress":"tthost3-priv", "externalAddress":"tthost3.example.com", "installation_location":"/u01/tthost3/TimesTen" }, { "internalAddress":"tthost4-priv", "externalAddress":"tthost4.example.com", "installation_location":"/u01/tthost4/TimesTen" } ] Notes: See notes for |
|
List of entries for data instances, in JSON format. This parameter allows you to specify data space groups, host and instance names, and daemon and client/server port numbers. You cannot use This parameter supports the attributes The shape of the grid is determined by your Specifying address(es) is required—either Example: data_instances = [ { "internalAddress":"tthost1-priv", "externalAddress":"tthost1.example.com", "dataspacegroup":1, "daemonport":50001, "csport":50002 }, { "internalAddress":"tthost2-priv", "externalAddress":"tthost2.example.com", "dataspacegroup":1, "daemonport":50001, "csport":50002 }, { "internalAddress":"tthost3-priv", "externalAddress":"tthost3.example.com", "dataspacegroup":2, "daemonport":50001, "csport":50002 }, { "internalAddress":"tthost4-priv", "externalAddress":"tthost4.example.com", "dataspacegroup":2, "daemonport":50001, "csport":50002 } ] Notes:
|
|
Database definition file ( Directories are created on each host as necessary for the For information about database definition files, see Create a Database Definition (dbdefCreate). |
|
Connectable files ( direct_connect_files = mydbcfg1.connect, mydbcfg2.connect For information about connectable files, see Create a Connectable (connectableCreate). |
|
The desired name of the grid. This is required. |
|
A SQL script ( |
|
Path to the parent directory where you want to put the TimesTen installation on systems where the standby management instance (if applicable) and data instances are located. The The default is to use the same location as for the installation on the local host, from which This location is used throughout the grid, except where you override it for a particular host or instance by setting the |
|
A file for custom configuration of data instances, consisting of This is accomplished using the |
|
Path to the parent directory for TimesTen instances (data and management). This is required. For each instance, the This location is used throughout the grid, except where you override it for a particular host or instance by setting the |
|
List of entries for management instances, in JSON format. The first entry must be on the local host and will be the active management instance. The second entry (if applicable) must be on a different system and will be the standby management instance. If you do not set This parameter supports the attributes Specifying address(es) is required—either Example: mgmt_instances = [ { "internalAddress":"tthost1-priv", "externalAddress":"tthost1.example.com" }, { "internalAddress":"tthost2-priv", "externalAddress":"tthost2.example.com" } ] Notes:
|
|
The desired shape of the grid,
Either specify When you specify Notes:
|
|
SQL*Net configuration file (used in communicating with an Oracle database through Through the |
|
TNS names configuration file (used in communicating with an Oracle database through Through the |
|
Apache ZooKeeper membership service client configuration file. This parameter is required unless all management instances, data instances, and the ZooKeeper membership server will be on your local host. For examples of ZooKeeper client configuration files, see Membership Operations. For details on how to configure ZooKeeper as a membership service, see Using Apache ZooKeeper as the Membership Service in the Oracle TimesTen In-Memory Database Scaleout User's Guide. If you do not specify this parameter, |
Configuration File Parameter Attributes
The ttGridRollout
configuration parameters support these attributes. Refer to the preceding table of parameters to see which attributes are supported by each parameter.
Attribute | Description |
---|---|
|
DNS name or IP address of the system for both external and internal communications, if a single address is used. Either use This option takes one name or address only, and a specified name must resolve to one IP address or to multiple IP addresses on the same network segment. If host names from Note: Using a single address is not recommended for production environments. Also see Address Formats. |
|
Port for client/server connections. If this is not specified for a data instance, If this is not specified for a management instance, |
|
Port for TimesTen daemon communications. If this is not specified for a data instance, If this is not specified for a management instance, |
|
Desired data space group (1, 2, 3, 4, or 5). The default is data space group 1. If you use the |
|
DNS name or IP address of the system for external communications (outside the grid) for client/server connections. Either use This option takes one name or address only, but a name may resolve to one or more IP addresses. If host names from Also see Address Formats. |
|
Desired name of the host object in the grid model. Note: If you specify host addresses as DNS names, default host object names are according to the addresses (such as |
|
Overrides the grid-wide |
|
If you use the Alternatively, for data instances, Alternatively, for management instances, |
|
Overrides the grid-wide |
|
DNS name or IP address for internal communications (within the grid). Either use This option takes one name or address only, and a specified name must resolve to one IP address or to multiple IP addresses on the same network segment. If host names from Also see Address Formats. |
|
Port for management instance communications. If this is not specified, |
|
Determines if databases require encryption for client/server connections. Specify one of these settings:
|
server_cipher_suites |
Lists the cipher suite or suites that databases can use for TLS, depending also on the client setting. Specify one or both (separated by comma and in order of preference) of these suites:
There is no default setting. For TLS to be used, the server and client settings must include at least one common suite. |
Examples
This sections provides three ttGridRollout
examples with various types of configuration:
-
shape
parameter withoutdata_hosts
to configure a 2x2 grid with one management instance, all on the local host -
shape
parameter withdata_hosts
to configure a 2x2 grid with one management instance on four systems, with the management instance and a data instance on the local host -
data_instances
parameter to configure a 3x2 grid with two management instances on eight systems, with the first management instance on the local host
Each example includes the configuration, the dry run output showing the ttGridAdmin
commands to be run, and portions of the execution output. In each example, mysys1
is the local host. Dry run output is edited for readability. (The ttInstanceCreate
utility, to create the first management instance, is run through the full path to the installation bin
directory; ttGridAdmin
is run through the full path to the TimesTen ttenv
environment setup script in the first management instance bin
directory.)
Additional examples are in Deploy a Grid and Database in Oracle TimesTen In-Memory Database Scaleout User's Guide.
shape without data_hosts: This scenario is convenient for standalone development.
Configuration:
dbdef_file = /sw/tten/dbdef/database1.dbdef shape = 2x2 zoo_conf = /sw/tten/zkconfig/membership.conf grid_name = grid1 instance_location = /sw/tten/grid1/ttinstances
Dry run:
% ./ttGridRollout -dry-run /sw/tten/gridconfig/ttgrid1.conf ttInstanceCreate -grid -location /sw/tten/grid1/ttinstances -name grid1_mgmt ttGridAdmin gridCreate grid1 -k 2 -host mysys1_mgmt -address mysys1 -membershipConfig /sw/tten/zkconfig/membership.conf ttGridAdmin hostCreate mysys1 -address mysys1 -dataspacegroup 1 ttGridAdmin installationCreate mysys1 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys1_2 -address mysys1 -dataspacegroup 2 ttGridAdmin installationCreate mysys1_2 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin instanceCreate mysys1.instance1 -location /sw/tten/grid1/ttinstances -daemonport 46337 -csport 46338 ttGridAdmin instanceCreate mysys1.instance2 -location /sw/tten/grid1/ttinstances -daemonport 46339 -csport 46340 ttGridAdmin instanceCreate mysys1_2.instance3 -location /sw/tten/grid1/ttinstances -daemonport 46341 -csport 46342 ttGridAdmin instanceCreate mysys1_2.instance4 -location /sw/tten/grid1/ttinstances -daemonport 46343 -csport 46344 ttGridAdmin dbdefCreate /sw/tten/dbdef/database1.dbdef ttGridAdmin modelApply ttGridAdmin dbCreate -wait database1 ttGridAdmin dbDistribute database1 -add all -apply ttGridAdmin dbOpen -wait database1
Execution:
% ./ttGridRollout /sw/tten/gridconfig/ttgrid1.conf INFO: Generating data_instances for 2x2 Grid data_instances = [ { "address":"mysys1", "dataspacegroup":1 }, { "address":"mysys1", "dataspacegroup":1 }, { "address":"mysys1", "dataspacegroup":2 }, { "address":"mysys1", "dataspacegroup":2 } ] INFO: Checking Zookeeper on zk1!2181 -- OK INFO: Checking Zookeeper on zk2!2181 -- OK INFO: Checking Zookeeper on zk3!2181 -- OK INFO: Checking the address for the management database -- OK INFO: Checking connectivity to mysys1 -- OK ================================================================================ ... ================================================================================ 4-instance (2x2) grid successfully created. Management Instance Location ---------------------------- - mysys1:/sw/tten/grid1/ttinstances/grid1_mgmt ... Data Instance Locations ----------------------- - mysys1.instance1 ==> mysys1:/sw/tten/grid1/ttinstances/instance1 - mysys1.instance2 ==> mysys1:/sw/tten/grid1/ttinstances/instance2 - mysys1_2.instance3 ==> mysys1:/sw/tten/grid1/ttinstances/instance3 - mysys1_2.instance4 ==> mysys1:/sw/tten/grid1/ttinstances/instance4 ...
shape with data_hosts: This scenario is useful for initial testing on multiple systems.
Configuration:
dbdef_file = /sw/tten/dbdef/database1.dbdef shape = 2x2 zoo_conf = /sw/tten/zkconfig/membership.conf grid_name = grid1 instance_location = /sw/tten/grid1/ttinstances data_hosts = [ { "internalAddress":"mysys1-i", "externalAddress":"mysys1.example.com" }, { "internalAddress":"mysys2-i", "externalAddress":"mysys2.example.com" }, { "internalAddress":"mysys3-i", "externalAddress":"mysys3.example.com" }, { "internalAddress":"mysys4-i", "externalAddress":"mysys4.example.com" } ]
Dry run:
% ./ttGridRollout -dry-run /sw/tten/gridconfig/ttgrid1.conf ttInstanceCreate -grid -location /sw/tten/grid1/ttinstances -name grid1_mgmt ttGridAdmin gridCreate grid1 -k 2 -host mysys1_mgmt -address mysys1 -membershipConfig /sw/tten/zkconfig/membership.conf ttGridAdmin hostCreate mysys1 -externaladdress mysys1.example.com -internaladdress mysys1-i -dataspacegroup 1 ttGridAdmin installationCreate mysys1 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys2 -externaladdress mysys2.example.com -internaladdress mysys2-i -dataspacegroup 1 ttGridAdmin installationCreate mysys2 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys3 -externaladdress mysys3.example.com -internaladdress mysys3-i -dataspacegroup 2 ttGridAdmin installationCreate mysys3 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys4 -externaladdress mysys4.example.com -internaladdress mysys4-i -dataspacegroup 2 ttGridAdmin installationCreate mysys4 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin instanceCreate mysys1.instance1 -location /sw/tten/grid1/ttinstances -daemonport 46337 -csport 46338 ttGridAdmin instanceCreate mysys2.instance2 -location /sw/tten/grid1/ttinstances -daemonport 46339 -csport 46340 ttGridAdmin instanceCreate mysys3.instance3 -location /sw/tten/grid1/ttinstances -daemonport 46341 -csport 46342 ttGridAdmin instanceCreate mysys4.instance4 -location /sw/tten/grid1/ttinstances -daemonport 46343 -csport 46344 ttGridAdmin dbdefCreate /sw/tten/dbdef/database1.dbdef ttGridAdmin modelApply ttGridAdmin dbCreate -wait database1 ttGridAdmin dbDistribute database1 -add all -apply ttGridAdmin dbOpen -wait database1
Execution:
% ./ttGridRollout /sw/tten/gridconfig/ttgrid1.conf INFO: Generating data_instances for 2x2 Grid data_instances = [ { "externaladdress":"mysys1.example.com", "internaladdress":"mysys1-i", "dataspacegroup":1 }, { "externaladdress":"mysys2.example.com", "internaladdress":"mysys2-i", "dataspacegroup":1 }, { "externaladdress":"mysys3.example.com", "internaladdress":"mysys3-i", "dataspacegroup":2 }, { "externaladdress":"mysys4.example.com", "internaladdress":"mysys4-i", "dataspacegroup":2 } ] INFO: Checking Zookeeper on zk1!2181 -- OK INFO: Checking Zookeeper on zk2!2181 -- OK INFO: Checking Zookeeper on zk3!2181 -- OK INFO: Checking the address for the management database -- OK INFO: Checking connectivity to mysys1 -- OK INFO: Checking connectivity to mysys1-i -- OK INFO: Checking connectivity to mysys2-i -- OK INFO: Checking connectivity to mysys3-i -- OK INFO: Checking connectivity to mysys4-i -- OK ================================================================================ ... ================================================================================ 4-instance (2x2) grid successfully created. Management Instance Location ---------------------------- - mysys1:/sw/tten/grid1/ttinstances/grid1_mgmt ... Data Instance Locations ----------------------- - mysys1.instance1 ==> mysys1-i:/sw/tten/grid1/ttinstances/instance1 - mysys2.instance2 ==> mysys2-i:/sw/tten/grid1/ttinstances/instance2 - mysys3.instance3 ==> mysys3-i:/sw/tten/grid1/ttinstances/instance3 - mysys4.instance4 ==> mysys4-i:/sw/tten/grid1/ttinstances/instance4 ...
data_instances: This scenario is useful for more realistic proof-of-concept testing.
Configuration:
dbdef_file = /sw/tten/dbdef/database1.dbdef zoo_conf = /sw/tten/zkconfig/membership.conf grid_name = grid1 instance_location = /sw/tten/grid1/ttinstances data_instances = [ { "internalAddress":"mysys3-i", "externalAddress":"mysys3.example.com", "dataspacegroup":1, "daemonport":50001, "csport":50002 }, { "internalAddress":"mysys4-i", "externalAddress":"mysys4.example.com", "dataspacegroup":1, "daemonport":50001, "csport":50002 }, { "internalAddress":"mysys5-i", "externalAddress":"mysys5.example.com", "dataspacegroup":1, "daemonport":50001, "csport":50002 }, { "internalAddress":"mysys6-i", "externalAddress":"mysys6.example.com", "dataspacegroup":2, "daemonport":50001, "csport":50002 }, { "internalAddress":"mysys7-i", "externalAddress":"mysys7.example.com", "dataspacegroup":2, "daemonport":50001, "csport":50002 }, { "internalAddress":"mysys8-i", "externalAddress":"mysys8.example.com", "dataspacegroup":2, "daemonport":50001, "csport":50002 } ] mgmt_instances = [ { "internalAddress":"mysys1-i", "externalAddress":"mysys1.example.com" }, { "internalAddress":"mysys2-i", "externalAddress":"mysys2.example.com" } ]
Dry run:
% ./ttGridRollout -dry-run /sw/tten/gridconfig/ttgrid1.conf ttInstanceCreate -grid -location /sw/tten/grid1/ttinstances -name grid1_mgmt ttGridAdmin gridCreate grid1 -k 2 -host mysys1-i_mgmt -internalAddress mysys1-i -externalAddress mysys1.example.com -membershipConfig /sw/tten/zkconfig/membership.conf ttGridAdmin hostCreate mysys2-i_mgmt -internalAddress mysys2-i -externalAddress mysys2.example.com ttGridAdmin installationCreate mysys2-i_mgmt -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin instanceCreate mysys2-i_mgmt.grid1_mgmt2 -location /sw/tten/grid1/ttinstances -type management ttGridAdmin hostCreate mysys3 -externaladdress mysys3.example.com -internaladdress mysys3-i -dataspacegroup 1 ttGridAdmin installationCreate mysys3 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys4 -externaladdress mysys4.example.com -internaladdress mysys4-i -dataspacegroup 1 ttGridAdmin installationCreate mysys4 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys5 -externaladdress mysys5.example.com -internaladdress mysys5-i -dataspacegroup 1 ttGridAdmin installationCreate mysys5 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys6 -externaladdress mysys6.example.com -internaladdress mysys6-i -dataspacegroup 2 ttGridAdmin installationCreate mysys6 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys7 -externaladdress mysys7.example.com -internaladdress mysys7-i -dataspacegroup 2 ttGridAdmin installationCreate mysys7 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin hostCreate mysys8 -externaladdress mysys8.example.com -internaladdress mysys8-i -dataspacegroup 2 ttGridAdmin installationCreate mysys8 -location /sw/tten/grid1/ttinstall/installation1 ttGridAdmin instanceCreate mysys3.instance1 -location /sw/tten/grid1/ttinstances -daemonport 50001 -csport 50002 ttGridAdmin instanceCreate mysys4.instance2 -location /sw/tten/grid1/ttinstances -daemonport 50001 -csport 50002 ttGridAdmin instanceCreate mysys5.instance3 -location /sw/tten/grid1/ttinstances -daemonport 50001 -csport 50002 ttGridAdmin instanceCreate mysys6.instance4 -location /sw/tten/grid1/ttinstances -daemonport 50001 -csport 50002 ttGridAdmin instanceCreate mysys7.instance5 -location /sw/tten/grid1/ttinstances -daemonport 50001 -csport 50002 ttGridAdmin instanceCreate mysys8.instance6 -location /sw/tten/grid1/ttinstances -daemonport 50001 -csport 50002 ttGridAdmin dbdefCreate /sw/tten/dbdef/database1.dbdef ttGridAdmin modelApply ttGridAdmin dbCreate -wait database1 ttGridAdmin dbDistribute database1 -add all -apply ttGridAdmin dbOpen -wait database1
Execution:
% ./ttGridRollout /sw/tten/gridconfig/ttgrid1.conf INFO: Checking Zookeeper on zk1!2181 -- OK INFO: Checking Zookeeper on zk2!2181 -- OK INFO: Checking Zookeeper on zk3!2181 -- OK INFO: Checking the address for the management database -- OK INFO: Checking connectivity to mysys1-i -- OK INFO: Checking connectivity to mysys2-i -- OK INFO: Checking connectivity to mysys3-i -- OK INFO: Checking connectivity to mysys4-i -- OK INFO: Checking connectivity to mysys5-i -- OK INFO: Checking connectivity to mysys6-i -- OK INFO: Checking connectivity to mysys7-i -- OK INFO: Checking connectivity to mysys8-i -- OK ================================================================================ ... ================================================================================ 6-instance (3x2) grid successfully created. Management Instance Locations ----------------------------- - mysys1-i:/sw/tten/grid1/ttinstances/grid1_mgmt - mysys2-i:/sw/tten/grid1/ttinstances/grid1_mgmt2 ... Data Instance Locations ----------------------- - mysys3.instance1 ==> mysys3-i:/sw/tten/grid1/ttinstances/instance1 - mysys4.instance2 ==> mysys4-i:/sw/tten/grid1/ttinstances/instance2 - mysys5.instance3 ==> mysys5-i:/sw/tten/grid1/ttinstances/instance3 - mysys6.instance4 ==> mysys6-i:/sw/tten/grid1/ttinstances/instance4 - mysys7.instance5 ==> mysys7-i:/sw/tten/grid1/ttinstances/instance5 - mysys8.instance6 ==> mysys8-i:/sw/tten/grid1/ttinstances/instance6 ...