MySQL 8.0.12: The Devil Is In The Detail

More than a billion views now use MySQL to access post, comment, member, and more. As we have evolved the product and added new functionality, the underlying technologies that power OpenSooq have changed substantially. We have dozens of background tasks that handle things like payments and analytics. Many of the queries that are run by these tasks are expensive SELECTs, and we were starting to notice an impact on frontend performance. 

To help improve OpenSooq even more, we

Continue Reading

Running Kubernetes on AWS EC2

This article will walk-through installing and setting up Kubernetes on AWS instances step by step, This article not for people looking for fully automated command to setup Kubernetes cluster.

Note: This article not setup Kubernetes with SSL, and by default you should know AWS already.

Kubernetes Cluster Details:
1-To start install Kubernetes cluster you will need the below:
2- 3 AWS micro instances.
3- Kubernetes 1.9.0
4- Docker 1.13
5- Etcd 3.2
6-

Continue Reading

Availability-zone-aware DNS Service-Discovery with DNSMasq and Ansible

In opensooq we heavily implement SOA (Service-oriented architecture) and we have a lot of Microservices. And since we have a very scalable dynamic environment that keeps changing, we need some sort of service discovery.

DNS Service Discovery allow us to access our microservices and supportive services by name. It’s not an alternative to load-balancing but a complement to that. As a rule of thumb we place two load-balancers in each availability, and we have DNS round-robin load-balancing for the load

Continue Reading

Solr – InMemory

Apache Solr is one of the most popular search engine nowadays, as known it’s a Java application. In this article, we will share with you the result of hosting solr data in the memory.

To achieve this experiment, we have created a tmpfs and copied Solr application ( with all data ) into the tmpfs folder. At, the same time had another instance (with same hardware and software specs) that running Solr on disk.

* Note : this is Solr 4.8 

The

Continue Reading

Moving from MongoDB 2.6 Cluster to MongoDB 3.2 Replica Set

Last year MongoDB released v3.2 of their database, with the same storage engine that has been released in v3.0 WiredTiger. As known, WiredTiger performs document-level locking during writes touting to offer a huge improvement over locks on the entire database or collection in the previous 2.6 version.

We did many researches on storage engine selection, especially in the comparison between Percona Mongo32-Server that supports multiple storage engines such as InMemory,RocksDB,PerconaFS and the official Mongo3.2 that supports InMemory and WiredTiger.

Here is

Continue Reading

Running SolrCloud 5.X on Docker with 3 steps

Docker is all the rage at the moment! It was recently selected as Gartner Cool Vendor in DevOps. As you may already know, Docker is a platform to build and deploy applications as self-contained units. Those units, called containers, can be executed consistently on a developer laptop or production server. Since containers include all their dependencies, they are truly portable. And, compared to normal virtual machine images, Docker containers are much more lightweight because they don’t need as much

Continue Reading

NGINX TCP/UDP Load Balancer with Memcached

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering. It is the soul of web, it’s capable of turning almost any application into a speed-demon.

But what happens sometime that you can not afford the 20-30GB RAM Servers to cache your data. Also, it is not a smart idea to depend on a single node to cache all your data (single point of failure).

In this article,

Continue Reading

Using SO_REUSEPORT Flag In Multi-Processes UDP Server

SO_REUSEPORT is a new flag available in Linux 3.9+ that allows several threads to bind the same port simultaneously instead of having to race for the same socket, having the kernel round-robin between them. And this was intended to improve the performance of multi-threaded network server applications running on top of multi-core systems.

The real application of this feature should be when sometimes a worker is stalled by a blocking operation, which does not only affect connections that the worker

Continue Reading

Manage your Docker image layers with Ansible

If you are managing infrastructure at large scale as we do in OpenSooq you had better have good level of automation and orchestration, your SysAdmins and operators had better handle their infrastructure as code. In OpenSooq, our preferred tool is Ansible.

Ansible is exceptionally great to put your servers into the desired state, which make it ideal for deployment orchestration and configuration management. For containerized environment, typically people use Dockerfiles to describe their setup inside the container, so they

Continue Reading

Binding two SystemD-services to manage Loadbalancer IPVS

We have demonstrated how to make scalable resilient UDP service behind  IPVS load-balancer.

In this article we will see how we can bind two systemd services (one is the process on a given port and the other is registering it to IPVS)

Requires, Before and After

When you write systemd unit files for two dependent systemd services, let’s say A then B, usually we specify both “Requires and “After” for example, in B.service you specify “Requires=A.service” and “After=A.service” which

Continue Reading

Site Footer

@ OpenSooq 2019