温馨提示×

php-fpm在ubuntu上如何实现高可用性

小樊
41
2025-12-10 14:16:01
栏目: 编程语言

在Ubuntu上实现PHP-FPM的高可用性,可以通过以下几种方法:

1. 使用负载均衡器

负载均衡器可以将请求分发到多个PHP-FPM实例,从而提高系统的可用性和性能。

使用Nginx作为负载均衡器

  1. 安装Nginx

    sudo apt update
    sudo apt install nginx
    
  2. 配置Nginx: 编辑Nginx配置文件(通常位于/etc/nginx/sites-available/default),添加负载均衡配置:

    upstream php_fpm {
        server unix:/var/run/php/php7.4-fpm.sock;
        server unix:/var/run/php/php7.5-fpm.sock;
        # 添加更多PHP-FPM实例
    }
    
    server {
        listen 80;
        server_name example.com;
    
        root /var/www/html;
        index index.php index.html index.htm;
    
        location ~ \.php$ {
            fastcgi_pass php_fpm;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }
    
  3. 重启Nginx

    sudo systemctl restart nginx
    

2. 使用Keepalived实现高可用性

Keepalived可以提供虚拟IP地址(VIP),当主服务器宕机时,VIP会自动切换到备用服务器。

安装Keepalived

  1. 安装Keepalived

    sudo apt update
    sudo apt install keepalived
    
  2. 配置Keepalived: 编辑Keepalived配置文件(通常位于/etc/keepalived/keepalived.conf),添加以下内容:

    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
    
        authentication {
            auth_type PASS
            auth_pass 42
        }
    
        virtual_ipaddress {
            192.168.1.100
        }
    }
    
    virtual_server 192.168.1.100 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        nat_mask 255.255.255.0
        persistence_timeout 50
        protocol TCP
    
        real_server 192.168.1.1 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 10
                connect_port 80
            }
        }
    
        real_server 192.168.1.2 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 10
                connect_port 80
            }
        }
    }
    
  3. 启动Keepalived

    sudo systemctl start keepalived
    sudo systemctl enable keepalived
    

3. 使用Docker和Docker Compose

使用Docker和Docker Compose可以轻松管理多个PHP-FPM实例,并通过负载均衡器进行流量分发。

安装Docker和Docker Compose

  1. 安装Docker

    sudo apt update
    sudo apt install docker.io
    
  2. 安装Docker Compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    

创建Docker Compose文件

创建一个docker-compose.yml文件,定义多个PHP-FPM实例:

version: '3'

services:
  php-fpm-1:
    image: php:7.4-fpm
    volumes:
      - ./php-fpm-1:/var/www/html
    networks:
      - php-network

  php-fpm-2:
    image: php:7.5-fpm
    volumes:
      - ./php-fpm-2:/var/www/html
    networks:
      - php-network

networks:
  php-network:
    driver: bridge

启动Docker容器

docker-compose up -d

配置Nginx负载均衡

参考前面的Nginx配置示例,将fastcgi_pass指向Docker网络中的PHP-FPM服务。

通过以上方法,可以在Ubuntu上实现PHP-FPM的高可用性。选择适合你业务需求的方法进行部署。

0