Nacos在阿里云中集群部署,使用Ngnix代理负载,此时客户端配置ngnix服务器ip:port连接时报错
问题描述:
使用阿里云服务器进行nacos集群部署,通过另一台云服务器ngnix进行代理和负载均衡,此时客户端通过代理服务器注册nacos报错:bug Server check fail, please check server xxx.xxx.xxx.xxx ,port xxxx is available。
问题原因:
这是因为ncaos升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成.。官网文档
解决方法:
- ngnix服务器添加开放端口8080,9080,9081(假如使用8080代理的nacos),如果是阿里云在控制台配置,如果是自己服务器配置防火墙。
- nacos部署服务器开放端口8848,9848,9849(假如nacos配置默认端口)
- ngnix出了配置ngnixip_ip:8080对nocas_ip:8848的http代理,还要配置另外两个端口tcp代理,在nginx.conf末尾添加下面配置
注:nginx要配置tcp代理,版本至少在1.9以上
stream {
include tcp_proxy/*.conf;
}
然后在nginx.conf所在目录新建目录tcp_proxy,然后在tcp_proxy目录中新建文件tcp.conf,写入以下配置
upstream nacos-server-grpc9848 {
server nocas_ip1:9848;
server nocas_ip2:9848;
server nocas_ip3:9848;
}
server {
listen 9080;
proxy_pass nacos-server-grpc9848 ;
}
upstream nacos-server-grpc9849 {
server nocas_ip1:9849;
server nocas_ip2:9849;
server nocas_ip3:9849;
}
server {
listen 9081;
proxy_pass nacos-server-grpc9849;
}
注意:所有端口以你的配置为准