Bug 1401132

Summary: Moving gears with many aliases causes excessive number of apache reloads
Product: OpenShift Container Platform Reporter: Rory Thrasher <rthrashe>
Component: ContainersAssignee: Rory Thrasher <rthrashe>
Status: CLOSED ERRATA QA Contact: Gaoyun Pei <gpei>
Severity: high Docs Contact:
Priority: medium    
Version: 2.2.0CC: agrimm, aos-bugs, jgoulding, jialiu, jokerman, mmccomas, rchopra, rthrashe, xtian, zzhao
Target Milestone: ---Keywords: UpcomingRelease
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: rubygem-openshift-origin-node-1.38.7.1-1.el6op, rubygem-openshift-origin-frontend-apache-mod-rewrite-0.8.2.1-1.el6op, rubygem-openshift-origin-frontend-apache-vhost-0.13.3.1-1.el6op, rubygem-openshift-origin-frontend-haproxy-sni-proxy-0.5.3.1-1.el6op, etc Doc Type: Bug Fix
Doc Text:
Cause: Moving a gear with many aliases reloads apache for each alias. Consequence: Too many aliases means the gear move would take timeout and fail. Fix: A gear move will now update apache once with an array of of aliases instead of updating after each alias. Result: Gears with large numbers of aliases can now be moved.
Story Points: ---
Clone Of: 1194029 Environment:
Last Closed: 2017-01-04 20:23:36 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 1194029    
Bug Blocks: 1277547    

Comment 1 Rory Thrasher 2016-12-12 22:02:02 UTC
QA,

Can we verify that apps with large numbers of aliases can be successfully moved?

Puddle: http://etherpad.corp.redhat.com/puddle-2-2-2016-12-12

1. Setup multi-node env
2. Create the distinct and add node
3. Create one non-scale app and scale app
4. Add 135 alias for app
5. Move those 2 apps

Comment 3 Gaoyun Pei 2016-12-14 02:54:25 UTC
Verify this bug with puddle 2.2/2016-12-12.1

1. Create one scalable app, add 135 alias to the app.
[root@broker ~]# rhc app show app1
app1 @ http://app1-yes.ose22-auto.com.cn/ (uuid: 584ff0da82611d90c4000009)
--------------------------------------------------------------------------
  Domain:     yes
  Created:    8:00 AM
  Gears:      1 (defaults to small)
  Git URL:    ssh://yes-app1-1.com.cn/~/git/app1.git/
  SSH:        yes-app1-1.com.cn
  Deployment: auto (on git push)
  Aliases:    app1-name1.com, app1-name2.com, app1-name3.com, app1-name4.com, app1-name5.com, app1-name6.com, app1-name7.com, app1-name8.com, app1-name9.com,
              app1-name10.com, app1-name11.com, app1-name12.com, app1-name13.com, app1-name14.com, app1-name15.com, app1-name16.com, app1-name17.com, app1-name18.com,
              app1-name19.com, app1-name20.com, app1-name21.com, app1-name22.com, app1-name23.com, app1-name24.com, app1-name25.com, app1-name26.com, app1-name27.com,
              app1-name28.com, app1-name29.com, app1-name30.com, app1-name31.com, app1-name32.com, app1-name33.com, app1-name34.com, app1-name35.com, app1-name36.com,
              app1-name37.com, app1-name38.com, app1-name39.com, app1-name40.com, app1-name41.com, app1-name42.com, app1-name43.com, app1-name44.com, app1-name45.com,
              app1-name46.com, app1-name47.com, app1-name48.com, app1-name49.com, app1-name50.com, app1-name51.com, app1-name52.com, app1-name53.com, app1-name54.com,
              app1-name55.com, app1-name56.com, app1-name57.com, app1-name58.com, app1-name59.com, app1-name60.com, app1-name61.com, app1-name62.com, app1-name63.com,
              app1-name64.com, app1-name65.com, app1-name66.com, app1-name67.com, app1-name68.com, app1-name69.com, app1-name70.com, app1-name71.com, app1-name72.com,
              app1-name73.com, app1-name74.com, app1-name75.com, app1-name76.com, app1-name77.com, app1-name78.com, app1-name79.com, app1-name80.com, app1-name81.com,
              app1-name82.com, app1-name83.com, app1-name84.com, app1-name85.com, app1-name86.com, app1-name87.com, app1-name88.com, app1-name89.com, app1-name90.com,
              app1-name91.com, app1-name92.com, app1-name93.com, app1-name94.com, app1-name95.com, app1-name96.com, app1-name97.com, app1-name98.com, app1-name99.com,
              app1-name100.com, app1-name101.com, app1-name102.com, app1-name103.com, app1-name104.com, app1-name105.com, app1-name106.com, app1-name107.com,
              app1-name108.com, app1-name109.com, app1-name110.com, app1-name111.com, app1-name112.com, app1-name113.com, app1-name114.com, app1-name115.com,
              app1-name116.com, app1-name117.com, app1-name118.com, app1-name119.com, app1-name120.com, app1-name121.com, app1-name122.com, app1-name123.com,
              app1-name124.com, app1-name125.com, app1-name126.com, app1-name127.com, app1-name128.com, app1-name129.com, app1-name130.com, app1-name131.com,
              app1-name132.com, app1-name133.com, app1-name134.com, app1-name135.com

  haproxy-1.4 (Web Load Balancer)
  -------------------------------
    Gears: Located with jbosseap-6

  jbosseap-6 (JBoss Enterprise Application Platform 6)
  ----------------------------------------------------
    Scaling: x1 (minimum: 1, maximum: available) on small gears

2. Move the head gear of app1 from node1 to node2
[root@broker ~]# oo-admin-move --gear_uuid yes-app1-1 -i node2.ose22-auto.com.cn
URL: http://app1-yes.ose22-auto.com.cn
Login: gpei
App UUID: 584ff0da82611d90c4000009
Gear UUID: 584ff0da82611d90c4000009
DEBUG: Source district uuid: 584feef382611dc026000001
DEBUG: Destination district uuid: 584feef382611dc026000001
DEBUG: Getting existing app 'app1' status before moving
DEBUG: Gear component 'jbosseap-6' was running
DEBUG: Stopping existing app cartridge 'jbosseap-6' before moving
DEBUG: Stopping existing app cartridge 'haproxy-1.4' before moving
DEBUG: Force stopping existing app before moving
DEBUG: Gear platform is 'linux'
DEBUG: Creating new account for gear 'yes-app1-1' on node2.ose22-auto.com.cn
DEBUG: Moving content for app 'app1', gear 'yes-app1-1' to node2.ose22-auto.com.cn
Warning: Permanently added '192.168.2.184' (RSA) to the list of known hosts.
Warning: Permanently added '192.168.2.186' (RSA) to the list of known hosts.
Agent pid 13727
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 13727 killed;
DEBUG: Moving system components for app 'app1', gear 'yes-app1-1' to node2.ose22-auto.com.cn
reverse mapping checking getaddrinfo for host-192-168-2-184.openstacklocal [192.168.2.184] failed - POSSIBLE BREAK-IN ATTEMPT!
Agent pid 13735
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 13735 killed;
DEBUG: Starting cartridge 'haproxy-1.4' in 'app1' after move on node2.ose22-auto.com.cn
DEBUG: Starting cartridge 'jbosseap-6' in 'app1' after move on node2.ose22-auto.com.cn
DEBUG: Fixing DNS and mongo for gear 'yes-app1-1' after move
DEBUG: Changing server identity of 'yes-app1-1' from 'node1.ose22-auto.com.cn' to 'node2.ose22-auto.com.cn'
DEBUG: Deconfiguring old app 'app1' on node1.ose22-auto.com.cn after move
Successfully moved gear with uuid 'yes-app1-1' of app 'app1' from 'node1.ose22-auto.com.cn' to 'node2.ose22-auto.com.cn'

3. Check the alias record in /var/lib/openshift/.httpd.d/routes.json was successfully removed on node1 and added on node2

The added alias is still working.

[root@broker ~]# curl -I -H "Host: app1-name111.com" node2.ose22-auto.com.cn
HTTP/1.1 200 OK
Date: Wed, 14 Dec 2016 02:52:41 GMT
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"41714-1470429862000"
Last-Modified: Fri, 05 Aug 2016 20:44:22 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 41714
Cache-control: private
Set-Cookie: GEAR=app1-yes; path=/
Connection: close

4. The same test on non-scalable app also works well.

Comment 5 errata-xmlrpc 2017-01-04 20:23:36 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2017-0017.html

Comment 6 Rory Thrasher 2017-01-04 21:25:57 UTC
Fixed In Version field is too short to list all affected package names:

rubygem-openshift-origin-node-1.38.7.1-1.el6op, rubygem-openshift-origin-frontend-apache-mod-rewrite-0.8.2.1-1.el6op, rubygem-openshift-origin-frontend-apache-vhost-0.13.3.1-1.el6op, rubygem-openshift-origin-frontend-haproxy-sni-proxy-0.5.3.1-1.el6op, rubygem-openshift-origin-frontend-nodejs-websocket-0.4.2.1-1.el6op, openshift-origin-msg-node-mcollective-1.30.3.1-1.el6op