08 | 服务治理:Nacos集群环境搭建
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何搭建Nacos服务注册中心的集群环境,强调了系统架构中高可用性的重要性。通过下载Nacos Server、修改启动项参数、创建DB Schema和Table、添加集群机器列表以及启动Nacos Server等步骤,读者可以了解如何搭建一个高可用的Nacos服务集群,以及如何使用MySQL作为Nacos的底层数据存储方案。文章还提到了在实际项目中,如何正确配置微服务Client连接到Nacos集群的做法,以及提供虚拟IP的技术手段。最后,文章提出了思考题,鼓励读者在评论区留下自学笔记,以便更好地理解Nacos的功能特性和集成方案。整体而言,本文内容详实,适合想要深入了解Nacos服务注册中心搭建的读者。
《Spring Cloud 微服务项目实战》,新⼈⾸单¥59
全部留言(53)
- 最新
- 精选
- Unknown置顶这边windows本地 搭建的时候,端口不要连续,如果连续的话,在启动时候,会报端口占用 的错误 nacos 中的其他服务会占用相邻的端口grpc
作者回复: 这个提醒很重要,我在示例里跨了很大的端口range,忘了提醒下同学们背后的原因了
2022-02-10234 - ~置顶Intel 的 mac,如果启动 nacos 时候,报错: 「找不到或无法加载主类,原因: java.lang.ClassNotFoundException」,八成是你的 jdk 版本不是 8,可以参照这个博客解决(我是按照方案 2 改动脚本,成功启动)。https://blog.csdn.net/shentian885/article/details/120718915 另:老师能否出个加餐讲一下使用 docker 启动的方式,或者指点我一下吗?我根据你之前评论的链接尝试安装却失败了。主要原因我认为有二:1 是我把 MySQL 也通过 docker 安装了,nacos 启动时候会报错找不到 DataSource;2 是我不知道 nacos1 和 nacos2 两个容器之间的 ip 地址改怎么设置,是使用 docker 的「内部 ip(我也不清楚是不是这么叫)」,还是 localhost 直接设置,还是用我本机分配的内网 ip? 还麻烦老师解答一下,谢谢老师!!
作者回复: 环境问题是蛮有意思的,排查起来可能很久没头绪,最后突然间柳暗花明。 你可以把docker看做是模拟了一个虚拟网卡,当你本地访问docker容器,实际上就像是访问了一个局域网内的另一个机器,所以localhost是找不到了,这时候用docker的分配给容器的ip访问就可以。如果你想和宿主机绑定同样的地址其实也是可以的,需要在容器内部做一些配置。 考虑到大部分同学都是使用windows,而且经常搭建各种虚机,我这里有一篇收藏的文章,是很久之前我配置windows的时候参考过得,同学如果也是用windows可以试着看看 https://stackoverflow.com/questions/33814696/how-to-connect-to-a-docker-container-from-outside-the-host-same-network-windo
2022-01-0743 - 前行windows 环境下单机模拟集群部署,需要注意的是在两个 Nacos Server 的 conf 文件夹下 都配置 cluster.conf 文件,其他配置按照文章来,启动时在两个 Nacos Server 的 bin 文件下执行 .\startup.cmd 即可。
作者回复: 十分到位!
2021-12-2938 - Sally Kang 蓝姚老师 我有个问题需要请教。Nacos 2.0.3 集群环境搭建后,假设3个Nacos节点,点击集群管理 -> 节点列表 -> 任意下线某个节点后,该节点没办法重新上线(重新加入集群)。问题: 是Nacos没有提供集群节点上线功能?还是这是一个Bug?还是需要通过参数配置进行设置。
作者回复: 哈哈,同学你这是玩游戏开了踢人挂。 我提示你一点你就知道为啥了。当你点完下线之后,你可以打开cluster.conf文件里看一下发生了什么变化。然后呢,不要重启server,你只要再尝试把踢掉的节点加到文件里去,之后再回到节点列表页面,观察一下变化。 再给同学一个小提示,怎么通过现象找到背后的源码,比如你可以看一下这个下线请求的url地址,然后找到nacos源码里这个地址对应的controller,顺着找下去,你就能看到更下一层的memberJoin,memberLeave的蛛丝马迹。比如->ServerMemberManager,以及nacos是如何notify其它节点变化的
2021-12-2926 - yuMac M1 历经劫难,终于启动了单机nacos docker pull zhusaidong/nacos-server-m1:2.0.3 docker run -d -p 8848:8848 -p 9848:9848 -p 9555:9555 --name nacos-server \ -e PREFER_HOST_MODE=hostname \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM= \ -e MYSQL_SERVICE_HOST=127.0.0.1 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD= \ -e MYSQL_SERVICE_DB_PARAM=allowPublicKeyRetrieval=true \ --restart on-failure \ zhusaidong/nacos-server-m1:2.0.3
作者回复: 同学在M1上的探索很值得其他同学借鉴。 话说M2和M3也有了:)估计后来的同学还得踩一波坑
2022-04-1934 - Magic我的是m1芯片,采用老师在评论中回复的镜像搭建的。暂时还没翻车😀 # 拉取适合m1的镜像。 docker pull zhusaidong/nacos-server-m1:2.0.3 # nacos-cluster1 docker run -d \ -e PREFER_HOST_MODE=hostname \ -e MODE=cluster \ -e NACOS_APPLICATION_PORT=8848 \ -e NACOS_SERVERS="192.168.96.126:8848 192.168.96.126:8948" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=192.168.96.126 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e NACOS_SERVER_IP=192.168.96.126 \ -p 8848:8848 \ --name my-nacos1 \ zhusaidong/nacos-server-m1:2.0.3 # nacos-cluster2 docker run -d \ -e PREFER_HOST_MODE=hostname \ -e MODE=cluster \ -e NACOS_APPLICATION_PORT=8948 \ -e NACOS_SERVERS="192.168.96.126:8848 192.168.96.126:8948" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=192.168.96.126 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e NACOS_SERVER_IP=192.168.96.126 \ -p 8948:8948 \ --name my-nacos2 \ zhusaidong/nacos-server-m1:2.0.3
作者回复: 坦克车,翻不了
2022-02-1443 - 密码123456遇到了一个问题,目录不能用中文,目录不能用中文,目录不能用中文。
作者回复: 特殊字符、中文、空格,特别容易踩坑
2022-01-253 - kernel1、用腾讯云搭建nacos集群,在配置cluster.conf 后,启动,会在配置文件中多了一个 内网IP+端口?这是为什么? 10.0.16.14:8948 --- 这个是启动后自动加上的,对应的IP是腾讯云的内网ip 101.42.237.141:8848 101.42.237.141:8948 2、在idea中起服务,会报这个错误 failed to req API:/nacos/v1/ns/instance after all servers([101.42.237.141:8848]) tried: ErrCode:400 网上查是说cluster.conf文件中配置了其他nacos时,若其他未启动,则会出现上述报错!是不是那个内网ip+端口导致的?
作者回复: 我倒是没有在腾讯云玩过,我怀疑IP地址填错了,Nacos发现当前instance不在列表里所以主动把自个儿添加了进去。同学你看下Nacos启动的时候,在启动日志里Nacos图像旁边打印的IP是什么,然后在Nacos的application.properties里通过nacos.inetutils.ip-address=你的IP,把这个固定IP绑定上去,然后在启动试试。
2022-01-1823 - 码小呆一次就搭建成功了哇
作者回复: 简直神枪手! 我们都是神枪手,每一颗子弹消灭一个队友
2022-02-232 - Geek_ebdb72我用的docker-compose搭建的但是启动总是报no datasource set 请问有交流群么
作者回复: 大概率是两个原因跑不了:1)db.url或者用户名密码设置的不正确 2)Docker镜像中使用localhost/127.0.0.1访问不到镜像外资源,换个真实ip就好了。 同学朝这两个方向排查下吧
2022-02-1132