Menu

Load Testing with IPv6 and the RackSpace Cloud

Over in this post, I showed how easy it is to configure IPv6 load testing in Load Tester — it’s all very easy with the possible exception of this part: “you need a load engine with IPv6 connectivity”. If you don’t have IPv6 connectivity from your location with sufficient bandwidth for testing or you need to test from another location, then you will access to a load generator (we call them load engines) with an IPv6 connection. Surprisingly, this can still be a challenge. Indeed, I’m a bit embarrassed to admit that our own cloud engines don’t support IPv6 because they run on Amazon’s EC2 infrastructure, which does not provide IPv6 connectivity (yet).

Fortunately, the guys over at RackSpace have baked IPv6 into their OpenCloud infrastructure – making the lives of load testers easier 🙂  Load Tester does not yet have direct support for RackSpace’s cloud APIs, so it cannot create and terminated cloud engines via the UI as it can with Amazon’s EC2. However, it is still relatively simple to setup a load engine in the RackSpace cloud with IPv6 support – I’ll walk you through the steps:

There are a few major steps. I’ll cover each one in detail:

  1. Provision (creating) a virtual machine within the RackSpace Cloud
  2. Install, configure and run the Load Engine software
  3. Connect to the engine from Load Tester and configure it to use IPv6
  4. Test the setup
  5. Save an image and shut down the load engine

Step 1: Provision a virtual machine

First, you will need a cloud account with RackSpace – if you don’t have one you can set up an account quickly with a credit card. You will be charged only for the hours that you run your cloud engines.

Next, log into your dashboard and press the Create Server button. You will be asked to choose the name, location and OS for the virtual machine. The name is used internally and is assigned to the VM – within those constraints you can choose any name for the VM. Load Tester can run on any of the OSes that Rackspace currently supports. For this article, I will demonstrate CentOS/RedHat since that is what we use most often – the configuration required for the other OSes is nearly identical.

Creating a server (load engine)

Farther down the configuration screen, you will also be asked to choose a memory size. We typically use 2G engines so I recommend starting there. Load Tester’s memory requirements are highly dependent on the individual scenarios, so you may need to scale this up for large tests. For typical test configurations, a 2G engine will have a capacity well over 1000 VUs. Sizes above 8G are very rarely practical – the threading and network connection limits will typically be reached before that memory capacity is exceeded. After selecting the memory size, press the Create Server button at the bottom. The server provisioning will start and progress is indicated on-screen. You will be given the root password for the server – be sure to record this – you will need it later! When provisioning is complete, you will see something like:

Note that there are 3 IP addresses. The ServiceNet IP is of no use to us – it connects within the RackSpace infrastructure and to your other VMs. The two PublicNet addresses are what we will need. Record them or keep this window open – we’ll need this information, too. With the instance running, step 1 is done.

Step 2: Install the Load Engine software

To install the software, you will first need to shell into the VM, using one of the 2 public IP addresses above and the root password. For example:

ssh root@166.78.5.85

To download the software, you will need the URL of the installer file, which you can get from our download page. On that page, choose the Load Engine drop-down and copy the URL for the 64-bit Linux engine. For example:

http://d1c14mw0senw0u.cloudfront.net/download/release/5x/installers/LoadEngine_LinuxX64_5.1.11161.bin

Don’t use this specific URL – you will want to get the version that corresponds to the version of Load Tester you are running, which is probably the most recent.

Then download the installer in the VM – for example:

[root@ipv6engine ~]# wget <installer-url-goes-here>

When the file has been downloaded, you should make it executable and then run it:

[root@ipv6engine ~]# chmod +x LoadEngine_LinuxX64_5.1.11161.bin
[root@ipv6engine ~]# ./LoadEngine_LinuxX64_5.1.11161.bin -i console

Accept all the defaults (by pressing ENTER key or Y to accept license) to complete the installation.

Because the VM has three IP addresses, we want to be sure that it selects the correct address to listen for connections from Load Tester. To do this, we will need to edit two configuration files. The first file, Load_Engine.lax already exists and needs to be edited. Open it in your favorite text editor, such as:

[root@ipv6engine ~]# vi Web_Performance_Load_Engine/Load_Engine.lax

Find the line that starts with:

lax.nl.java.option.additional=

and add to the end of that line:

-Djava.rmi.server.hostname=1.2.3.4

Where 1.2.3.4 should be replaced with the IPv4 or IPv6 address of the VM – choose the one you will use to connect from Load Tester on your workstation to the load engine. If you are not sure if you have IPv4 or IPv6 connectivity from your workstation, you can check it here. Save the file.

Next, we need to create a file called

system.properties

within the Load Tester installation folder. For example:

[root@ipv6engine ~]# vi Web_Performance_Load_Engine/system.properties

Add these lines:

EngineRMIAddress=<ipaddress>
RmiRegistryPort=1099
RmiEnginePort=1099

again replacing <ipaddress> with the IPv4 or IPv6 address of the VM. Save the file.

The Load Engine is now ready to run…but before we do that we need to ensure that Load Tester will be able to connect to port 1099 on this VM. You can shut down the default firewall like this:

[root@ipv6engine ~]# service iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]

If you plan to keep the engines running for long, then I recommend configuring the firewall rather than shutting it down. The configuration of iptables is outside the scope of this article, so I’ll leave it as an exercise for the reader.

Now you can start the Load Engine:

[root@ipv6engine ~]# ./Load_Engine
strings: '/lib/libc.so.6': No such file
------------------------------------------------------------------
Diagnostic settings:
Debug.show_time=true
------------------------------------------------------------------

[20:45:23.452] Engine listening on 166.78.5.85:1099
[20:45:23.454] Using hostname override: 166.78.5.85
[20:45:23.638] Unable to locate source for performance counters: [DiskReads, Dis
kWrites, DiskIoQueueLength, DiskMillisecondsInIo, DiskWeightedMillisecondsInIo].

Please include a copy of diagnostic log for review by Web Performance Support.
[20:45:23.935] Load Engine started.
Use the quit command to stop the engine.

 Step 3: Connect to the engine from Load Tester and configure it to use IPv6

Within Load Tester, open the Engines tab and press the Add Engine button. Then select Add remote load engine and supply the IP address:

Add the load engine to Load Tester

Then press the OK button to add the engine to Load Tester. If there is a version mis-match between the controller (Load Tester’s UI) and the engine, you will see a message like this:

Version mis-match warning

If the version of Load Tester is older, then you will either need to re-install an older version of the Load Engine or upgrade Load Tester. If the version is newer, Load Tester can upgrade the engine for you. Press OK.

To upgrade the engine:

  1. Select the engine(s) from the list and press the Upgrade button
  2. Return to the terminal running the Load Engine and type quit <ENTER> to stop the engine
  3. Restart the engine
  4. Check the box next to the engine name/address in the Engines View to reconnect

To upgrade Load Tester, choose Software Updates > Find and Install from the Help menu. There are detailed instructions for the process in the product documentation (which is also in the Help menu).

If Load Tester shows Idle in the status column for the engine, then you are successfully connected!

You should now configure the IP addresses for the engine to use, as described in this post.

Step 4: Test the setup

Now you will want to test the configuration – to verify that the engine will send IPv6 traffic. The best way to do this is to run a simple load test (only a single VU is needed) using only this load engine. If you are not familiar with Load Tester, you’ll want to explore our tutorials and videos to complete this step. For the purposes of the task at hand, I recommend using the simplest possible testcase – such as the homepage of the site.

If the site is ONLY accessible via IPv6, then a successful test (no errors) indicates correct configuration of the engine for IPv6. But if it is not, then other means are required to verify the test used IPv6. For example, you could check the server logs for the requests arriving from the IP address of the load engine:

Server log confirming a request from the IPv6 address of the load engine

Success!!!  You’re ready to load test with IPv6!

Step 5: Save an image and shut down the load engine

Like all cloud providers, you will  be charged by the hour when the VMs are running – whether you are using them or not. So between runs or after you are done, you will want to shut down the VM(s) running the load engines. You can do this by choosing the Delete Server option for the server in the RackSpace Cloud control panel.

Delete load engine VM

If you forget to do this, you could rack up a much larger bill than you expected!

But before doing this, you will probably want to create a load engine image. This will take a snapshot of the load engine VM so that you can quickly start new VMs without performing most of the steps illustratated above. You can do this with the Create Image option in the menu (shown above).

With an image created, you can skip many of the steps when launching load engines in the future. Simply choose this image when creating a new VM. Your new VM will have the Load Engine software already installed and configured. However, new VMs created from that image will have different IP addresses – so you will need to edit the two configuration files from Step 2 with the new IP address before starting the Load Engine software.

If you have any questions, please comment here or use our support system.

Chris Merrill, Chief Engineer

 

Add Your Comment

You must be logged in to post a comment.

Resources

Copyright © 2019 Web Performance, Inc.

A Durham web design company

×

(1) 919-845-7601 9AM-5PM EST

Just complete this form and we will get back to you as soon as possible with a quote. Please note: Technical support questions should be posted to our online support system.

About You
What you Need