swoole模拟多服务器Nginx反向代理实现负载均衡

本文介绍如何利用Nginx反向代理和PHP的Swoole扩展实现简单的负载均衡。通过启动多个Swoole服务器并在Nginx中配置不同权重的反向代理,实现了请求的合理分配。

      

       一直想探索一下负载均衡,苦于经济能力,没有太多的服务器可用,于是借用php的 swoole 扩展根据不同的端口,启动了多个服务器,然后使用Nginx反向代理,尝试了一下负载均衡,具体搭建过程如下。

1.安装lnmp

具体的安装步骤就省略了,不会的参考一键安装包  注意最好编译安装,便于swoole的扩展编译

2. 安装 swoole

swoole的安装下载参考swoole官网

3. 编写服务程序

文件 s1.php

<?php

$serv = new swoole_http_server("0.0.0.0", 9501);

$serv->on('Request', function($request, $response) {

    $response->cookie("User", "Swoole");
    $response->header("X-Server", "Swoole");
    $response->end("<meta charset='utf-8'/><h1>Hello Swoole!,你访问的是第一台机器9501</h1>");
});

$serv->start();


然后复制3份文件 分别命名为 s2.php s3.php和s4.php

更改对应的端口和提示语 分别改为 9502、9503和9504

提示语改为 第二台机器9502、第三台机器9503 和 第四台机器9504


4. 配置Nginx反向代理


upstream backend  {
  server 127.0.0.1:9501 weight=65;
  server 127.0.0.1:9502 weight=105;
  server 127.0.0.1:9503 weight=45;
  server 127.0.0.1:9504 weight=85;
}

server {
  listen     9500;
  server_name  127.0.0.1;
  location / {
    proxy_pass  http://backend;
  }
}

上面,我使用的是9500 端口反向代理到四个不同的服务器端口。

5. 启动服务

分别打开4个端口,使用命令

# php s1.php
# php s2.php
# php s3.php
# php s4.php


重启nginx

#  nginx -s reload


随机访问了下,如下图


不断刷新会返回不同的服务器,为了看的更清楚,我写了一个测试shell脚本 test.sh

#!/bin/bash
for ((i=1;i<=20;i++))
do
curl 'http://127.0.0.1:9500/'
echo ''
sleep 1
done

然后执行脚本,我们看到访问的很均匀的出现了



至此,负载均衡的测试完成。





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值