nacos 安装

莫飞大约 3 分钟docker

对于开发环境的规划如下:

中间件名称端口号账号密码版本依赖说明
Nacos8848数据库 mysql

Nacos

目前公司基于 nacos 来做 服务注册发现配置中心 ,所以 nacos 也必需组件之一,业务组的服务启动必需依赖的一款中间件。

因此需要掌握 nacos 是非常重要的 ;

依赖说明: docker 运行问题

# 查看docker 版本
docker -v

物理部署快速安装说明(基础)

为保证快速安装足够地简单, 我们应该知道物理部署的方式, 就是直接在 开发的机子上启动 java 进程的方式启动。

其他的部署方式,比如 Docker , Docker-Compose ,或者 K8s 方式部署,都是基于物理部署的方式进行。

下载 tar 包并构建运行脚本

# ~安装目录, 下载并解压 
echo '开始下载nacos'
cd ~
wget https://github.com/alibaba/nacos/releases/download/2.0.2/nacos-server-2.0.2.tar.gz
tar -zxvf nacos-server-2.0.2.tar.gz

# 构建自动化启动脚本
echo ’cd ~/nacos’ > start-nacos.sh
echo ’./bin/startup.sh -m standalone’ > start-nacos.sh
chmod +x start-nacos.sh

自动化启动脚本说明

# ~安装目录, 下载并解压 
cd ~
./start-nacos.sh

目录结构说明(包含日志)

# ~安装目录, 下载并解压 
cd ~
./start-nacos.sh

验证安装成功

打开浏览器并访问 Nacos 控制台

link:http://127.0.0.1:8848/nacos/open in new window

Docker安装方式说明(推荐)

Docker 可以一条命令完成 Nacos 服务端的启动, 太方便了 。并且可以在任务一台拥有 docker 环境的机子上执行, 大爱!

参考 dockerhub 的官方 Nacos镜像open in new window 说明安装

// 这样的启动方式 , 元数据没有保存下来的 
docker run --name nacos-quick -e MODE=standalone -p 8849:8848 -d nacos/nacos-server:2.0.2

注意,如果是 2.X 的版本会同时开放多一个 GRPC 的端口,端口计算是通过 偏移量计算的。 比如你配置了 8848 ,那么 GRPC的端口就是 9848

// 2.x 以上是这样的启动方式 , 元数据没有保存下来的 
docker run --name nacos-quick -e MODE=standalone -p 8849:8848 -p 9849:9848 -d nacos/nacos-server:2.0.2

更多配置,参考 官方 Nacos镜像open in new window 说明安装。

安装出现错误

在使用 Docker 安装 Nacos 2.2.1版本的时候,出现下面的错误

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'NACOS_AUTH_IDENTITY_KEY' in value "${NACOS_AUTH_IDENTITY_KEY}"

直接下载源码,通过单击启动的时候会爆出这个错误

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'basicAuthenticationFilter' defined in class path resource [com/alibaba/nacos/prometheus/filter/PrometheusAuthFilter.class]: Unsatisfied dependency expressed through method 'basicAuthenticationFilter' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'nacosAuthConfig' defined in URL [jar:file:/Users/murphy/data/nacos2.2.1/target/nacos-server.jar!/BOOT-INF/lib/nacos-plugin-default-impl-2.2.1.jar!/com/alibaba/nacos/plugin/auth/impl/NacosAuthConfig.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'tokenManagerDelegate': Unsatisfied dependency expressed through field 'jwtTokenManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jwtTokenManager' defined in URL [jar:file:/Users/murphy/data/nacos2.2.1/target/nacos-server.jar!/BOOT-INF/lib/nacos-plugin-default-impl-2.2.1.jar!/com/alibaba/nacos/plugin/auth/impl/token/impl/JwtTokenManager.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.plugin.auth.impl.token.impl.JwtTokenManager]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: the length of secret key must great than or equal 32 bytes; And the secret key  must be encoded by base64.Please see https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:541)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213)
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:212)
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:203)
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:97)
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:86)

解决办法,如果你是使用 Docker 官方镜像部署,并且需要开启密码鉴权的, 请参考官方文档 说明 https://nacos.io/zh-cn/docs/v2/guide/user/auth.htmlopen in new window

关于架构组的 Linux 文件目录,需要重新规划一下