Nacos源码学习系列第2篇服务搭建之集群模式

目录

项目配置

项目启动

查看控制台


本篇是服务搭建系列的第二篇集群模式本地源码部署

本篇学习目标:能把Nacos服务端2.1.0版本的源码以Debug模式搭建3个集群节点运行再IDE中

项目配置

把项目的源码整体复制2份到新的文件夹【naco2】和【nacos3】

参照【Nacos源码学习系列第1篇服务搭建-单机模式】导入项目并设置启动端口分别为【8060】和【8070】

数据库连接配置3个服务可以共用一套, 不必重复创建数据库

集群模式我们用数据库作为存储,用外部存储会报错

项目启动

区别于单机模式的vm启动参数配置, VM参数需要设置为 -Dnacos.standalone=false

为每个服务创建3个独立的运行时文件目录 同时在该目录下创建一个conf子目录并创建 cluster.conf文件

文件目录结构:

【起始目录 -> nacos1 -> nacos -> conf -> cluster.conf】

【起始目录 -> nacos2 -> nacos -> conf -> cluster.conf】

【起始目录 -> nacos3 -> nacos -> conf -> cluster.conf】

文件内容统一如下:

你的ip:8860
你的ip:8850
你的ip:8870

注意: 每个项目一定要配置独立的运行目录, 共用的话服务启动会失败

分别为每个项目设置VM 参数 

-Dnacos.home=起始目录/nacos1

-Dnacos.home=起始目录/nacos2

-Dnacos.home=起始目录/nacos3

debug 模式运行 【cosole】模块下的 【Nacos.java】

看到下面的日志说明启动成功,启动过程有点慢,大概要2分钟左右:

2022-05-21 21:51:16.486  INFO 266344 --- [acos-starting.0] c.a.n.c.l.StartingApplicationListener    : Nacos is starting...
2022-05-21 21:51:17.507  INFO 266344 --- [acos-starting.0] c.a.n.c.l.StartingApplicationListener    : Nacos is starting...
2022-05-21 21:51:18.566  INFO 266344 --- [acos-starting.0] c.a.n.c.l.StartingApplicationListener    : Nacos is starting...
2022-05-21 21:51:19.585  INFO 266344 --- [acos-starting.0] c.a.n.c.l.StartingApplicationListener    : Nacos is starting...
2022-05-21 21:51:20.590  INFO 266344 --- [acos-starting.0] c.a.n.c.l.StartingApplicationListener    : Nacos is starting...
2022-05-21 21:51:21.595  INFO 266344 --- [acos-starting.0] c.a.n.c.l.StartingApplicationListener    : Nacos is starting...
2022-05-21 21:51:22.345  INFO 266344 --- [           main] c.a.n.c.l.StartingApplicationListener    : Nacos started successfully in cluster mode. use external storage

如果启动过程中碰到下面的错误,原因是没有找到运行目录下的集群配置文件【nacos -> conf -> cluster.conf】:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverMemberManager' defined in file [D:\code\nacos2\core\target\classes\com\alibaba\nacos\core\cluster\ServerMemberManager.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.core.cluster.ServerMemberManager]: Constructor threw exception; nested exception is ErrCode:500, ErrMsg:jmenv.tbsite.net
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:304)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:285)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
	... 90 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.core.cluster.ServerMemberManager]: Constructor threw exception; nested exception is ErrCode:500, ErrMsg:jmenv.tbsite.net
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:187)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:117)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:300)
	... 104 common frames omitted
Caused by: com.alibaba.nacos.api.exception.NacosException: java.net.UnknownHostException: jmenv.tbsite.net
	at com.alibaba.nacos.core.cluster.lookup.AddressServerMemberLookup.run(AddressServerMemberLookup.java:152)
	at com.alibaba.nacos.core.cluster.lookup.AddressServerMemberLookup.doStart(AddressServerMemberLookup.java:100)
	at com.alibaba.nacos.core.cluster.AbstractMemberLookup.start(AbstractMemberLookup.java:55)
	at com.alibaba.nacos.core.cluster.ServerMemberManager.initAndStartLookup(ServerMemberManager.java:185)
	at com.alibaba.nacos.core.cluster.ServerMemberManager.init(ServerMemberManager.java:165)
	at com.alibaba.nacos.core.cluster.ServerMemberManager.<init>(ServerMemberManager.java:146)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:175)
	... 106 common frames omitted
Caused by: java.net.UnknownHostException: jmenv.tbsite.net
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:606)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
	at sun.net.www.http.HttpClient.New(HttpClient.java:339)
	at sun.net.www.http.HttpClient.New(HttpClient.java:357)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
	at com.alibaba.nacos.common.http.client.request.JdkHttpClientRequest.execute(JdkHttpClientRequest.java:114)
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.execute(NacosRestTemplate.java:482)
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.get(NacosRestTemplate.java:72)
	at com.alibaba.nacos.core.cluster.lookup.AddressServerMemberLookup.syncFromAddressUrl(AddressServerMemberLookup.java:175)
	at com.alibaba.nacos.core.cluster.lookup.AddressServerMemberLookup.run(AddressServerMemberLookup.java:143)
	... 116 common frames omitted

查看控制台

浏览器打开控制台

http://127.0.0.1:8050/nacos

登录信息(nacos/nacos)

总结

有了第一篇单机部署的基础,集群部署其实只需要在配置上注意下创建独立的配置文件就可以了下面是我本地的vm配置参数

-Dnacos.home=C:/Users/86130/nacos/nacos2 -Dnacos.standalone=false  -DembeddedStorage=false

微信公众号搜索【奇点架构】欢迎订阅

搭建 Nacos 集群,您需要准备以下内容: 1. 两台或以上的云服务器,建议配置 4 核 8G 内存以上,操作系统为 CentOS 7 或以上版本。 2. 安装 JDK,版本建议选择 1.8 或以上版本。 3. 下载最新的 Nacos 发行版。 接下来,您可以按照以下步骤进行操作: 1. 在所有云服务器上安装 JDK,并确保环境变量已正确设置。 2. 下载 Nacos 发行版并解压到各个云服务器上。 3. 修改 Nacos 配置文件,包括 application.properties 和 cluster.conf 文件。 4. 启动 Nacos 集群。 具体操作步骤如下: 1. 安装 JDK 在云服务器上安装 JDK,可使用以下命令: ``` yum install java-1.8.0-openjdk.x86_64 ``` 并确保环境变量已正确设置。 2. 下载 Nacos 发行版 从 Nacos 官网下载最新的发行版,解压到各个云服务器上。 ``` wget https://github.com/alibaba/nacos/releases/download/2.0.1/nacos-server-2.0.1.tar.gz tar -zxvf nacos-server-2.0.1.tar.gz ``` 3. 修改 Nacos 配置文件 修改各个云服务器上的 Nacos 配置文件,包括 `application.properties` 和 `cluster.conf` 文件。 首先修改 `application.properties` 文件,设置 `server.port` 和 `spring.datasource.platform`,以及其他需要修改的配置项。 ``` # server port server.port=8848 # database type spring.datasource.platform=mysql ``` 然后修改 `cluster.conf` 文件,将各个云服务器的 IP 地址添加进去。 ``` # ip:port 192.168.0.1:8848 192.168.0.2:8848 ``` 4. 启动 Nacos 集群 在各个云服务器上启动 Nacos 集群。 ``` sh startup.sh -m standalone ``` 其中 `-m` 参数可以设置为 `standalone`、`cluster` 或 `config`,这里选择 `standalone`。 在所有云服务器上启动成功后,即可进入 Nacos 控制台进行操作。 总结一下,搭建 Nacos 集群的步骤主要包括安装 JDK、下载 Nacos 发行版、修改配置文件以及启动 Nacos 集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值