Nacos是阿里开源的微服务架构组件,既可以用作服务注册中心,也可用作配置中心。

虽然Nacos的官方文档也有关于如何部署的说明,但是个人觉得不够详细和连续,故本文将阐述在单机环境实际搭建Nacos环境的详细步骤已经遇到的一些问题。

环境准备

由于安装的是单机环境,且需要使用MySQL数据库,所以需要在安装主机准备好Java8+运行时环境和MySQL数据库服务。

安装MySQL服务可以参考:yum方式安装mysql

安装步骤

第一步:下载Nacos安装包

Nacos的最新发布版本可以从这里下载,有2中格式的压缩包文件(zip和tar.gz),分别为:nacos-server-${version}.tar.gznacos-server-${version}.zip。如本文示例中使用的安装包为:nacos-server-2.2.3.zip

第二步:安装Nacos

由于Nacos只是一个简单的压缩包,所以所谓的安装就是解压到一个指定的目录即可,比如:~/opt

unzip nacos-server-2.2.3.zip -d ~/opt

从Nacos的配置文件中可以找到有关MySQL的连接配置,如下:

vim ~/opt/nacos/conf/application.properties
### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
# spring.datasource.platform=mysql
# spring.sql.init.platform=mysql ### Count of DB:
# db.num=1 ### Connect URL of DB:
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# db.user.0=nacos
# db.password.0=nacos

显然,需要将如下几项配置参数的注释删除掉:

spring.sql.init.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos

由上述配置参数可知,默认连接的数据库名为nacos,连接用户名为:nacos,连接用户密码为:nacos

因此,需要登录MySQL数据库执行相应的初始化操作。

首先,需要创建一个名为nacos的数据库(如下命令基于MySQL 8.0.34操作)。

# 创建数据库
mysql> create database nacos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

其次,需要添加访问用户并为之授权。

# 添加用户
mysql> create user 'nacos'@'%' identified by 'nacos';
# 为用户授权
mysql> grant all privileges on *.* to 'nacos'@'%' with grant option;
# 刷新权限
mysql> flush privileges;

再者,在nacos的安装目录下还存在一个数据库表的初始化脚本,即:mysql-schema.sql,需要将该脚本导入上面创建的nacos数据库中。

## 登录到MySQL中并切换到nacos数据库后执行如下操作
mysql> source /root/opt/nacos/conf/mysql-schema.sql

至此,运行一个使用MySQL数据库的单实例nacos环境已经准备好了。

第三步:启动Nacos

执行如下命令启动nacos:

cd ~/opt/nacos/bin
sh startup.sh -m standalone

查看日志~/opt/nacos/logs/start.out,当出现如下提示时说明nacos启动成功了。

         ,--.
,--.'|
,--,: : | Nacos 2.2.3
,`--.'`| ' : ,---. Running in stand alone mode, All function modules
| : : | | ' ,'\ .--.--. Port: 8848
: | \ | : ,--.--. ,---. / / | / / ' Pid: 7363
| : ' '; | / \ / \. ; ,. :| : /`./ Console: http://192.168.2.24:8848/nacos/index.html ## 这里提示访问nacos控制台页面的地址
' ' ;. ;.--. .-. | / / '' | |: :| : ;_
| | | \ | \__\/: . .. ' / ' | .; : \ \ `. https://nacos.io
' : | ; .' ," .--.; |' ; :__| : | `----. \
| | '`--' / / ,. |' | '.'|\ \ / / /`--' /
' : | ; : .' \ : : `----' '--'. /
; |.' | , .-./\ \ / `--'---'
'---' `--`---' `----' 2023-07-22 10:15:07,812 INFO Tomcat initialized with port(s): 8848 (http) ## nacos服务运行端口 2023-07-22 10:15:07,949 INFO Root WebApplicationContext: initialization completed in 3036 ms 2023-07-22 10:15:11,699 INFO Adding welcome page: class path resource [static/index.html]

nacos启动后默认会打开4个端口:7848884898489849

各个端口的含义及作用描述如下:

端口 与主端口的偏移量 描述
8848 0 主端口,客户端、控制台及OpenAPI所使用的HTTP端口
9848 1000 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
9849 1001 服务端gRPC请求服务端端口,用于服务间同步等
7848 -1000 Jraft请求服务端端口,用于处理服务端间的Raft相关请求

注:9849和7848端口为服务端之间的通信端口,请勿暴露到外部网络环境和客户端测。

第四步:停止Nacos

如果需要停止nacos,则执行如下操作:

cd ~/opt/nacos/bin
sh shutdown.sh

如何使用nacos作为注册中心

对于应用程序而言(不论是服务提供者还是服务消费者),通过如下2种方式集成nacos客户端即可接入nacos了。

方式1:引入nacos-client组件。

<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${version}</version>
</dependency>

方式2:对于Dubbo应用而言,还可以直接引入dubbo-registry-nacos组件。

<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>${version}</version>
</dependency>

如果是应用程序是基于Spring Boot框架开发,添加如下配置:

dubbo:
registry:
address: nacos://192.168.2.24:8848

如果项目并非基于Spring Boot框架开发,接入Nacos的详细步骤参考:Java SDK

至此,就完成了应用程序接入nacos的全部工作。

遇到的问题

Q1:主机未关闭防火墙,导致nacos无法连接MySQL数据库。

A1:我的安装环境为CentOS 8.5.2111,默认是启动了防火墙的,即使MySQL服务和nacos安装在同一台主机也需要将防火墙关闭才能连接,否则nacos会启动失败,并且在日志中会看到报错信息:Caused by: java.lang.IllegalStateException: No DataSource set

当然,我看github上有人还遇到了同样的报错问题,参考:部署 Nacos:2.0.3 连接 MySQL 报错 Nacos Server did not start because dumpservice bean construction failure : No DataSource set

关闭防火墙命令:systemctl stop firewalld.service

【参考】

Nacos 快速开始

Nacos部署环境

Nacos搭建单机实例的更多相关文章

  1. FastDFS搭建单机图片服务器(一)

    防丢失转载:https://blog.csdn.net/MissEel/article/details/80856194 根据 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 和 ...

  2. MySQL数据库与Nacos搭建监控服务

    目录 Nacos部署 项目环境 快速开始 nacos2.2.0版本配置说明 MySQL部署 安装方式 Linux平台(CentOS-Stream-9)部署MySQL 调试防火墙管理工具 MySQL用户 ...

  3. 【web】 亿级Web系统搭建——单机到分布式集群

      当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架 ...

  4. rabbitmq之基本原理及搭建单机环境

    1.RabbitMQ基本原理 1.MQ全称Message Queue,是一种分布式应用程序的通信方法,是消费-生产者模型的典型代表,producer向消息队列中不断写入消息,而另一端consumer则 ...

  5. 基于Docker的TensorFlow机器学习框架搭建和实例源码解读

    概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...

  6. 在Ubuntu14.04 64bit上搭建单机Spark环境,IDE为Intelli IDEA

    在Ubuntu14.04 64bit上搭建单机Spark环境,IDE为Intelli IDEA 一. 环境 Ubuntu14.04 64位    JDK 1.8.0_73    scala-2.10. ...

  7. springmvc环境搭建及实例

    一. 软件环境 eclipse-jee-mars-R-win32-x86_64 jdk1.7.0_79 apache-tomcat-7.0.52 spring-framework-3.2.0.RELE ...

  8. SpringMVC笔记——SSM框架搭建简单实例

    落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...

  9. hive_学习_01_hive环境搭建(单机)

    一.前言 本文承接上一篇:hbase_学习_01_HBase环境搭建(单机),主要是搭建 hive 的单机环境 二.环境准备 1.说明 hive 的下载来源有: 官方版本:http://archive ...

  10. hbase_学习_01_HBase环境搭建(单机)

    一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机)  ,主要是搭建HBase的单机环境 二.环境准备 1.说明 hbase 的下载来源有: 官方版本:http://arc ...

随机推荐

  1. [转帖]怎么查看Linux服务器硬件信息,这些命令告诉你

    https://zhuanlan.zhihu.com/p/144368206 Linux服务器配置文档找不到,你还在为查询Linux服务器硬件信息发愁吗?学会这些命令,让你轻松查看Linux服务器的C ...

  2. [转帖]军备芯片14nm对比5nm,在战场上差距在哪里?

    https://www.eet-china.com/mp/a207185.html 现在全球已经打响科技之战,每个国家都在力求让自己做到足够拔尖.美国商务部长就曾自曝家底说,美国制定两套战略应对在芯片 ...

  3. [转帖]Linux系统top命令中的io使用率,很多人都误解了它的具体含义

      https://baijiahao.baidu.com/s?id=1641356547223820839&wfr=spider&for=pc 最近在做连续数据流的缓冲系统,C语言代 ...

  4. AI五子棋 C++ 借助图形库raylib和raygui 设计模式思考过程和实现思路总结

    转载请注明 原文链接 :https://www.cnblogs.com/Multya/p/17988499 repo: https://github.com/Satar07/AI_GoBang_Pub ...

  5. vue结合elementUI折叠展开效果动画

    组件 <template> <div class="hide-page-com"> <ul class="tab-tilte"&g ...

  6. Docker中Nginx部署go应用

    docker配合Nginx部署go应用 Nginx 名词解释 正向代理 反向代理 构建镜像 Nginx镜像 配置nginx.conf server_name Nginx中的负载均衡 轮询 upstre ...

  7. python入门之后须掌握的知识点(excel文件处理+邮件发送+实战:批量化发工资条)【二】

    相关文章: python处理Excel实现自动化办公教学(含实战)[一] python处理Excel实现自动化办公教学(含实战)[二] python处理Excel实现自动化办公教学(数据筛选.公式操作 ...

  8. 5.11 汇编语言:仿写IF条件语句

    条件语句,也称为IF-ELSE语句,是计算机编程中的一种基本控制结构.它允许程序根据条件的真假来执行不同的代码块.条件语句在处理决策和分支逻辑时非常有用.一般来说,条件语句由IF关键字.一个条件表达式 ...

  9. 7.5 C/C++ 实现链表队列

    链表队列是一种基于链表实现的队列,相比于顺序队列而言,链表队列不需要预先申请固定大小的内存空间,可以根据需要动态申请和释放内存.在链表队列中,每个节点包含一个数据元素和一个指向下一个节点的指针,头节点 ...

  10. ARKit的理解与使用

    AR概述 AR的意义:让虚拟世界套与现实世界建立联系,并可以进行互动. AR的技术实现:通过实时地计算摄影机输出影像的位置及角度,并在内部通过算法识别将场景中的事物,然后在内部模拟的三维坐标系中给识别 ...