5 Reasons to Switch from F5 BIG-IP to NGINX Plus

Last year we compared the price and performance of NGINX Plus to several models of F5 BIG‑IP application delivery controllers (ADCs). We determined that you can save over 80% in Year 1 by switching to NGINX Plus, while equaling or exceeding the performance of F5 appliances.

Editor – For more information about replacing hardware ADCs with NGINX Plus, see these resources.

Blog posts

Migration Guides

BIG‑IP ADCs are costly because of their custom hardware, such as an ASIC to do Layer 4 load balancing in hardware. Custom hardware for load balancing used to be a cost‑effective approach because the equivalent processing power in commodity servers was either not available or far more expensive. But servers have gotten significantly cheaper and faster over time, so custom hardware is now the more expensive option.

Also, by focusing on building hardware appliances, F5 has neglected the needs of modern applications, which demand the flexibility only available from software. What NGINX Plus offers instead is a software load balancer and application delivery platform designed for the needs of modern applications and today’s IT infrastructure – in particular, the cloud and DevOps. As software, NGINX Plus excels in providing modern applications with the Layer 7 features and flexibility developers and operations teams need.

This blog post highlights 5 unique features of NGINX Plus that you don’t get from F5 BIG‑IP application delivery controllers:

  1. Service discovery integration – Apps that use microservices need sophisticated service discovery capabilities, a cutting‑edge feature of NGINX Plus.
  2. Serving static content – Serving static content is not possible with F5 BIG‑IP, but it’s a core feature of NGINX Plus.
  3. Run bare metal on ARM servers – ARM servers offer savings on energy costs. NGINX Plus runs natively on ARM, while F5 BIG‑IP doesn’t.
  4. Run inside a Docker container – Docker has exploded in popularity because it makes developing, deploying, and managing apps so much easier. NGINX Plus works smoothly within a Docker container.
  5. Upgrade without a reboot – Upgrades can seem constant. With NGINX Plus, your uptime can be constant as well, even across upgrades.

1. Service Discovery Integration

According to a survey we ran last year, more than 68% of organizations are using or investigating microservices. As you look into microservices, you’ll find that one of the biggest challenges is service discovery. In a microservices‑based architecture, services are assigned IP addresses and ports dynamically, meaning service location is unpredictable. For a service to be accessible, it must register its IP address and port with a “service registry” such as Consul, etcd, or ZooKeeper. Clients (such as NGINX Plus) that need to send traffic to a service then query the service registry to retrieve the service’s IP address and port.

In the Fabric Model of the NGINX Microservices Reference Architecture, an NGINX Plus instance performs service discovery on behalf of its colocated microservice by making DNS requests to a service registry
NGINX Plus can use DNS SRV records to perform service discovery in a microservices environment

The service registry provides service location information in the form of a DNS SRV record. A DNS SRV record differs from a standard DNS record in that it includes the port number, which is dynamically assigned. The load balancer for a microservices‑based application must be able to extract the IP address and port information from the DNS SRV record provided by the service registry.

This snippet shows configures NGINX Plus to query a service registry and parse the DNS SRV records it returns:

resolver service-registry-address;

upstream my_service {
zone backend 64k;
server service-hostname service=http resolve;
}

server {
# ...
location /my_service {
# ...
proxy_pass http://my_service;
}
}

Specify the IP address of the service registry with the resolver directive and the hostname of the service as the first parameter to the server directive. The service=http parameter enables parsing of DNS SRV records and the resolve parameter tells NGINX to re‑resolve the hostname periodically. Here we use the default period, which is the time‑to‑live (TTL) included in the DNS record. You can set a different period with the valid parameter to the resolver directive.

If there are multiple copies of a service, the service registry returns the IP addresses and ports of all the services in a single DNS SRV record. In that case NGINX Plus load balances traffic among them.

F5 BIG‑IP is not capable of parsing DNS SRV records, so it cannot be used to load balance traffic in a microservices environment.

2. Serve Static Content

NGINX Plus can load balance, cache content from, and monitor your apps. It can also be an origin server for your static content. NGINX Plus is built on top of the open source NGINX software, used at more than 200 million websites to deliver static content to users. Static content can include images, CSS, JavaScript, and other assets that make up a web page.

I didn’t want just a load balancer; I also wanted to serve static content….that narrowed [my product search] down to NGINX Plus right away.
– Dan Chamberlain, Principal Architect, Bluestem Brands

With the following configuration snippet, when NGINX Plus receives a request for www.example.com/images/image.jpg it returns the file /path/to/images/image.jpg to the requester.

server {
server_name www.example.com;
# ...
location /images {
alias /path/to/images;
}
}

F5 BIG‑IP can load balance and cache content like NGINX Plus can, but it cannot serve static content. With F5, you have to deploy a separate web server running Apache, NGINX, or IIS.

3. Run Bare Metal on ARM Servers

The NGINX Plus application delivery controller can run on ARM servers like the HP Moonshot blade serverARM processors are well known for powering smartphones and other mobile devices due to their low energy requirements. You may not know, however, that you can use ARM servers in the data center to reduce energy consumption while still maintaining a high level of performance. Chip maker AMD predicts ARM servers will have 20% market share by 2020.

NGINX, Inc. provides full support for NGINX Plus running on ARM servers with the ARM version of Ubuntu Linux 14.04/16.04 LTS. The installation procedure, configuration, and feature set are all the same as with the x86 version, ensuring a smooth transition if you decide to move to ARM servers. (In addition to ARM servers, NGINX Plus runs on x86 and PowerPC [ppc64_le] servers, such as the IBM POWER8.)

F5 BIG‑IP can only run on proprietary x86‑based appliances or on commodity x86 servers with the assistance of a hypervisor, such as VMWare ESXi.

4. Run Inside a Docker Container

Open source NGINX is one of the most frequently downloaded applications on Docker Hub, with over 10 million pulls to date. Developers who are building applications with Docker overwhelmingly choose NGINX as a crucial part of their application stack.

NGINX Plus can also run inside a Docker container, fully supported by NGINX, Inc. For instructions on building your own NGINX Plus image for Docker, complete with sample Dockerfiles for Ubuntu and CentOS/Oracle Linux/Red Hat systems, see Deploying NGINX and NGINX Plus with Docker on our blog.

Being able to run inside a Docker container enables interesting architectures such as the Fabric Model of the NGINX Microservices Reference Architecture, in which NGINX Plus runs in every container to provide load balancing, routing, and SSL/TLS termination services.

In the Fabric Model of the Microservices Reference Architecture from NGINX, NGINX Plus is deployed within each container and becomes the forward and reverse proxy for all HTTP traffic going in and out of the containers
The Fabric Model features an NGINX Plus instance for every containerized microservice instance

F5 BIG‑IP cannot run inside of a Docker container; it is only available as a virtual or hardware appliance.

5. Upgrade Without a Reboot

It’s extremely important to keep your software up‑to‑date to ensure you have the latest bug fixes and security patches. NGINX Plus makes this easy to do by enabling you to upgrade software without having to reboot your server or drop any packets.

The following example shows how NGINX Plus can be upgraded using standard package management tools, in this case apt. When the command completes, it reloads the NGINX Plus process to run the new version of the software, all with no downtime.

# apt-get update
...
# apt-get install nginx-plus
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
nginx-plus
1 upgraded, 0 newly installed, 1 to remove and 43 not upgraded.
Need to get 2373 kB of archives.
After this operation, 1547 kB disk space will be freed.
Do you want to continue? [Y/n] y
...
Setting up nginx-plus (1.11.5-1~xenial) ...

F5 BIG‑IP requires a full reboot in order to upgrade software.

Conclusion

NGINX Plus can save you over 80% compared to an equivalent F5 BIG‑IP, and provides a breadth of features not available from the F5. Features such as the ability to read DNS SRV records and run inside of a container are both critical to supporting microservices and modernizing legacy applications.

Contact our sales team to learn more about NGINX Plus and try it free for 30 days.

Cover image
Microservices: From Design to Deployment
The complete guide to microservices development