Defining sqlhosts information for connection management of high-availability clusters that use secure ports

You must define sqlhosts network-connectivity information for connection management of high-availability clusters. If Connection Managers, database servers, or client applications are outside of a trusted network, you must also create an encrypted password file for security.

About this task

To use a file other than $INFORMIXDIR/etc/sqlhosts on a specific host, set the host's INFORMIXSQLHOSTS environment variable to the alternative file.

Procedure

  1. On the host of each Connection Manager and database server, create sqlhosts file entries for each database server in the cluster, and specify the s=6 secure-port option.
    For example:
    #dbservername   nettype    hostname   servicename   options
     server_1       onsoctcp   host_1     port_1        s=6
     server_2       onsoctcp   host_2     port_2        s=6
     server_3       onsoctcp   host_3     port_3        s=6
  2. On the host of each Connection Manager and database server, create sqlhosts file alias entries for each database server.
    For example:
    #dbservername   nettype    hostname   servicename   options
     server_1       onsoctcp   host_1     port_1        s=6
     a_server_1     onsoctcp   host_1     port_4
    
     server_2       onsoctcp   host_2     port_2        s=6
     a_server_2     onsoctcp   host_2     port_5
    
     server_3       onsoctcp   host_3     port_3        s=6
     a_server_3     onsoctcp   host_3     port_6
    
  3. On the host of each Connection Manager, add a group entry the individual entries. Add group options to the database server and database server alias entries. Use the c=1 group-entry option, so that connection-attempt starting points in the list of group members is random. Use the e=last_member group-entry option so that the entire sqlhosts is not scanned for group members.
    For example:
    #dbservername   nettype    hostname   servicename   options
     my_servers     group      -          -             c=1,e=a_server_3
     server_1       onsoctcp   host_1     port_1        s=6,g=my_servers
     a_server_1     onsoctcp   host_1     port_4        g=my_servers
     server_2       onsoctcp   host_2     port_2        s=6,g=my_servers
     a_server_2     onsoctcp   host_2     port_5        g=my_servers
     server_3       onsoctcp   host_3     port_3        s=6,g=my_servers
     a_server_3     onsoctcp   host_3     port_6        g=my_servers
    
    
    A password file that is encrypted through the onpassword utility is required for connectivity through secure ports. The entries in the previously shown sqlhosts file are represented in the following password file.
    my_servers  a_server_1  user_1  my_password_1
    my_servers  a_server_2  user_2  my_password_2
    my_servers  a_server_3  user_3  my_password_3
    
    server_1    a_server_1  user_1  my_password_1
    server_2    a_server_2  user_2  my_password_2
    server_3    a_server_3  user_3  my_password_3
    
    a_server_1  a_server_1  user_1  my_password_1
    a_server_2  a_server_2  user_2  my_password_2
    a_server_3  a_server_3  user_3  my_password_3
    
  4. In each database server's onconfig file, set the DBSERVERALIASES parameter to that database server's alias.
    The onconfig file entry for server_1:
    DBSERVERALIASES a_server_1
    The onconfig file entry for server_2:
    DBSERVERALIASES a_server_2
    The onconfig file entry for server_3:
    DBSERVERALIASES a_server_3
  5. On the host of each client application, create an sqlhosts file entry for each service-level agreement (SLA) in each Connection Manager configuration file.
    The first Connection Manager's configuration file has the following entries:
    NAME connection_manager_1
    
    CLUSTER my_cluster
    {
       INFORMIXSERVER my_servers
       SLA sla_primary_1     DBSERVERS=PRI
       SLA sla_secondaries_1 DBSERVERS=SDS,HDR
       FOC ORDER=ENABLED PRIORITY=1
    }
    The second Connection Manager's configuration file has the following entries:
    NAME connection_manager_2
    
    CLUSTER my_cluster
    {
       INFORMIXSERVER my_servers
       SLA sla_primary_2     DBSERVERS=PRI
       SLA sla_secondaries_2 DBSERVERS=SDS,HDR
       FOC ORDER=ENABLED PRIORITY=2
    }
    Add the following entries to each client application's host sqlhosts file:
    #dbservername       nettype    hostname   servicename   options
     sla_primary_1      onsoctcp   cm_host_1  cm_port_1
     sla_primary_2      onsoctcp   cm_host_2  cm_port_2
    
     sla_secondaries_2  onsoctcp   cm_host_1  cm_port_3
     sla_secondaries_2  onsoctcp   cm_host_2  cm_port_4
    
  6. On the host of each client application, create sqlhosts file group entries for each group of SLA entries, and add group options to the SLA entries. Use the c=1 group-entry option, so that connection-attempt starting points in the list of group members is random. Use the e=last_member group-entry option so that the entire sqlhosts is not scanned for group members.
    #dbservername       nettype    hostname   servicename   options
     g_primary          group      -          -             c=1,e=sla_primary_2
     sla_primary_1      onsoctcp   cm_host_1  cm_port_1     g=g_primary
     sla_primary_2      onsoctcp   cm_host_2  cm_port_2     g=g_primary
    
     g_secondaries      group      -          -             c=1,e=sla_secondaries_2
     sla_secondaries_2  onsoctcp   cm_host_1  cm_port_3     g=g_secondaries
     sla_secondaries_2  onsoctcp   cm_host_2  cm_port_4     g=g_secondaries
    

Results

Client connection requests to @g_primary are directed to one of the Connection Managers. If connection_manager_1 receives the request, it uses sla_primary_1 to provide the client application with connection information for the primary server. If connection_manager_2 receives the request, it uses sla_primary_2 to provide the client application with connection information for the primary server.