SpringCloud集成Nacos注册中心和配置中心

SpringCloud集成Nacos注册中心和配置中心

1.下载Nacos

中文文档

下载地址

选择自己系统对应的版本

2.安装Nacos(Linux)

1.解压

将下载的安装包上传至服务器指定位置

unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz

2.修改配置文件

新建数据库,导入nacos所需表数据

cd nacos/conf

将目录下两个sql文件导入准备好的数据库中
注意mysql版本要求5.6版本以上,否则不支持current_timestamp作为datetime的默认值
image-20201229101831480

修改配置文件

vim application.properties

修改nacos服务端口号(可不改,根据自己需求)

image-20201229102316068

修改数据库配置

image-20201229111159497

3.启动服务

cd ../bin
Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone
Windows

启动命令(standalone代表着单机模式运行,非集群模式):

cmd startup.cmd -m standalone

单机启动时如果sh startup.sh 启动失败可以修改配置文件

修改配置文件单机启动
vim startup,sh
1)单机模式启动:

修改bin目录下的startup.cmd文件,将set MODE="cluster"一行改成set MODE="standalone",然后直接运行startup.cmd。运行成功后,访问http://localhost:8848/nacos可以查看Nacos的主页,默认账号密码都是nacos。

(2)数据库集群模式启动:

i)在MySQL中新建数据库:

  • 库名:nacos_config
  • 字符集:utf8 — UTF-8 Unicode
  • 排序规则:utf8_general_ci

ii)将nacos/conf/nacos-mysql.sql文件里的sql脚本执行到上面新建的数据库中。

iii)修改nacos/conf/application.properties配置文件,修改以下几项:

12345678910### If use MySQL as datasource:spring.datasource.platform=mysql ### Count of DB:db.num=1 ### Connect URL of DB:db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?autoReconnect=true&connectTimeout=1000&socketTimeout=3000&useUnicode=true&characterEncoding=utf-8&failOverReadOnly=false&useSSL=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghaidb.user=rootdb.password=root

iv)维持bin目录下的startup.cmd文件中的set MODE="cluster"这一行不变,然后将nacos/conf/cluster.conf.example文件复制一份改名为cluster.conf但是要保持里面内容为空

需要注意的是,这一步骤不能省略也不能出错。如果没有cluster.conf文件在启动时就会出现本篇文章标题中的那个错误;如果cluster.conf文件中添加了服务地址,后续可能导致服务没法注册到Nacos,爆java.net.SocketTimeoutException: Read timed out错误。具体原因我看了下nacos-1.3.2的源码,应该是com.alibaba.nacos.naming.web.DistroFilter#doFilter方法的处理逻辑有些问题,如果cluster.conf文件存在服务地址,可能导致无限循环转发请求,然后就出现前面那个java.net.SocketTimeoutException: Read timed out错误了。切记切记!

v)启动bin目录下的startup.cmd文件,启动成功之后效果如下:

img

运行成功后,访问http://localhost:8848/nacos可以查看Nacos的主页,默认账号密码都是nacos。

img

3.设置nacos命名空间

nacos命名空间可以理解为配置各个环境,个人喜欢划分为dev、test、prd,空间ID可以不设置会自动生成,项目配置环境时会用到

image-20201229112438817

新建完成后可以在配置管理里面看到刚刚新建的各个空间

image-20201229112642830

4.新建配置文件

配置管理>配置列表>右上角新建按钮

image-20201229112751001image-20201229112921089

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

Group个人喜欢以项目名为分组,可以默认

配置格式个人习惯使用YAML

配置内容可以将项目汇总的application.yml直接粘贴进来,保存的时候有格式校验,注意修改!

image-20201229113156703

5.项目配置

1.新建bootstrap.yml配置文件

使用Nacos必须使用bootstrap.yml作为nacos配置文件,否则无法加载配置

目前分为dev和test环境所以新建bootstrap-dev.yml和bootstrap-test.yml

2.修改配置文件

image-20201229114434963

test环境类型,对应修改相对应的group和namespace

3.修改IDEA启动参数

Run -> Edit CommonApplication

image-20201229114811452

选择对应服务指定启动环境

4.添加maven依赖和修改启动类

4.1 maven添加maven依赖

在pom文件中添加nacos依赖

        <!--配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>${nacos-version}</version>
        </dependency>
        <!--注册中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>${nacos-version}</version>
        </dependency>
        <!--加载bootstrao.yml配置文件->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

5.服务器部署

新建 xxx.sh

touch xxx.sh
vim xxx.sh

将下面内容复制进去

#!/bin/sh
#date:2020-12-12;
#author:LHN

#此处修改脚本名称:
APP_NAME=demo-0.0.1-SNAPSHOT.jar
#脚本菜单项
usage() {
 echo "Usage: sh tf.sh [start|stop|restart|status|log]"
 exit 1
}

is_exist(){
 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
 #如果不存在返回1,存在返回0
 if [ -z "${pid}" ]; then
 return 1
 else
 return 0
 fi
}
#启动脚本
start(){
 is_exist
 if [ $? -eq "0" ]; then
 echo "${APP_NAME} is already running. pid=${pid} ."
 else
#此处注意修改jar和log文件文件位置:
 nohup java -jar /home/manage/$APP_NAME --spring.profiles.active=test  >/dev/null &
#此处打印log日志:
#tail -f /home/manage/logs/manage.demo.log
 fi
}
#停止脚本
stop(){
 is_exist
 if [ $? -eq "0" ]; then
 kill -9 $pid
 else
 echo "${APP_NAME} is not running"
 fi
}
#显示当前jar运行状态
status(){
 is_exist
 if [ $? -eq "0" ]; then
 echo "${APP_NAME} is running. Pid is ${pid}"
 else
 echo "${APP_NAME} is NOT running."
 fi
}
#打印日志
log(){
 #此处打印log日志:注意修改日志文件目录
 tail -f /home/manage/logs/manage.demo.log
}
#重启脚本
restart(){
 stop
 start
}

case "$1" in
 "start")
 start
 ;;
 "stop")
 stop
 ;;
 "status")
 status
 ;;
 "restart")
 restart
 ;;
 "log")
 log
 ;;
 *)
 usage
 ;;
esac

6.启动服务

sh xxx.sh start     //启动
sh xxx.sh log       //日志
sh xxx.sh restart   //重启
sh xxx.sh stop      //停止

服务启动后服务管理>服务列表中对应的空间中可以查看对应的服务

image-20201229120047223

完美与swagger融合

image-20201229120154967

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值