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:
                  
- 
                        shapeparameter withoutdata_hoststo configure a 2x2 grid with one management instance, all on the local host
- 
                        shapeparameter withdata_hoststo configure a 2x2 grid with one management instance on four systems, with the management instance and a data instance on the local host
- 
                        data_instancesparameter 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 ...