Home Operation and Maintenance Linux Operation and Maintenance How to use haproxy load balancing mysql

How to use haproxy load balancing mysql

Sep 15, 2018 pm 03:54 PM
haproxy linux

The content of this article is about how to use haproxy load balancing mysql. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

The system is a one-master, multiple-slave model. The separation of reading and writing is implemented at the application level. Insert, delete, update, and alter go to the master library, and select goes to the slave library. Then I did load balancing for the slave library and used keepalived to combine haproxy.

How to use haproxy load balancing mysql

Without further ado, let’s get started.

System environment: centos7

Having said that, I don’t know when the official community website of haproxy was blocked... Alas, you can download the latest stable version of haproxy through this address.

# wget https://www.haproxy.org/download/1.8/src/haproxy-1.8.9.tar.gz
Copy after login

It is recommended that friends read the readme file before installation

# cat /usr/src/haproxy-1.8.9/README
Copy after login

Install haproxy, the prefix keyword PREFIX here specifies the installation directory, use are capital letters. Generally, for regular source code installation, add the option "--prefix" after the configure command to distinguish it

# tar -zxf haproxy-1.8.9.tar.gz -C /usr/src/
# cd /usr/src/haproxy-1.8.9/
# make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy
# make install  PREFIX=/usr/local/haproxy
Copy after login

Create haproxy program user and configuration file directory

# useradd -M -s /sbin/nologin haproxy
# mkdir /etc/haproxy
Copy after login

The haproxy configuration file does not provide a sample in this version of the package. It needs to be created manually.

# touch /etc/haproxy/haproxy.cfg
# more /etc/haproxy/haproxy.cfg
#global    log  /dev/log   local0 info    log  /dev/log 
  local1 notice    pidfile   
    /var/run/haproxy.pid    maxconn     400000  
      user        haproxy    group    
         haproxy    nbproc      1    daemon
#defaults    mode   http    log   global 
   option http-server-close    option            
         redispatch    retries          
      0    timeout http-request  
        10s    timeout queue     
              1m    timeout connect     
                  10s    timeout client      
                      1m    timeout server     
                           1m    timeout http-keep-alive  300s  
             timeout check           10s    maxconn    
                   100000
listen mysql_select  bind *:3306  mode tcp  balance roundrobin 
 #balance source  #option mysql-check user haproxy  timeout server  15s  
 timeout connect 15s  server mysql162 192.168.5.162:3306 check port 3306 inter 5000 fall 5 
  server mysql163 192.168.5.163:3306 check port 3306 inter 5000 fall 5  
  server mysql164 192.168.5.164:3306 check port 3306 inter 5000 fall 5
listen stats        mode http        bind 0.0.0.0:7979        stats enable            stats hide-version        stats uri /haproxy?hello        stats realm Haproxy\ Statistics        stats auth qkc:pwd@123        stats admin if TRUE
Copy after login


The default log of haproxy is It is output to the system's syslog, which is not very convenient to view. In order to better manage haproxy

logs, we generally define them independently in the production line. The definition method is as follows:

(1) Modify the log configuration options in haproxy.cfg, add the following configuration to global, and record the info and notice logs to different files.

log  /dev/log   local0 info
log  /dev/log   local1 notice
Copy after login

(2) Modify rsyslog configuration

In order to facilitate management, haproxy-related configurations are independently defined in /etc/rsyslog.d/haproxy.conf. This part of the configuration records the info and notice logs to the /var/log/haproxy181/{haproxy181-info.log,haproxy181-notice.log} files respectively, where "& ~" means that after the log is written to the log file, rsyslog Stop processing this message. The syntax configured here is written in rainerscript script language.

# vim /etc/rsyslog.d/haproxy.conf
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
 then -/var/log/haproxy181/haproxy181-info.log& ~if 
 ($programname == 'haproxy' and $syslogseverity-text == 'notice') 
 then -/var/log/haproxy181/haproxy181-notice.log& ~
Copy after login

Check whether the syntax of haproxy.cfg configuration file is correct

# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c
Copy after login

If there is no problem, remove the -c option and start haproxy

# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
Copy after login
[root@server181 haproxy]# ss -antulp | grep haproxy
tcp    LISTEN   0  128   *:3306     *:*    users:(("haproxy",pid=3315,fd=4))
tcp    LISTEN   0  128    *:7979   *:*    users:(("haproxy",pid=3315,fd=6))
Copy after login

Configure haproxy to start automatically at boot

# chmod +x /etc/rc.d/rc.local
# echo '/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg' >> /etc/rc.d/rc.local
Copy after login

Connect haproxy for testing

# for i in $(seq 1 10); do mysql -utest -p123456 -h192.168.5.181 -e 'select @@server_id;'; done | egrep '[0-9]'
3306164
3306162
3306163
3306164
3306162
3306163
3306164
3306162
3306163
3306164
Copy after login

Then use another server to do haroxy and integrate keepalived. The remote system uses the mysql client to connect to the load balancing VIP to log in, and then perform health check, failover and other project tests one by one.

Summary:

haproxy has a very low CPU load on medium-sized loads, even in very high load scenarios, 5% user space occupancy and 95% system Space usage is also a very common phenomenon, which means that haproxy process consumption is more than 20 times lower than system space consumption. Therefore, performance tuning of the OS is very important. Even if the occupancy rate of user space is doubled, its CPU occupancy rate is only 10%, which also explains why layer 7 processing has limited impact on performance. As a result, haproxy's layer 7 performance can easily exceed hardware load balancing devices on high-end systems.

The feature of haproxy that supports tcp proxy allows it to also perform load balancing for mysql reading library, and it can perform quite well.

The above is the detailed content of How to use haproxy load balancing mysql. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to start apache How to start apache Apr 13, 2025 pm 01:06 PM

The steps to start Apache are as follows: Install Apache (command: sudo apt-get install apache2 or download it from the official website) Start Apache (Linux: sudo systemctl start apache2; Windows: Right-click the "Apache2.4" service and select "Start") Check whether it has been started (Linux: sudo systemctl status apache2; Windows: Check the status of the "Apache2.4" service in the service manager) Enable boot automatically (optional, Linux: sudo systemctl

What to do if the apache80 port is occupied What to do if the apache80 port is occupied Apr 13, 2025 pm 01:24 PM

When the Apache 80 port is occupied, the solution is as follows: find out the process that occupies the port and close it. Check the firewall settings to make sure Apache is not blocked. If the above method does not work, please reconfigure Apache to use a different port. Restart the Apache service.

How to monitor Nginx SSL performance on Debian How to monitor Nginx SSL performance on Debian Apr 12, 2025 pm 10:18 PM

This article describes how to effectively monitor the SSL performance of Nginx servers on Debian systems. We will use NginxExporter to export Nginx status data to Prometheus and then visually display it through Grafana. Step 1: Configuring Nginx First, we need to enable the stub_status module in the Nginx configuration file to obtain the status information of Nginx. Add the following snippet in your Nginx configuration file (usually located in /etc/nginx/nginx.conf or its include file): location/nginx_status{stub_status

How to set up a recycling bin in Debian system How to set up a recycling bin in Debian system Apr 12, 2025 pm 10:51 PM

This article introduces two methods of configuring a recycling bin in a Debian system: a graphical interface and a command line. Method 1: Use the Nautilus graphical interface to open the file manager: Find and start the Nautilus file manager (usually called "File") in the desktop or application menu. Find the Recycle Bin: Look for the Recycle Bin folder in the left navigation bar. If it is not found, try clicking "Other Location" or "Computer" to search. Configure Recycle Bin properties: Right-click "Recycle Bin" and select "Properties". In the Properties window, you can adjust the following settings: Maximum Size: Limit the disk space available in the Recycle Bin. Retention time: Set the preservation before the file is automatically deleted in the recycling bin

How to restart the apache server How to restart the apache server Apr 13, 2025 pm 01:12 PM

To restart the Apache server, follow these steps: Linux/macOS: Run sudo systemctl restart apache2. Windows: Run net stop Apache2.4 and then net start Apache2.4. Run netstat -a | findstr 80 to check the server status.

The importance of Debian Sniffer in network monitoring The importance of Debian Sniffer in network monitoring Apr 12, 2025 pm 11:03 PM

Although the search results do not directly mention "DebianSniffer" and its specific application in network monitoring, we can infer that "Sniffer" refers to a network packet capture analysis tool, and its application in the Debian system is not essentially different from other Linux distributions. Network monitoring is crucial to maintaining network stability and optimizing performance, and packet capture analysis tools play a key role. The following explains the important role of network monitoring tools (such as Sniffer running in Debian systems): The value of network monitoring tools: Fast fault location: Real-time monitoring of network metrics, such as bandwidth usage, latency, packet loss rate, etc., which can quickly identify the root cause of network failures and shorten the troubleshooting time.

How to optimize the performance of debian readdir How to optimize the performance of debian readdir Apr 13, 2025 am 08:48 AM

In Debian systems, readdir system calls are used to read directory contents. If its performance is not good, try the following optimization strategy: Simplify the number of directory files: Split large directories into multiple small directories as much as possible, reducing the number of items processed per readdir call. Enable directory content caching: build a cache mechanism, update the cache regularly or when directory content changes, and reduce frequent calls to readdir. Memory caches (such as Memcached or Redis) or local caches (such as files or databases) can be considered. Adopt efficient data structure: If you implement directory traversal by yourself, select more efficient data structures (such as hash tables instead of linear search) to store and access directory information

How to solve the problem that apache cannot be started How to solve the problem that apache cannot be started Apr 13, 2025 pm 01:21 PM

Apache cannot start because the following reasons may be: Configuration file syntax error. Conflict with other application ports. Permissions issue. Out of memory. Process deadlock. Daemon failure. SELinux permissions issues. Firewall problem. Software conflict.

See all articles