共计 1131 个字符,预计需要花费 3 分钟才能阅读完成。
前提:
我们用thinkphp做了一个项目,需要做个简单的负载均衡,用Nginx做,为了session可以节点之间通用,使用了一个独立的Redis服务器做session存储
下面是Nginx的配置文件
http {
include mime.types;
default_type application/octet-stream;
# 服务器组 名称 test-server
upstream test-server {
# ip_hash 每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)
# least_conn 将请求分配到连接数最少的服务上
# fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块
# url_hash 按访问URL的hash结果来分配请求,使每个URL定向到同一个后端服务器,后端服务器为缓存时比较适用。另外,在upstream中加入hash语句后,server语句不能写入weight等其他参数。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包
ip_hash; ## 调度算法 ,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup
server localhost:8001 weight=1; # weight 轮询权重
server localhost:8002 weight=2;
server localhost:8003 down; # 表示当前的server暂时不参与负载均衡
server localhost:8004 backup; # 预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器
server localhost:8005 max_fails=3 fail_timeout=20s;# max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误
# fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用
server localhost:8006;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://test-server; # test-server 服务器组名称
}
}
}
正文完