Edge for Private Cloud v. 4.17.09
Which Edge versions can you update to 4.17.09
You can update Apigee Edge version 4.17.01.0x/4.17.05.0x to 4.17.09 using this procedure.
If you have a version of Edge previous to version 4.16.01, then you must first migrate to version 4.16.01.x and then update to version 4.17.09.
Who can perform the update
The user running the update should be the same as the user who originally installed Edge, or a user running as root.
After you install the Edge RPMs, any user can configure them.
Which components must you update
You must update all Edge components. Edge does not support a setup that contains components from multiple versions.
Automatic propagation of property settings
If you have set any properties by editing .properties files in /opt/apigee/customer/application then these values are retained by the update.
Required addition of SMTPMAILFROM configuration parameter
Edge 4.17.05 added a new required parameter to the configuration file used when you enable an SMTP server. If you are updating from 4.17.01, then you must set SMTPMAILFROM in the configuration file when enabling the SMTP server.
API BaaS version 4.17.09 also added support for the SMTPMAILFROM property. When updating API BaaS from either 4.17.01 or 4.17.05, you must set SMTPMAILFROM in the configuration file.
This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>"
Update prerequisites
Take care of following prerequisites before upgrading Apigee Edge:
- Backup all nodes
Before you update, it is recommended to perform a complete backup of all nodes for safety reasons. Use the procedure for your current version of Edge to perform the backup.
This allows you to have a backup plan, in case the update to a new version doesn’t function properly. For more information on backup, see Backup and Restore. - Ensure Edge is running
Ensure that Edge is up and running during update process by using the command:
> /opt/apigee/apigee-service/bin/apigee-all status
Handling a failed update
In the case of an update failure, you can try to correct the issue, and then run update.sh again. You can run the update multiple times and it continues the update from where it last left off.
If the failure requires that you roll back the update to your previous version, see 4.17.09 Rollback Process for more.
Logging update information
By default, the update.sh utility writes log information to:
/opt/apigee/var/log/apigee-setup/update.log
If the user running the update.sh utility does not have access to that directory, it writes the log to the /tmp directory as a file named update_username.log.
If the user does not have access to /tmp, the update.sh utility fails.
Zero-downtime update
A zero-downtime update, or rolling update, lets you update your Edge installation without bringing down Edge.
Zero-downtime update is only possible with a 5-node configuration and larger.
The key to zero-downtime upgrading is to remove each Router, one at a time, from the load balancer. You then update the Router and any other components on the same machine as the Router, and then add the Router back to the load balancer.
- Update the machines in the correct order for your installation as described below in "Order of machine update".
- When it is time to update the Routers, select any one Router and make it unreachable, as described in Enabling/Disabling Server (Message Processor/Router) Reachability.
- Update the selected Router and all other Edge components on the same machine as the Router. All Edge configurations show a Router and Message Processor on the same node.
- Make the Router reachable again.
- Repeat steps 2 through 4 for the remaining Routers.
- Continue the update for any remaining machines in your installation.
Take care of the following before/after update:
- On combined Router and Message Processor node:
- Before update – perform the following:
- Make the Router unreachable.
- Make the Message Processor unreachable.
- After update - perform the following:
- Make the Message Processor reachable.
- Make the Router reachable.
- Before update – perform the following:
- On single Router node:
- Before update, make the Router unreachable.
- After update, make the Router reachable.
- On single Message Processor node:
- Before update, make the Message Processor unreachable.
- After update, make the Message Processor reachable.
Using a silent configuration file
You must pass a silent configuration file to the update command. The silent configuration file should be the same one you used to install Edge 4.17.01.
Procedure for updating to 4.17.09 on a node with an external internet connection
Use the following procedure to update the Edge components on a node:
- If present, disable any CRON jobs configured to perform a repair operation on Cassandra until after the update completes.
- Log in to your node as root to install the Edge RPMs.
Note: While RPM installation requires root access, you can perform Edge configuration without root access. - Install yum-utils and
yum-plugin-priorities:
> sudo yum install yum-utils
> sudo yum install yum-plugin-priorities - Disable SELinux as described in Install the Edge apigee-setup utility.
- If you are installing on AWS, run the following yum-configure-manager command:
> sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional - Download the Edge 4.17.09 bootstrap_4.17.09.sh file to /tmp/bootstrap_4.17.09.sh:
> curl https://software.apigee.com/bootstrap_4.17.09.sh -o /tmp/bootstrap_4.17.09.sh - Install the Edge 4.17.09 apigee-service utility and
dependencies:
> sudo bash /tmp/bootstrap_4.17.09.sh apigeeuser=uName apigeepassword=pWord
where uName:pWord are the username and password you received from Apigee. If you omit pWord, you will be prompted to enter it.
By default, the installer checks to see that you have Java 1.8 installed. If you do not, it installs it for you. Use the JAVA_FIX option to specify how to handle Java installation. JAVA_FIX takes the following values:
I = Install OpenJDK 1.8 (default)
C = Continue without installing Java
Q = Quit. For this option, you have to install Java yourself. - Use apigee-service to
update the apigee-setup
utility:
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup update - Update the apigee-validate
utility on the Management Server:
> /opt/apigee/apigee-service/bin/apigee-service apigee-validate update - Update the apigee-provision
utility:
> /opt/apigee/apigee-service/bin/apigee-service apigee-provision update - Run the update utility on your nodes in the order described below in "Order of machine
update" below:
> /opt/apigee/apigee-setup/bin/update.sh -c component -f configFile
The only requirement on the config file is that the configuration file must be accessible or readable by the "apigee" user.
Use the “-c” option to specify the component to update. The list of possible components includes:
ldap = OpenLDAP
cs = Cassandra
zk = Zookeeper
qpid = qpidd
ps = postgresql
edge =All Edge components except Edge UI: Management Server, Message Processor, Router, QPID Server, Postgres Server
ui = Edge UI
all = update all components on machine (only use for an Edge aio installation profile or an API BaaS asa installation profile)
e = ElasticSearch
b = API BaaS Stack
p = API BaaS Portal
ebp = ElasticSearch, API BaaS Stack, and API BaaS Portal on the same node - Test the update by running the apigee-validate utility on the Management Server, as described in Test the install.
To later rollback the update, use the procedure described in 4.17.09 Rollback Process.
Procedure for updating to 4.17.09 from a local repo
If your Edge nodes are behind a firewall, or in some other way are prohibited from accessing the Apigee repository over the Internet, then you can perform the update from a local repository, or mirror, of the Apigee repo.
After you create a local Edge repository, you have two options for updating Edge from the local repo:
- Create a .tar file of the repo, copy the .tar file to a node, and then update Edge from the .tar file.
- Install a webserver on the node with the local repo so that other nodes can access it. Apigee provides the Nginx webserver for you to use, or you can use your own webserver.
To update from a local 4.17.09 repo:
- Create a local 4.17.09 repo as described in "Create a local Apigee repository" at Install the Edge apigee-setup
utility.
Note: If you already have an existing 4.17.01/4.17.05 repo, you can add the 4.17.09 repo to it as described in "Update a local Apigee repository" at Install the Edge apigee-setup utility. -
To install apigee-service from a .tar file:
- On the node with the local repo, use the following command to package the local repo
into a single .tar file named /opt/apigee/data/apigee-mirror/apigee-4.17.09.tar.gz:
> /opt/apigee/apigee-service/bin/apigee-service apigee-mirror package - Copy the .tar file to the node where you want to update Edge. For example, copy it to the /tmp directory on the new node.
- On the new node, untar the file to the /tmp directory:
> tar -xzf apigee-4.17.09.tar.gz
This command creates a new directory, named repos, in the directory containing the .tar file. For example /tmp/repos. - Install the Edge apigee-service utility and dependencies from /tmp/repos:
> sudo bash /tmp/repos/bootstrap_4.17.09.sh apigeeprotocol="file://" apigeerepobasepath=/tmp/repos
Notice that you include the path to the repos directory in this command.
- On the node with the local repo, use the following command to package the local repo
into a single .tar file named /opt/apigee/data/apigee-mirror/apigee-4.17.09.tar.gz:
-
To install apigee-service using the Nginx webserver:
- Configure the Nginx web server as described in "Install from the repo using the Nginx webserver" at Install the Edge apigee-setup utility.
- On the remote node, download the Edge bootstrap_4.17.09.sh file to
/tmp/bootstrap_4.17.09.sh:
> /usr/bin/curl http://uName:pWord@remoteRepo:3939/bootstrap_4.17.09.sh -o /tmp/bootstrap_4.17.09.sh
where uName:pWord are the username and password you set above for the repo, and remoteRepo is the IP address or DNS name of the repo node. - On the remote node, install the Edge apigee-service utility and dependencies:
> sudo bash /tmp/bootstrap_4.17.09.sh apigeerepohost=remoteRepo:3939 apigeeuser=uName apigeepassword=pWord apigeeprotocol=http://
where uName:pWord are the repo username and password.
- Use apigee-service to
update the apigee-setup utility:
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup update - Update the apigee-validate
utility on the Management Server.
> /opt/apigee/apigee-service/bin/apigee-service apigee-validate update - Update the apigee-provision
utility:
> /opt/apigee/apigee-service/bin/apigee-service apigee-provision update - Run the update utility on your nodes in the order described below in "Order of machine
update" below:
> /opt/apigee/apigee-setup/bin/update.sh -c component -f configFile
The only requirement on the config file is that the configuration file must be accessible or readable by the "apigee" user.
Use the “-c” option to specify the component to update. The list of possible components includes:
ldap = OpenLDAP
cs = Cassandra
zk = Zookeeper
qpid = qpidd
ps = postgresql
edge =All Edge components except Edge UI: Management Server, Message Processor, Router, QPID Server, Postgres Server
ui = Edge UI
all = update all components on machine (only use for an Edge aio installation profile or an API BaaS asa installation profile)
e = ElasticSearch
b = API BaaS Stack
p = API BaaS Portal
ebp = ElasticSearch, API BaaS Stack, and API BaaS Portal on the same node - Test the update by running the apigee-validate utility on the Management Server, as described in Test the install.
To later rollback the update, use the procedure described in 4.17.09 Rollback Process.
Order of machine update
The order that you update the machines in an Edge installation is important. The most important considerations to an update are:
- You must update all Cassandra and ZooKeeper nodes before you update any other nodes.
- For any machine with multiple Edge components (Management Server, Message Processor, Router, QPID Server but not Postgres Server), use the "-c edge" option to update them all at the same time.
- If a step specifies that it should be performed on multiple machines, perform it in the specified machine order.
- There is no separate step to update Monetization. It is updated when you specify the "-c edge" option.
For a 1-host standalone installation
- If you are updating from 4.17.01, set SMTPMAILFROM in your configuration file if
you have enabled SMTP on Edge. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra and ZooKeeper:
> /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile - Update Qpid and Postgres:
> /opt/apigee/apigee-setup/bin/update.sh -c qpid,ps -f configFile - Start postgresql:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql start - Update LDAP:
> /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile - Update the remaining Edge components:
> /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile - Update Edge UI:
> /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
For a 2-host standalone installation
See Installation Topologies for the list of Edge topologies and node numbers.
- If you are updating from 4.17.01, set SMTPMAILFROM in your configuration file if
you have enabled SMTP on Edge. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra and ZooKeeper on machine 1:
> /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile - Update Qpid and Postgres on machine 2:
> /opt/apigee/apigee-setup/bin/update.sh -c qpid,ps -f configFile - Start postgresql on machine 2:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql start - Update LDAP on machine 1:
> /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile - Update Edge components on machine 2 and 1:
> /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile - Update UI on machine 1:
> /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
For a 5-host clustered installation
See Installation Topologies for the list of Edge topologies and node numbers.
- If you are updating from 4.17.01, set SMTPMAILFROM in your configuration file if
you have enabled SMTP on Edge. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra and ZooKeeper on machine 1, 2, and 3:
> /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile - Update Qpid and Postgres on machine 4:
> /opt/apigee/apigee-setup/bin/update.sh -c qpid,ps -f configFile - Start postgresql on machine 4:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql start - Repeat steps 3 and 4 on machine 5.
- Update LDAP on machine 1:
> /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile - Update Edge components on machine 4, 5, 1, 2, 3:
> /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile - Update UI on machine 1:
> /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
For a 9-host clustered installation
See Installation Topologies for the list of Edge topologies and node numbers.
- If you are updating from 4.17.01, set SMTPMAILFROM in your configuration file if
you have enabled SMTP on Edge. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra and ZooKeeper on machine 1, 2, and 3:
> /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile - Update Qpid and Postgres on machine 6:
> /opt/apigee/apigee-setup/bin/update.sh -c qpid,ps -f configFile - Start postgresql on machine 6:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql start - Repeat steps 3 and 4 on machine 7.
- Update LDAP on machine 1:
> /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile - Update Edge components on machine 6, 7, 8, 9, 1, 4, and 5 in that order:
> /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile - Update UI on machine 1:
> /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
For a 13-host clustered installation
See Installation Topologies for the list of Edge topologies and node numbers.
- If you are updating from 4.17.01, set SMTPMAILFROM in your configuration file if
you have enabled SMTP on Edge. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra and ZooKeeper on machine 1, 2, and 3:
> /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile - Update Qpid and Postgres on machine 12:
> /opt/apigee/apigee-setup/bin/update.sh -c qpid,ps -f configFile - Start postgresql on machine 12:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql start - Repeat steps 3 and 4 on machine 13.
- Update LDAP on machine 4 and 5:
> /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile - Update Edge components on machine 12, 13, 8, 9, 6, 7, 10, and 11 in that order:
> /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile - Update UI on machine 6 and 7:
> /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
For a 12-host clustered installation
See Installation Topologies for the list of Edge topologies and node numbers.
- If you are updating from 4.17.01, set SMTPMAILFROM in your configuration file if
you have enabled SMTP on Edge. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra and ZooKeeper:
- On machines 1, 2 and 3 in Data Center 1:
> /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile - On machines 7, 8, and 9 in Data Center 2
> /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile
- On machines 1, 2 and 3 in Data Center 1:
- Update qpidd:
- Machines 4, 5 in Data Center 1
- Update qpidd on
machine 4:
> /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile - Repeat step 1 on machine 5.
- Update qpidd on
machine 4:
- Machines 10, 11 in Data Center 2
- Update qpidd on
machine 10:
> /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile - Repeat step 1 on machine 11.
- Update qpidd on
machine 10:
- Machines 4, 5 in Data Center 1
-
Update postgresql:
-
Machines 6 in Data Center 1
> /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql start -
Machines 12 in Data Center 2
> /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql start
-
- Update LDAP:
- Machines 1 in Data Center 1
> /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile - Machines 7 in Data Center 2
> /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile
- Machines 1 in Data Center 1
- Update Edge components:
- Machines 4, 5, 6, 1, 2, 3 in Data Center 1
> /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile - Machines 10, 11, 12, 7, 8, 9 in Data Center 2
> /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
- Machines 4, 5, 6, 1, 2, 3 in Data Center 1
- Update UI:
- Machine 1 in Data Center 1:
> /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile - Machine 7 in Data Center 2:
> /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
- Machine 1 in Data Center 1:
For a 7-host API BaaS installation
- Set SMTPMAILFROM in your
configuration file. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra on machine 5, 6, and 7:
> /opt/apigee/apigee-setup/bin/update.sh -c cs -f configFile -
Update ElasticSearch and API BaaS Stack on machine 1, 2, and 3:
> /opt/apigee/apigee-setup/bin/update.sh -c e,b -f configFile - Update API BaaS Portal on machine 4:
> /opt/apigee/apigee-setup/bin/update.sh -c p -f configFile
For a 10-host API BaaS installation
- Set SMTPMAILFROM in your
configuration file. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra on machine 8, 9, and 10:
> /opt/apigee/apigee-setup/bin/update.sh -c cs -f configFile - Update ElasticSearch on machine 1, 2, and 3:
> /opt/apigee/apigee-setup/bin/update.sh -c e -f configFile - Update API BaaS Stack on machine 4, 5, and 6:
> /opt/apigee/apigee-setup/bin/update.sh -c b -f configFile - Update API BaaS Portal on machine 7:
> /opt/apigee/apigee-setup/bin/update.sh -c p -f configFile
For a two data center API Baas installation
This procedure requires that you update the Cassandra nodes in both data centers. If you are sharing those Cassandra nodes with Edge, then you typically update those nodes as part of updating Edge.
- Set SMTPMAILFROM in your
configuration files. This parameter has the form:
SMTPMAILFROM="My Company <myco@company.com>" - Update Cassandra keyspaces with correct replication factor for the two data centers. You
only have to run this step once on any Cassandra server in either data center:
Note: The commands below all set the replication factor to "3", indicating three Cassandra nodes in the cluster. Modify this value as necessary for your installation.- Start the Cassandra cqlsh utility:
> /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP - Execute the following CQL commands at the "cqlsh>" prompt to set the replication
levels for Cassandra keyspaces:
- cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "Apigee_Baas" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- View the keyspaces by using the command:
cqlsh> select * from system.schema_keyspaces; - Exit cqlsh:
cqlsh> exit
- Start the Cassandra cqlsh utility:
- (Only if you did not update Cassandra as part of updating
Edge) Update Cassandra nodes in data center 1, one machine at a time:
> /opt/apigee/apigee-setup/bin/update.sh -c cs -f configFile - (Only if you did not update Cassandra as part of updating
Edge) Update Cassandra nodes in data center 2, one machine at a time:
> /opt/apigee/apigee-setup/bin/update.sh -c cs -f configFile - Update ElasticSearch on machines in data center 1, one machine at a time:
> /opt/apigee/apigee-setup/bin/update.sh -c e -f configFile - Update ElasticSearch on machines in data center 2, one machine at a time:
> /opt/apigee/apigee-setup/bin/update.sh -c e -f configFile - Update API BaaS Stack on machines in data center 1, one machine at a time:
> /opt/apigee/apigee-setup/bin/update.sh -c b -f configFile - Update API BaaS Stack on machines in data center 2, one machine at a time:
> /opt/apigee/apigee-setup/bin/update.sh -c b -f configFile - Update API BaaS Portal on machines in data center 1, one machine at a time:
> /opt/apigee/apigee-setup/bin/update.sh -c p -f configFile - Update API BaaS Portal on machines in data center 2, one machine at a time:
> /opt/apigee/apigee-setup/bin/update.sh -c p -f configFile - Update BaaS keyspace values. These keyspace have to be set for replication at install time,
but do not have to be at run time. Removing replication also saves Cassandra memory.
You only have to run this step once on any Cassandra server in either data center:- Start the Cassandra cqlsh utility:
> /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP - Execute the following CQL commands to set the replication levels for Cassandra
keyspaces:
- cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
- cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
- View the keyspaces by using the command:
cqlsh> select * from system.schema_keyspaces; - Exit cqlsh:
cqlsh> exit
- Start the Cassandra cqlsh utility:
For a non-standard installation
If you have a non-standard installation, then update Edge components in the following order:
- ZooKeeper
- Cassandra
- qpidd, ps
- LDAP
- Edge, meaning the "-c edge" profile on all nodes in the order: nodes with Qpid server,
Postgres server, Management Server, Message Processor, and Router.
Note: If the node has both Qpid server and Postgres server installed, run the "-c edge" profile step. - Edge UI