nacos集群部署配置和负载均衡nginx配置

原创
07/01 14:40
阅读数 1.6K

集群部署架构图

推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面

http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。

http://SLB:port/openAPI 挂载SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),直连SLB即可,下面挂server真实ip,可读性不好。

http://nacos.com:port/openAPI 域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式

配置集群配置文件

在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)

# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848

开启鉴权,application.properties中的配置

nacos.core.auth.enabled=true

由于nacos 默认配置日志太多,访问日志跟负责均衡访问日志重复,建议关闭tomcat.accesslog:

server.tomcat.accesslog.enabled=false

conf/nacos-logback.xml 修改日志级别

集群模式启动

使用内置数据源

sh startup.sh -p embedded

登录控制台:http://localhost:8848/nacos

默认账号密码nacos/nacos,登录后修改默认密码

获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

负载均衡nginx配置

nginx 配置:

这里以nginx作为负载均衡为例,配置http 8848端口代理

upstream nacos-server{
  server 200.8.9.16:8848;
  server 200.8.9.17:8848;
  server 200.8.9.18:8848;
}
server{
  listen 8848;
  server_name nacos.dev.companydomain.com;
  location / {
    proxy_pass http://nacos-server;
  }
}


使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。

客户端拥有相同的计算逻辑,用户如同1.X的使用方式,配置主端口(默认8848),通过相同的偏移量,计算对应gRPC端口(默认9848)。

因此如果客户端和服务端之前存在端口转发,或防火墙时,需要对端口转发配置和防火墙配置做相应的调整。

参考:https://nacos.io/zh-cn/docs/2.0.0-compatibility.html

请注意,stream块和http块是两个不同的模块,stream不属于http模块,即不能放到/etc/nginx/conf.d/,stream是通过tcp层转发,而不是http转发。

nginx.conf增加tcp配置

include /usr/local/nginx/conf/tcp.d/*.conf;

mkdir /usr/local/nginx/conf/tcp.d/

配置nacos tcp转发

vi /usr/local/nginx/conf/tcp.d/nacos.conf

stream{
  upstream tcp_nacos_9848{
    hash $remote_addr consistent;
    server 200.8.9.16:9848 max_fails=3 fail_timeout=10s;
    server 200.8.9.17:9848 max_fails=3 fail_timeout=10s;
    server 200.8.9.18:9848 max_fails=3 fail_timeout=10s;
}
  server{
    listen 9848;
    proxy_connect_timeout 20s;
    proxy_timeout 5m;
    proxy_pass tcp_nacos_9848;
  }
}

/usr/local/nginx/sbin/nginx -V

检查是否有http_v2_module 和 with-stream

如果没有需要重新编译nginx

./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-stream

make

#make之后不要install ,否则会被覆盖,先备份原nginx文件,然后复制过去

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

cp objs/nginx /usr/local/nginx/sbin/

#验证配置

/usr/local/nginx/sbin/nginx -t

重启nginx

# 测试连接目标端口:

telnet localhost 9848

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

说明连接成功

测试完成,"Ctrl+C"结束

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部