Nginx之 http服务器集群+负载均衡搭建

一.使用swoole编写4台http服务器,监听的端口分别是8080、8081、8082、8083

8080服务器的代码
<?php

//搭建HTTP服务器
$server=new Swoole_http_server("0.0.0.0",8080);

$server->on("connect",function ($server,$fd){

    echo "建立连接\n";
});


//接收请求
$server->on("request",function ($request,$response){
    $request=(array)$request;
    $request_method=$request["server"]["request_method"];
    $request_uri=$request['server']["request_uri"];

    //设置返回头信息
    $response->end("8080");
});


//关闭连接
$server->on("close",function ($server,$fd){
    echo "关闭连接\n";
});

//启动服务器
$server->start();



?>
8081服务器的代码
<?php

//搭建HTTP服务器
$server=new Swoole_http_server("0.0.0.0",8081);

$server->on("connect",function ($server,$fd){

    echo "建立连接\n";
});


//接收请求
$server->on("request",function ($request,$response){
    $request=(array)$request;
    $request_method=$request["server"]["request_method"];
    $request_uri=$request['server']["request_uri"];

    //设置返回头信息
    $response->end("8081");
});


//关闭连接
$server->on("close",function ($server,$fd){
    echo "关闭连接\n";
});

//启动服务器
$server->start();
?>
8082服务器的代码
<?php

//搭建HTTP服务器
$server=new Swoole_http_server("0.0.0.0",8082);

$server->on("connect",function ($server,$fd){

    echo "建立连接\n";
});


//接收请求
$server->on("request",function ($request,$response){
    $request=(array)$request;
    $request_method=$request["server"]["request_method"];
    $request_uri=$request['server']["request_uri"];

    //设置返回头信息
    $response->end("8082");
});


//关闭连接
$server->on("close",function ($server,$fd){
    echo "关闭连接\n";
});

//启动服务器
$server->start();



?>
#### 8083服务器的代码
<?php

//搭建HTTP服务器
$server=new Swoole_http_server("0.0.0.0",8083);

$server->on("connect",function ($server,$fd){

    echo "建立连接\n";
});


//接收请求
$server->on("request",function ($request,$response){
    $request=(array)$request;
    $request_method=$request["server"]["request_method"];
    $request_uri=$request['server']["request_uri"];

    //设置返回头信息
    $response->end("8083");
});


//关闭连接
$server->on("close",function ($server,$fd){
    echo "关闭连接\n";
});

//启动服务器
$server->start();



?>

二.将4个文件传入服务器,并将4台服务器启动

在这里插入图片描述
四台服务器已经启动

三.防火墙开放8080 8081 8082 8083 四个端口

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8082 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8083 -j ACCEPT
在这里插入图片描述
在浏览器中进行测试访问
在这里插入图片描述
经过测试4台服务器均可以进行访问测试

四.nginx集群配置

所谓集群就是将同一个业务部署到多个服务器上面

将一个应用程序,部署到多太服务器上面,然后在这些服务器的前面通过负载均衡服务器来选择在哪一台服务器去执行

进入nginx安装目录,修改nginx.conf配置文件
1.配置服务器组,在http{} 节点之间添加upstream配置。(注意不要写localhost,不然访问速度会很慢)

upstream nginxCluster{
server 127.0.0.1:8080;#服务器8080
server 127.0.0.1:8081;#服务器8081
server 127.0.0.1:8082;#服务器8082
server 127.0.0.1:8083;#服务器8083
}

2.在location{}中,利用proxy_pass配置反向代理地址:

location / {
proxy_pass http://nginxCluster;
}

修改配置文件

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    #gzip  on;
	upstream nginxCluster{
	        server 127.0.0.1:8080;
	        server 127.0.0.1:8081;
		    server 127.0.0.1:8082;
			server 127.0.0.1:8083;
	}
    server {
        listen       80;
        server_name  192.168.80.128;
		location ~ \.(css|js|png|jpg|jpeg|mp3|mp4)$ {
		   root /usr/local/nginx/html/static;
		   index index.htm index.html;
		}

        location / {
                  proxy_pass http://nginxCluster;
        }
  }

保存配置文件,重启nginx

在这里插入图片描述
访问测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这说明负载均衡已经搭建成功

五.负载均衡策略

负载均衡:
将服务器接收到的请求按照规则顺序分发的过程,称为负载均衡
1.轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,自动剔除。
2.指定轮询机率
weight和访问比率成正比,用于后端服务性能不均的情况默认选项,当weight不指定时,个服务器weight相同 (weight=1)

   upstream nginxCluster{
                   server 127.0.0.1:8080 weight=1;
                   server 127.0.0.1:8080 weight=2;
                   server 127.0.0.1:8080 weight=3;
                   server 127.0.0.1:8080 weight=4;
  }

3.ip_hash
每个请求按访问ip的hash值分配,这样同一客户端连续的web请求都会被分发到同一服务器上进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其他服务器。

   upstream nginxCluster{
                   ip_hash;
                   server 127.0.0.1:8080;
                   server 127.0.0.1:8080;
                   server 127.0.0.1:8080;
                   server 127.0.0.1:8080;
  }
基于weight的负载均衡和基于ip_hash的负载均衡可以组合在一起使用

4.url_hash(第三方)

url_hash是nginx的第三方模块,nginx本身不支持,需要打补丁
nginx按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存服务器 文件服务器 静态服务器时比较有效。缺点是当后端服务宕机的时候,url_hash不会自动跳转到其他缓存服务器,二十返回给用户一个503的错误。

5.fair(第三方)
按后端服务的相应来分配请求,相应时间短的优先分配。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值