New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
分享:使用nginx做nacos集群负载均衡 #9004
Comments
网络上大多数是基于nacos1.x版本进行配置,2.x版本很少提及,谢谢分享👍 |
你好,请问下如果我是用三台服务器做集群有几个问题咨询一下:
目前我是参考网上说的使用方式:
|
都是用局域网IP,局域网多快,没必要去外网绕一圈 |
@qq670176019 I think you can make this share as an blog article, and submit it into nacos.io. |
主要我的水平实在是差,也只能是发出来大家看看,可能还会有认知问题等 |
我认为这不是问题,你可以在你的文章中梳理你遇到的问题,然后你是怎么排查到这个问题的, 最后是按照这个方法解决的。 写这样一篇博客发到官网就可以了, 和水平什么的没有关系。 这样和你有相同的问题的同学就可以找到博客,然后尝试解决了。 文章里可以留这个issue的连接,作者部分可以留邮箱,如果大家又问题就邮件或者issue里继续讨论就好。 只放issue里一来背景不明确,二来曝光不够。 |
3台机器还需要开放 9848 9849端口吗 |
我之前排查日志报错的时候开了4个端口才解决:8848/9848/7848/8849, 几乎都开了,没看nacos通讯机制,仅从报错来看需要开这些端口. |
nginx http2 代理 nacos 2.x 时为啥会连接中断?有知道的吗? |
我问一下,cluster模式下,每个实例用的数据库都是同一个吗? |
这是来自QQ邮箱的假期自动回复邮件。
您好,您的邮件我已经收到,尽快给您回复。
|
理论上是的,不然可能数据不同步? |
Nacos开启鉴权功能后,用Nginx代理Nacos集群,upstream 和 stream都配置了,配置确认无误,项目中server-addr用Nginx代理地址报403:NacosException: http error, code=403,msg=user not found!,,username和password那写了,如果server-addr:用的是Nacos地址不用代理是正常的,有遇到过的吗 |
这是来自QQ邮箱的假期自动回复邮件。
您好,您的邮件我已经收到,尽快给您回复。
|
你好,我这边有几个问题请教一下。 问题1:程序直接使用nginx的7847 ( server-addr: 192.168.190.128:7847),代理到的到底是nacos的8848还是9848
server ip1:9848 weight=10; |
1、分享的目的
网络鱼龙混杂,鱼目混珠,内容良莠不齐,大家为了所谓的积分,不顾三七二十一搬运别人的,有的甚至一字不差照搬不误,误人子弟!关于这个使用nginx做nacos集群复杂均衡问题,我搜了好多,都是劣等的教程,终于在一个角落看到了解决办法,看到也有很多朋友之前问过这种问题,现在一起分享一下吧
2、要解决的问题
有N(N>=3)台机器要组建nacos集群:
192.168.190.128:8848; 192.168.190.129:8848; 192.168.190.130:8848;
普通方法是,在server-addr中使用逗号隔开几个nacos集群地址,但是此种问题的缺点在于,集群扩建时,需要重新打包代码、重启才可以,但是很明显这种方式不是很友好。
那就需要想一个办法,使用nginx负载均衡来做,不再废话,下边直接上教程供参考:
3、解决办法
1)准备三台机器,并配置好各自的nacos
cluster.conf:
192.168.190.128:8848 192.168.190.129:8848 192.168.190.130:8848
startup.sh:
export MODE="cluster"
启动文件中默认的内存占用2G 2G 1G,可以按需调整,注意最后一个要比前边的小,一般是小一半
application.properties:
只修改了如下:
spring.datasource.platform=mysql db.url.0=jdbc:mysql://192.168.190.1:3306/config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=12345678
2)设置nginx负载均衡
安装nginx时,注意要安装上stream模块,即,在./configure 阶段,--with-stream
配置文件:
`
#user nginx nginx;
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;
}
nacos的grpc协议配置
stream {
# 负载均衡配置(TCP长连接配置)
upstream lb-nocos-tcp{
server 192.168.190.128:9848 weight=1;
server 192.168.190.129:9848 weight=1;
server 192.168.190.130:9848 weight=1;
}
server {
listen 8847;
proxy_pass lb-nocos-tcp;
}
}
`
由于nginx放在了三台nacos机器中的一台上,所以把监听的端口进行了修改。
nginx配置的关键就在于,gRPC通讯部分,nacos会在默认的端口上偏移1000进行通讯,但是网络上很多教程根本就没有提过这个stream,这才是关键问题。
在这里,我用7847对应nacos各个机器的8848,偏移1000,用8847对应各个机器的9848
3)程序中使用
server-addr: 192.168.190.128:7847
如果多环境,可以在跟pom中配置profiles,然后各个项目中引用。
至此,结束,如果各位还有更好的方案或者优化,希望能够共享一下
The text was updated successfully, but these errors were encountered: