Troubleshooting a Slow API Client in Golang

Troubleshooting a Slow API Client in Golang

Thursday, Dec 13, 2018

@ Chris Suttles

I'm writing an API client in golang, and while testing the API with curl, my results were reasonable (0.8 seconds REAL time), but when I got my API client working in golang with resty, I found that my response time was very slow (over 75 seconds). This is a true (and ugly) story about figuring out what was wrong and resolving the issue.Here's my boilerplate resty code: resty.SetDebug(true) resty.SetTLSClientConfig(&tls.Config{ InsecureSkipVerify: true }) resp, err := resty.
A Brief Comparison of IPv4 and IPv6

A Brief Comparison of IPv4 and IPv6

Sunday, Jan 28, 2018

@ Chris Suttles

IPv4 and IPv6 This post will explore key differences between IPv4 and IPv6. IPv4 has been around for a long time and is what moves data around the internet. IPv6 has also been around for many years at this point, but is finally seeing adoption now that IPv4 addresses are nearly exhausted world wide. There are many papers and posts discussing why adoption of IPv6 is important, so I will instead focus on the technical details and leave the reader to make their own evaluation of the merits of IPv6 adoption.
Clustering Galera on Single Stack IPv6

Clustering Galera on Single Stack IPv6

Sunday, Jul 23, 2017

@ Chris Suttles

While setting up Galera on IPv6 only as part of our move toward multiple controller nodes, I ran into a few challenges. This post explains those challenges and how I dealt with them. Resources I used and config reference I found some good references on the web. The most useful ones including the following: OpenStack HA Guide This very helpful blog post MariaDB/Galera Downloads MariaDB/Galera Docs I also looked at:
Clustering RabbitMQ on IPv6 with OpenStack Ocata

Clustering RabbitMQ on IPv6 with OpenStack Ocata

Monday, May 1, 2017

@ Chris Suttles

As part of our efforts to improve the resilience of OpenStack within sites, we are moving to a multi controller architecture. I decided to tackle the underlying, stateful infrastructure services first. The first of those I looked into was RabbitMQ. RabbitMQ supports clustering, and HA queues, as well as durable queues (queues that persist to disk). The setup seems fairly simple, but unfortunately many things still assume IP means IPv4, and that's exactly where this got interesting.
OpenStack image bootstrap on IPv6

OpenStack image bootstrap on IPv6

Monday, Apr 3, 2017

@ Chris Suttles

In my last post, I detailed a few things I experienced moving the Ocata release of OpenStack to an IPv6 only environment. While the major hurdles are complete, there are still more things to consider Image Automation We build images using Jenkins and Packer, and push those images into glance, which stores them in a Swift backend. That's all still going smooth, but where we ran into trouble is the automation of configuration.
Ocata and IPv6

Ocata and IPv6

Sunday, Mar 26, 2017

@ Chris Suttles

Since I took the lead on the OpenStack deployment in my workplace, IPv6 has been a major goal of our deployment. IPv6 is a first class citizen in our infrastructure, and the other environments that OpenStack coexists with are already running IPv6 only. This made getting OpenStack to run IPv6 only a major milestone, which was finally accomplished during our move to Ocata release. Standards and SSL Termination While running client workload with IPv4 or dual stack is acceptable, or even required in some cases (vendor packaged VMs are notoriously guilty here), the standard for deploying infrastructure is high.

Social Links