Browse Source

Removing heat template outputs for stack scalability.

When scaling up to ~100VMs, "openstack stack show <stack_name>" can take
around 2minutes to complete, causing timeouts on HAProxy side.  This
gets rougly linearly worse as VMs are added.  This is due to resolving
stack outputs.  This PR removes the outputs and helps with stack scalability.
Jiri Mencak 7 năm trước cách đây
mục cha
commit
4be080c056

+ 10 - 0
playbooks/openstack/configuration.md

@@ -530,3 +530,13 @@ openshift_hosted_registry_storage_volume_name: registry
 
 
 The volume will be formatted automaticaly and it will be mounted to one of the
 The volume will be formatted automaticaly and it will be mounted to one of the
 infra nodes when the registry pod gets started.
 infra nodes when the registry pod gets started.
+
+
+## Deploying At Scale
+
+By default, heat stack outputs are resolved.  This may cause
+problems in large scale deployments.  Querying heat stack can take
+a long time and eventually time out.  The following setting in
+`inventory/group_vars/all.yml` is recommended to prevent the timeouts:
+
+* `openshift_openstack_resolve_heat_outputs`: False

+ 3 - 0
playbooks/openstack/sample-inventory/group_vars/all.yml

@@ -163,6 +163,9 @@ openshift_openstack_pool_end: "192.168.99.254"
 # hardcoded to `openshift`.
 # hardcoded to `openshift`.
 ansible_user: openshift
 ansible_user: openshift
 
 
+# Resolve heat stack outputs. Disabling outputs helps stack scalability. (default: True)
+#openshift_openstack_resolve_heat_outputs: True
+
 # # Use a single security group for a cluster (default: false)
 # # Use a single security group for a cluster (default: false)
 #openshift_openstack_flat_secgrp: false
 #openshift_openstack_flat_secgrp: false
 
 

+ 2 - 0
roles/openshift_openstack/templates/heat_stack.yaml.j2

@@ -6,6 +6,7 @@ parameters:
 
 
 outputs:
 outputs:
 
 
+{% if openshift_openstack_resolve_heat_outputs|default(True)|bool %}
   etcd_names:
   etcd_names:
     description: Name of the etcds
     description: Name of the etcds
     value: { get_attr: [ etcd, name ] }
     value: { get_attr: [ etcd, name ] }
@@ -53,6 +54,7 @@ outputs:
   infra_floating_ips:
   infra_floating_ips:
     description: Floating IPs of the nodes
     description: Floating IPs of the nodes
     value: { get_attr: [ infra_nodes, floating_ip ] }
     value: { get_attr: [ infra_nodes, floating_ip ] }
+{% endif %}
 
 
   public_api_ip:
   public_api_ip:
     description: IP address for the API/UI endpoint
     description: IP address for the API/UI endpoint