nacos 安装
大约 3 分钟docker
对于开发环境的规划如下:
中间件名称 | 端口号 | 账号 | 密码 | 版本 | 依赖说明 |
---|---|---|---|---|---|
Nacos | 8848 | 数据库 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/
Docker安装方式说明(推荐)
Docker 可以一条命令完成 Nacos 服务端的启动, 太方便了 。并且可以在任务一台拥有 docker 环境的机子上执行, 大爱!
参考 dockerhub 的官方 Nacos镜像 说明安装
// 这样的启动方式 , 元数据没有保存下来的
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镜像 说明安装。
安装出现错误
在使用 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.html
关于架构组的 Linux 文件目录,需要重新规划一下