基于Nginx实现Nacos集群配置和应用
这一篇笔记记录了在通过Nginx作为负载均衡器,然后实现Nacos集群配置的相关内容。官方文档:《集群部署说明》
1、集群部署架构图
这里,会选择使用了Nginx作为代理,为Nacos集群提供统一对外的访问。
2、环境准备
- 三台虚拟机,Linux系统,IP地址分别是:192.168.1.8/9/10
- 准备JDK环境
- 分别下载并解压nacos-server-1.3.2.tar.gz文件,请参考前面内容。
3、集群配置
重命名根目录/conf/cluster.conf.example文件为cluster.conf,然后配置集群中的nacos服务节点,格式:IP:PORT,如下所示:
# ip:port
192.168.1.8:8848
192.168.1.9:8848
192.168.1.10:8848
4、启动集群
分别在三台服务器上,启动服务,命令如下:
#在根目录下执行
./bin/startup.sh -p embedded
5、验证
启动成功后,登录其中一个注册服务中心,比如:http://192.168.1.8:8848/nacos,然后打开集群管理-节点列表菜单,可以看见如下内容:
这时候如果在Spring cloud项目中使用注册发现,需要进行如下配置:
spring.cloud.nacos.discovery.server-addr=192.168.1.8:8848, 192.168.1.8:8848, 192.168.1.8:8848
查看集群状态时,只能通过其中一个Nacos服务的地址查看集群的情况。为了统一这种访问方式,屏蔽Nacos服务的访问地址,这里引入Nginx,通过反向代理实现访问方式的统一。
6、Nginx安装配置
请参考《Keepalived+Nginx搭建高可用Web集群》。
7、Nginx负载均衡配置
在Nginx根目录/conf目录下,有nginx.conf文件,添加如下配置即可:
首先,添加在http内添加upstream配置,如下所示:
upstream nacosserver {
server 192.168.1.8:8848;
server 192.168.1.9:8848;
server 192.168.1.10:8848;
}
这里选择了默认的负载均衡策略。然后,再配置代理路径,把访问/nacos/**的路径,通过http://nacosserver/nacos/代理,其中nacosserver是上面定义的名称。如下所示:
location /nacos/ {
proxy_pass http://nacosserver/nacos/;
}
最后,修改打印日志。这个可以不做,这里主要是为了访问集群时,可以通过日志判断,确实通过负载均衡把请求分发到了多个服务器。 具体如下:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $upstream_addr';
access_log logs/access.log main;
nginx.conf默认配置,去掉注释,然后在合适的位置增加$upstream_addr’即可。
这里nginx监听端口号改成了8080
修改完配置,启动或重新加载配置文件即可,命令:
#这里没有注册成服务,所以使用这种方法启动。
/usr/local/nginx/sbin/nginx
#或重新加载文件
/usr/local/nginx/sbin/nginx -s reload
8、验证Nginx
这时候,访问http://192.168.1.8:8080/nacos,通过默认密码登录后,刷新几次页面。然后去查看nginx的访问日志,如下所示:
192.168.1.87 - - [22/Oct/2020:17:22:50 +0800] "PUT /nacos/v1/ns/instance/beat?app=qriver-nacos-server&namespaceId=public&port=8001&clusterName=DEFAULT&ip=192.168.254.1&serviceName=DEFAULT_GROUP%40%40qriver-nacos-server&encoding=UTF-8 HTTP/1.1" 200 75 "-" "Nacos-Java-Client:v1.2.1" "-" 192.168.1.9:8848
192.168.1.87 - - [22/Oct/2020:17:22:55 +0800] "PUT /nacos/v1/ns/instance/beat?app=qriver-nacos-server&namespaceId=public&port=8001&clusterName=DEFAULT&ip=192.168.254.1&serviceName=DEFAULT_GROUP%40%40qriver-nacos-server&encoding=UTF-8 HTTP/1.1" 200 64 "-" "Nacos-Java-Client:v1.2.1" "-" 192.168.1.8:8848
192.168.1.87 - - [22/Oct/2020:17:23:00 +0800] "PUT /nacos/v1/ns/instance/beat?app=qriver-nacos-server&namespaceId=public&port=8001&clusterName=DEFAULT&ip=192.168.254.1&serviceName=DEFAULT_GROUP%40%40qriver-nacos-server&encoding=UTF-8 HTTP/1.1" 200 64 "-" "Nacos-Java-Client:v1.2.1" "-" 192.168.1.10:8848
192.168.1.87 - - [22/Oct/2020:17:23:05 +0800] "PUT /nacos/v1/ns/instance/beat?app=qriver-nacos-server&namespaceId=public&port=8001&clusterName=DEFAULT&ip=192.168.254.1&serviceName=DEFAULT_GROUP%40%40qriver-nacos-server&encoding=UTF-8 HTTP/1.1" 200 75 "-" "Nacos-Java-Client:v1.2.1" "-" 192.168.1.9:8848
192.168.1.87 - - [22/Oct/2020:17:23:10 +0800] "PUT /nacos/v1/ns/instance/beat?app=qriver-nacos-server&namespaceId=public&port=8001&clusterName=DEFAULT&ip=192.168.254.1&serviceName=DEFAULT_GROUP%40%40qriver-nacos-server&encoding=UTF-8 HTTP/1.1" 200 64 "-" "Nacos-Java-Client:v1.2.1" "-" 192.168.1.8:8848
192.168.1.87 - - [22/Oct/2020:17:23:10 +0800] "DELETE /nacos/v1/ns/instance?app=qriver-nacos-server&namespaceId=public&port=8001&clusterName=DEFAULT&ip=192.168.254.1&ephemeral=true&serviceName=DEFAULT_GROUP%40%40qriver-nacos-server&encoding=UTF-8 HTTP/1.1" 200 2 "-" "Nacos-Java-Client:v1.2.1" "-" 192.168.1.10:8848
通过打印的日志,我们可以确定确实轮询访问了每个nacos服务。
9、应用中配置
这时候如果在Spring cloud项目中使用注册发现,只需要配置统一的访问入口即可,配置如下:
spring.cloud.nacos.discovery.server-addr=192.168.1.8:8080
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68781.html