温馨提示:
本文最后更新于
2021-5-6,已超过半年没有更新,若内容或图片失效,请留言反馈。
借用 PHP 的 Swoole
扩展根据不同的端口,启动多个服务器,然后使用 Nginx
反向代理。
如果没有安装 LNMP
开发环境或者没有安装 Swoole
扩展的话可以先查阅为您推荐的文章:CentOS7-4-干净环境配置及搭建LNMP-PHP7
编写服务程序
新建文件 swoole_server1.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份文件 分别命名为: swoole_server2.php swoole_server3.php 和 swoole_server4.php
更改对应的端口和提示语 分别改为 9502
、9503
和9504
提示语改为 第二台机器 9502
、第三台机器 9503
和 第四台机器 9504
配置Nginx反向代理
upstream webswoole {
server 127.0.0.1:9501 weight=20;
server 127.0.0.1:9502 weight=40;
server 127.0.0.1:9503 weight=30;
server 127.0.0.1:9504 weight=10;
}
server {
listen 9500;
server_name 127.0.0.1;
location / {
proxy_pass http://webswoole;
}
}
上面,我使用的是 9500
端口反向代理到四个不同的服务器端口。
启动服务
分别打开4个端口,使用命令
php swoole_server1.php
php swoole_server2.php
php swoole_server3.php
php swoole_server4.php
重启nginx
nginx -s reload
访问应用 (curl或打开浏览器网页)
curl 127.0.0.1:9500
不断刷新会返回不同的服务器,为了看的更清楚,我写了一个测试 Shell 脚本 test.sh
#!/bin/bash
for ((i=1; i<=20; i++))
do
curl 'http://127.0.0.1:9500/'
echo ''
sleep 1
done
然后执行脚本,我们看到访问的很均匀的出现了, 你也可以采用其他算法模式把流量分发到想要的服务器。
至此,Swoole
模拟负载均衡的测试完成, 如果是多台真实服务器的话直接替换 upstream
里的地址就可以了。
评论一下?