环境搭建
| 主机 | 角色 |
| ———— | ———— |
| 192.168.10.174 | 前置机 |
| 192.168.10.80 | 服务器1 |
| 192.168.10.42 | 服务器2 |
目前的要求,
访问前置机器,第一次会访问到 80,第二次会访问的42.
upstream
upstream backend-server
{
server 192.168.10.80:80 ;
server 192.168.10.42:80 ;
server 192.168.10.152:80;
}
具体参数
如果需要保留会话,就是说对有状态服务的负载均衡,不能按照每次请求转发,只能按照每个IP段来转发,192.168.10.x
- WEIGTH: 权重
upstream backend-server
{server 192.168.10.80:80 weigth=5 ; server 192.168.10.42:80 weigth=2; server 192.168.10.152:80 weigth=1;
}
负载均衡的配置方法
upstream backend-server
{
ip_hash;
server 192.168.10.80:80 ;
server 192.168.10.42:80 ;
server 192.168.10.152:80;
}
使用了ip_hash 以后,可能导致负载均衡失效,也访问数量倾斜。
某个网段人特别多,比如大公司的出口就是一个IP,
我个人的的就一个网段,大公司,我个人
单点登录 (SSO ,single sign on )
ldap,crowd,adam,kerbos
免费
nginx +redis + …
nginx + mysql + ….
备注: 使用了多个 worker_processes, 使用多个worker进程,连接总数肯定会大于max_conns
具体配置参数
slow_start(商业版本能使用,需要付费):缓慢的启动,慢慢加入到集群,会在配置的时间内将权重慢慢升级到配置的权重值,必须要使用在集群里面,必须要和权重一起使用
upstream tomcats {
server 192.168.1.173:8080 weight=6 slow_start=60s;
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=2;
}
该参数不能使用在hash和random load balancing中
down:一种状态,标识服务器节点不可用
upstream tomcats {
server 192.168.1.173:8080 down;
server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;
}
backup:表明服务器是一台备用机(其他服务挂掉之后,才会被访问)
upstream tomcats {
server 192.168.1.173:8080 backup;
server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;
}
upstream指令参数 max_fails、fail_timeout
max_fails:表示失败几次,则标记server已宕机,剔除上游服务。
fail_timeout: 表示失败的重试时间。
max_fails=2 fail_timeout=15s
则表示在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。
转发配置,nginx中
server {
listen 80;
listen [::]:80;
server_name proxy.ycjy.cc;
location / {
proxy_pass http://backend-server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_file4A1Jh5BS 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_file4A1Jh5BS 1;
expires 1m;
}
if ( $static_file4A1Jh5BS = 0 )
{
add_header Cache-Control no-cache;
}
}
}
最后编辑:严锋 更新时间:2025-05-09 15:48