irpas技术客

windows IIS 集群 NLB+nginx 实现高可用_windows nlb_qixin.xie

网络 4514

一,安装&配置NLB

1,安装NLB服务(NLB节点1, NLB节点2都需要安装)

下面第一框里面要是你还没安装NLB则只是会看到一行就是本机的name 和 IP, 我这里是因为我先安装了然后来做截图;所以你会看到两行

这里同样, 我是事后截图; 所以你会看到(installed); 你首次安装需要勾选这个

单播

在单播模式下,NLB重新对每个NLB节点中启用NLB的网络适配器分配MAC地址(此MAC地址称为群集MAC地址),并且所有的NLB节点均使用相同的MAC地址(均使用群集MAC地址),同时NLB修改所有发送的数据包中的源MAC地址,从而使交换机不能将此群集MAC地址绑定在某个端口上。 工作在单播模式下的NLB可以在所有网络环境下正常运行,但是由于它的工作特性,具有以下两个限制: 由于NLB所使用的群集MAC地址没有绑定在某个具体的交换机端口上,所以所有的NLB通讯均通过在交换机的所有端口上广播进行,而不管此端口是否连接了NLB节点,这造成了额外的网络流量负担; 由于所有的NLB节点具有相同的MAC地址,NLB节点之间不能通过自己原有的专用IP地址进行通讯。若我们在NLB创建时选择单播的模式,在“群集IP配置”中的“网络地址”是以“02 - BF”开头,后面紧跟IP地址的十六进制表示,该网络地址与实际主机的MAC地址相同,后续加入的主机也将修改为此MAC地址。

多播

在多播模式下,NLB不会修改NLB节点启用NLB的网络适配器的MAC地址,而是为它再分配一个二层多播MAC地址专用于NLB的通讯(此MAC地址称为群集MAC地址),这样NLB节点之间可以通过自己原有的专用IP地址进行通讯。但是在多播模式中,NLB节点发送的针对群集IP地址MAC地址ARP请求的ARP回复会将群集IP地址映射到多播MAC地址,而许多路由器或者交换机(包括CISCO的产品)会拒绝这一行为。当出现这种情况时,你必须在路由器和交换机上手动添加静态映射,将群集IP地址映射到群集的多播MAC地址。 Windows Server 2003提供了一个新的特性,称为IGMP 多播,它可以通过使用IGMP协议支持来使交换机只将NLB通讯发送到连接NLB节点的端口,而不是所有交换机端口。但是此特性必须要求交换机支持IGMP侦听,并且要求群集工作在多播模式下。若我们在NLB创建时选择多播的模式,在“群集IP配置”中的“网络地址”是以“03 -BF”开头,后面紧跟IP地址的十六进制表示。在IGMP多播模式下,将采用“01 – 00 - 5E”开头的MAC地址。在多播的模式下,实体主机之间可以互相通信。

安装好,NLB后,右键单击【网络负载平衡器】,选择新建集群。

输入主机名称,这里的主机名称为:WINDOWS-01,点击连接会看到多个IP地址T1是外网地址,F1是内网地址,选择外网地址—点击下一步。

点击【添加】按钮,添加外网地址192.168.xx.2,点击【确定】按钮。

点击【下一步】按钮,出现【新集群】页点击【添加】按钮。

弹出【添加IP地址】框添加虚拟IP地址即集群IP,点击【确定】按钮。

点击【下一步】按钮,填写集群参数,集群的操作模式填写【单播】(注:如果是单网卡的话填写多播,此机器为多网卡,故填写单播),点击【下一步】按钮。

点击【编辑】按钮,编辑端口规则。

在筛选模式中:选择相关性【单一】

点击【完成】按钮,完成集群新建。

新集群本地配置搭建完成 如下

在同一台机器上,添加另外一台服务器节点,单机右键集群名称,选择【添加主机到集群】然后重复以上过程完成NLB的配置。

12

?验证NLB集群

完成集群配置后,客户端使用NLB集群虚拟IP访问后台应用,这时可以正常访问到应用首页,拔掉一个节点服务器的网线后,使用虚拟IP地址访问应用可以正常访问,恢复该节点服务器网线,拔掉另外一节点服务器网线,使用虚拟IP访问应用,可以正常访问,即集群故障转移正常

二,安装&配置nginx

?1.nginx官网下载nginx Windows版本?nginx for Windows

?2.进入下载的nginx 文件夹cmd 命令start nginx.exe,打开防火墙,允许nginx 访问网络

3.使用浏览器访问

http://localhost:80 ?

运行效果:

?

4.修改nginx conf?文件夹下nginx.conf

#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #反向代理服务器地址 upstream server_list { server 192.168.0.121:8888 weight=1; server 192.168.0.122:8888 weight=1; server 192.168.0.255:9999 weight=1; } server { #监听端口(自定义) listen 6060; server_name localhost; charset utf-8; #access_log logs/host.access.log main; location / { #根目录 root E:\work\New\EPoliceQXTB.Admin\EPoliceQXTB.Core.Admin\发布; proxy_pass http://server_list; index index.html index.php; } #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 html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }

重启服务nginx服务

访问 :http://虚拟IP(nlb):6060,验证结果

注意:目前实现在同一网段 iis集群


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Windows #nlb #IIS #集群 #NLBnginx #实现高可用