nacos 用java代码启动集群

**

nacos 用java代码启动集群

**

一路遇到不少坑 而且网上也没有这种相关代码 当然这种方式也没有直接运行nacos简单

1,首先配置文件复制一份拷贝到application.yml上
注意 搭建集群 server.port要放在application.properties文件里  因为先加载yml文件 端口可能会被覆盖。
注意 搭建集群 server.port要放在application.properties文件里 因为先加载yml文件 端口可能会被覆盖
2,即使你用java代码方式启动nacos, nacos会自动在本地创建nacos文件存放日志 集群相关信息 默认路径:${user.home}/nacos 如图 这是nacos自动创建的在这里插入图片描述
启动项目后会出现以下错误
在这里插入图片描述
原因是自动创建的nacos/conf文件里没有集群配置信息 这里我们添加几个节点即可 添加后重启项目我们发现可以启动 但是紧接着我们启动第二个nacos时 会出现以下错误
在这里插入图片描述
我们查看详细日志 可以看到是这个jraft出现了错误在这里插入图片描述
我们打开log文件夹下的alipay-jraft.logw在这里插入图片描述
可以看到这个log文件处于不可访问状态
在这里插入图片描述
nacos集群节点肯定不能共用log信息的 不然排错发现问题就混淆了
在这里插入图片描述
在这里插入图片描述
可以发现他们读取到同一个文件夹了 这证实了我们的猜想 因为我们没有设置任何和nacos有关的路径参数 即使我们在nacos下建立一个nacos1 项目也不知道
通过一步步debug源码分析 我们发现在这里的得到了nacos的磁盘位置 如果我们不设置nacos.home参数 系统使用默认路径

在这里插入图片描述
说明我们可以自定义nacos根目录 由于System.getProperties是获取系统参数 虽然可以加-D指定nacos根目录 这样做的话每一次启动都要增加参数 比较麻烦 并且要制定全路径 可以考虑写在配置文件中 -D的参数我们可以通过System.getProperties获取

    static {
        String property = System.getProperty("nacos.home");
        String nacosHome = System.getProperty("user.home") + "/nacos/";
        // 获取 -D参数 为空表示使用配置文件里的路径(也是自定义的)
        // nacos.home=nacos8848
        if (StringUtils.isNotBlank(property)) {
            nacosHome = nacosHome + property;
        } else {
            Properties properties = new Properties();
            InputStream resourceAsStream = JeecgNacosApplication.class.getResourceAsStream("/application.properties");
            try {
                properties.load(resourceAsStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
            nacosHome = nacosHome + properties.getProperty("nacos.home");
        }
        System.setProperty("nacos.home", nacosHome);
    }

    public static void main(String[] args)  {

        SpringApplication.run(JeecgNacosApplication.class, args);
    }

当然做这些之前我们都要在以上路径里添加集群文件 把cluster.conf添加到nacos项目路径下
/nacos/nacos8848/conf /nacos/nacos8849/conf /nacos/nacos8850/conf
在这里插入图片描述

搭建成功 主要是文件不能共享这个问题困扰了我很久 debug一步一步往下走后就发现了问题 发现了问题所在 基本也就上解决问题了

要修改Nacos默认集群启动,需要进行以下步骤: 1. 修改nacos/bin/startup.sh文件,在文件中找到如下代码: ``` if [ "${MODE}" = "standalone" ]; then nohup $JAVA ${JAVA_OPT} ${JAVA_OPT_EXT} ${JAVA_OPT_LOG4J2} ${JAVA_OPT_SPRING} ${JAVA_OPT_CUST} ${JAVA_OPT_ETC} ${JAVA_OPT_JMX} ${JAVA_OPT_DEBUG} ${JAVA_OPT_MEM} ${JAVA_OPT_CONFIG} ${JAVA_OPT_PLUGIN} ${JAVA_OPT_EXT} -jar ${BASE_DIR}/target/nacos-server.jar ${ARGS} >/dev/null 2>&1 & else nohup $JAVA ${JAVA_OPT} ${JAVA_OPT_EXT} ${JAVA_OPT_LOG4J2} ${JAVA_OPT_SPRING} ${JAVA_OPT_CUST} ${JAVA_OPT_ETC} ${JAVA_OPT_JMX} ${JAVA_OPT_DEBUG} ${JAVA_OPT_MEM} ${JAVA_OPT_CONFIG} ${JAVA_OPT_PLUGIN} ${JAVA_OPT_EXT} -jar ${BASE_DIR}/target/nacos-server.jar ${ARGS} >/dev/null 2>&1 & fi ``` 在if语句中添加如下代码: ``` elif [ "${MODE}" = "cluster" ]; then nohup $JAVA ${JAVA_OPT} ${JAVA_OPT_EXT} ${JAVA_OPT_LOG4J2} ${JAVA_OPT_SPRING} ${JAVA_OPT_CUST} ${JAVA_OPT_ETC} ${JAVA_OPT_JMX} ${JAVA_OPT_DEBUG} ${JAVA_OPT_MEM} ${JAVA_OPT_CONFIG} ${JAVA_OPT_PLUGIN} ${JAVA_OPT_EXT} -jar ${BASE_DIR}/target/nacos-server.jar ${ARGS} -Dspring.profiles.active=cluster >/dev/null 2>&1 & ``` 这样就能启动Nacos集群模式了。 2. 修改nacos/conf/application.properties文件,在文件中找到如下配置: ``` # standalone mode spring.profiles.active=standalone ``` 将其修改为: ``` # cluster mode spring.profiles.active=cluster ``` 这样就能在Nacos集群模式下启动了。 3. 启动Nacos集群模式,在各个节点上执行以下命令: ``` sh startup.sh -m cluster ``` 这样就能启动Nacos集群模式了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值