Linux中nginx+nodejs 多台服务器负载均衡

1、准备工作:1、关闭 Selinux 2、负载均衡的种类:

2、开启防火墙对应端口

1)一种是通过硬件来进行解决,常见的硬件有 NetScaler、F5、Radware 和 Array 等商用的 负载均衡器,但是它们是比较昂贵的
2)一种是通过软件来进行解决的,常见的软件有 LVS、Nginx、apache 等,它们是基于 Linux 系统并且开源的负载均衡策略.

Nginx 的特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服 务器中表现最好,中国大陆使用 nginx 网站用户有:新浪、网易、 腾讯等。

nginx 的 upstream 目前支持 3 种方式的分配:

1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

2)、weight 权重 ——you can you up

指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

3)、ip_hash ip哈希算法

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器, 可以解决 session 的问题。

配置负载均衡

找到 /etc/nginx/conf.d 然后在里面新建对应网站的配置文件

upstream bakeaaa {
    
    ip_hash;
    server 127.0.0.1:3001 weight=1; 
    server 127.0.0.1:3002 weight=1;
    server 192.168.1.129:3001 weight=3;
}



server {
    listen       80;
    server_name  www.aaa.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
    #设置主机头和客户端真实地址,以便服务器获取客户端真实 IP
    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_buffering off;
        
    proxy_pass http://bakeaaa;
    }
    location /socket.io {        
        # 此处改为 socket.io 后端的 ip 和端口即可
        proxy_pass http://127.0.0.1:3001;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 
}

重启

重启 
nginx systemctl restart nginx 
nginx -t 看配置是否正确 
systemctl stop nginx 
systemctl start nginx

防火墙配置

添加:
firewall-cmd --zone=public --add-port=80/tcp --permanent 
重新载入:
firewall-cmd --reload

猜你喜欢

转载自www.cnblogs.com/loaderman/p/11655079.html