返回 导航

SpringBoot / Cloud

hangge.com

SpringCloud - 服务注册与配置中心Nacos使用详解1(单机部署)

作者:hangge | 2020-12-02 08:10
    在过去许多公司的 Spring Cloud 项目中,都是使用 Eureka 作为服务注册中心。虽然如今 Eureka 2.X 版本断更,但好在 Spring Cloud 并不强依赖 EurekaSpring Cloud 还支持其他一些服务注册中心组件,比如:ZookeeperConsul。从 Eureka 切换其他注册中心基本只需要改个依赖,加两行配置就可以了。
    本文介绍另一种替代方案:NacosNacos 是阿里云中间件团队开源的一个项目。它除了可以实现注册中心功能外,还是一个配置中心。简单来说就是 Spring Cloud Eureka + Spring Cloud Config + Spring Cloud Admin 的功能组合。
   下面是官方的描述:Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

一、单机部署

Nacos 不仅支持二进制部署,也支持 DockerK8S 部署,下面通过样例分别进行介绍。

1,通过二进制方式部署

(1)我们可以下载源码自行编译,也可以直接下载官方发行包使用(最新稳定版本),比如我这里下载 1.2.0 版本的发行包:
wget https://github.com/alibaba/nacos/releases/download/1.2.0/nacos-server-1.2.0.tar.gz

(2)下载后将其解压:
tar -xvf nacos-server-1.2.0.tar.gz

(3)接着进入 bin 文件夹:
cd nacos/bin

(4)然后执行如下命令启动服务(standalone 代表着单机模式运行,非集群模式)
./startup.sh -m standalone

(5)启动成功后,此时 Nacos 控制台就可以访问了。使用浏览器访问 http://IP:8848/nacos/index.html,可以看到如下控制台页面:

2,使用 Docker 部署

(1)Nacos 官方 Docker 部署方式 Git 地址如下:

(2)其中 example 目录下为用于 Docker Compose 启动的 yml 文件:
  • standalone-derby.yaml:用于单机部署(内存模式)
  • standalone-mysql-xx.yaml:用于单机部署(Mysql 模式)
  • cluster-hostname.yaml:用于集群部署

(3)首先我们执行如下命令拉取仓库:
git clone --depth 1 https://github.com/nacos-group/nacos-docker.git

(4)假设我们使用内存模式的单机部署,执行如下命令进入仓库目录,并启动服务:
cd nacos-docker
docker-compose -f example/standalone-derby.yaml up -d 

(5)启动后通过 docker ps 命令可以发现,通过 docker-compose 部署,除了运行了一个名为 nacos-standalone Nacos 容器,还运行了 prometheusgrafana 等监控组件。

(6)使用浏览器访问 http://IP:8848/nacos/index.html,可以看到如下控制台页面:

附:实现数据持久化

    当我们使用默认配置启动 Nacos 时,所有配置文件都被 Nacos 保存在了内置的数据库中。如果使用内嵌数据库,注定会有存储上限,而且也不方便观察数据存储的基本情况,下面演示如何使用 MySQL 来实现 Nacos 的数据持久化。

1,通过二进制方式部署

(1)首先我们创建一个名为 nacos_config 的数据库,然后使用官方提供的 sql 脚本(点击获取)进行初始化,结果如下:
注意MySQL 数据库建议使用 5.7 版的,如果版本太高(比如 8),可能会造成 Nacos 服务启动失败。

(2)然后修改配置文件 conf/application.properties 里数据库连接配置部分,然后再启动服务即可:

2,使用 Docker 部署

(1)使用 Docker 方式就更加简单了,我们只需要使用 standalone-mysql-5.7.yamlstandalone-mysql-8.yaml 文件启动即可,其他步骤同上面的内存模式一样。

(2)假设我们使用 standalone-mysql-5.7.yaml 启动容器:
docker-compose -f example/standalone-mysql-5.7.yaml up -d

(3)启动后通过 docker ps 命令可以发现,通过 docker-compose 部署,除了运了一个 Nacosprometheusgrafana 容器外,还运行了一个 MySQL 容器(而且该数据库不需要我们像上面那样手动初始化建表语句)。
评论

全部评论(0)

回到顶部