错误信息如下:
2019-02-20 16:20:53,216 INFO The host [nacos_server] is not valid Note: further occurrences of request parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: The character [_] is never valid in a domain name. at org.apache.tomcat.util.http.parser.HttpParser$DomainParseState.next(HttpParser.java:926) at org.apache.tomcat.util.http.parser.HttpParser.readHostDomainName(HttpParser.java:822) at org.apache.tomcat.util.http.parser.Host.parse(Host.java:71) at org.apache.tomcat.util.http.parser.Host.parse(Host.java:45) at org.apache.coyote.AbstractProcessor.parseHost(AbstractProcessor.java:288) at org.apache.coyote.http11.Http11Processor.prepareRequest(Http11Processor.java:809) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)主要原因是,一开始在配置upstream的时候,用了nacos_server作为名称,而在Nacos使用的Tomcat版本中不支持_符号出现在域名位置,所以上面截图给出的upstream的名称是nacosserver,去掉了_符号。
到这里,Nacos的集群搭建就完成了!我们可以通过Nginx配置的代理地址::8080/nacos/来访问Nacos,在Spring Cloud应用中也可以用这个地址来作为注册中心和配置中心的访问地址来配置。读者可以使用文末的代码示例来修改原来的Nacos地址来启动,看是否可以获取配置信息来验证集群的搭建是否成功。也可以故意的关闭某个实例,来验证Nacos集群是否还能正常服务。
深入思考在Nacos官方文档的指引下,Nacos的集群搭建总体上还是非常顺畅的,没有什么太大的难度。但是值得思考的一个问题跟在上一篇中讲数据持久化的思考类似,作为一个注册中心和配置中心,Nacos的架构是否显得太过于臃肿?除了Nacos自身之外,还需要依赖更多的中间件来完成整套生产环境的搭建,相较于其他的可以用于服务发现与配置的中间件来说,就不那么有优势了。尤其对于小团队来说,这样的复杂度与成本投入,也是在选型的时候需要去考虑的。
代码示例本文介绍内容的客户端代码,示例读者可以通过查看下面仓库中的alibaba-nacos-config-client项目:
Github:https://github.com/dyc87112/SpringCloud-Learning/
Gitee:https://gitee.com/didispace/SpringCloud-Learning/
如果您对这些感兴趣,欢迎star、follow、收藏、转发给予支持!
前情回顾:《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》
《Spring Cloud Alibaba基础教程:支持的几种服务消费方式》
《Spring Cloud Alibaba基础教程:使用Nacos作为配置中心》
《Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解》
《Spring Cloud Alibaba基础教程:Nacos配置的多环境管理》
《Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置》
《Spring Cloud Alibaba基础教程:Nacos的数据持久化》
以下专题教程也许您会有兴趣Spring Boot基础教程
【新版】Spring Cloud从入门到精通