Windows上实现nginx的多负载,实现高可用,NLB 替代keepalived

【转】https://blog.csdn.net/fcclzydouble/article/details/122841013

NLB 就是网络负载平衡,windows Server 2012 中该功能允许你将传入的请求传播到最多达32台的服务器上,即可以使用最多32台服务器共同分担对外的网络请求服务。网络负载平衡,保证即使是在负载很重的情况下它们也能够在很快的时间内做出反应。

网络负载平衡可以让客户端用一个逻辑Internet名称和虚拟IP地址(又称群集IP地址)访问群集,同时保留每台计算机各自的名称。网络负载平衡对外只须提供一个IP地址(或域名)。当网络负载平衡中的服务器故障,不可用时,网络负载平衡会自动检测到不可用的服务器,并在剩余的服务器中,重新指派客户机通讯。从而实现服务器的高可用,并且,可以根据网络访问量的增多来增加网络负载平衡服务器的数量。

简单的理解,NLB 就是一个简单的类似nginx的负载均衡

由于Windows环境没有linux中的keepalived实现,那就只能使用Windows自带的NLB来实现负载了。

首先准备两台机器,假设现在有 192.168.1.106 和 192.168.1.58 两个Windows环境,先安装nginx环境,主要的nginx配置如下:

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

gzip on;

server {
listen 80;
server_name 192.168.1.106 127.0.0.1;

location / {
# 注意,反斜杠会有问题
root D:/nginx-1.5.1/html;
}
}
}

上面的 IP 和 静态资源根据自己的情况配置(这里只是一个演示环境,具体的nginx 配置文件看具体情况,一般先将这个完整的走通,就不会有大问题了)

 

查看当前系统的网络情况

 

 

准备工作完成,下面开始具体操作。

1、开启NLB

服务器管理-> 添加角色和功能->在功能中选择“网络负载均衡” 然后安装就可以了。

 

 

 

2、配置静态IP

注意,新建群集之前,我们要确保使用的是静态IP,否则无法将他们加入到群集中。

打开网络和共享中心

 

点击属性找到ipv4协议

 

选中后点击属性,开始配置IP。

 

 

根据自己的情况来填写上面的参数。两台机器都需要配置。

3、安装好NLB之后,我们随便选择一台新建集群,这里就使用 192.168.1.58 来新建集群,然后另外一台加入到群集即可。

从管理工具中打开 网络负载均衡器,右击“网络负载平衡群集”,选择“新建群集”。

 

新建群集。

 

点击连接,将当前主机加入,点击下一步

 

进入 “新群集:主机参数”,直接下一步,这里什么都不用填。

 

进入 “新群集:群集IP地址”, 填入对外的统一IP,这个IP就是整个nginx的统一对外IP,也就是这台机器的浮动IP ,我们这里填入的是 192.168.1.20 ,添加到窗口中然后点击下一步

 

 

继续下一步

 

选择“多播”然后点击下一步

 

在端口规则页面,选中全部,然后点击编辑

 

将端口范围改成 80~80,协议选 “TCP”,相关性选“无”,具体什么端口根据nginx来定。

 

点击确定回到主窗口,然后点击完成。

 

注意,完成这个后,会有一会断网,过一会在连接进去,可以看到下面的配置已经生效。

 

这个时候再次查询网络情况,可以看到有两个IP了。

 

 

4、加入群集

已经完成初步的群集创建,现在要将另外一台机器加入进来。

还是在当前( 192.168.1.58) 机器上执行添加。选中我们的浮动IP,右键点击“添加主机到群集”。

 

 

输入要加入集群的机器,这里是另外一台机器的IP(192.168.1.106)

中途可能需要输入另外一台机器的用户名和密码

 

如果多网络的情况下,选中远程主机我们输入的IP

 

继续下一步

 

 

然后等待一会,当两个都变成已启用就OK了

 

查看对应机器的网络,也变成如下。(不需要管其他机器的网络负载平衡管理器页面)

 

 

这个时候访问我们的浮动IP就可以访问到页面了,这样就实现了nginx的高可用。

但也可能出现无法访问的情况,这个时候就要右键属性,将多播改为单播

 

 

这种情况一般和不同网段有关系,发送出去了,但没有返回数据包的情况。

总结:

第一,我们的nginx还是正常的配置,监听的端口和IP不是浮动IP

第二,端口并不是全部都转发,而是只转发nginx配置的端口,这里监听的是80,可能正常情况会配置8080之类的
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/fcclzydouble/article/details/122841013

posted @ 2024-07-01 15:33  我,很昕蔚  阅读(131)  评论(0编辑  收藏  举报