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. [转帖]Nginx Rewrite重写功能

    目录 一.rewrite的概述 1.1.概述 1.2 跳转场景 1.3 跳转实现 1.4 Rewrite实际场景 二.常用的nginx正则表达式 三.rewrite命令 3.1 rewrite的语法格 ...

  2. [转帖]KingbaseES 服务器运行参数分类

    https://www.cnblogs.com/kingbase/p/16969149.html Kingbase 服务器运行参数分类 说明: KingbaseES 数据库中,服务器运行参数分为多种类 ...

  3. [转帖]jmeter命令大全(命令行模式)

    jmeter命令 --? 打印命令行选项并退出 -h. --帮助 打印使用信息和退出 -v. --版本 打印版本信息并退出 -p. --propfile<argument> 要使用的jme ...

  4. [转帖]高性能网络实战:借助 eBPF 来优化负载均衡的性能

    https://zhuanlan.zhihu.com/p/592981662 网络性能优化,eBPF 是如何发挥作用的呢? 本篇文章,我就以最常用的负载均衡器为例,带你一起来看看如何借助 eBPF 来 ...

  5. [转帖]【JVM】JVM源码分析之Metaspace解密

    概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到 ...

  6. [转帖] Linux命令拾遗-剖析工具

    https://www.cnblogs.com/codelogs/p/16060472.html 简介# 这是Linux命令拾遗系列的第五篇,本篇主要介绍Linux中常用的线程与内存剖析工具,以及更高 ...

  7. [转]流程自动化机器人(RPA)概念、原理与实践

    [转]流程自动化机器人(RPA)概念.原理与实践 http://blog.sina.com.cn/s/blog_be0833d00102yho9.html 大多数人每天都会使用到一些机器人流程自动化工 ...

  8. 麒麟信安V3.4 安装PG15的过程V2.0

    改版说明 上一次进行了PG的安装当时发现自己少加了一部分ossp的处理. 这里补充上...不然挺浪费时间的. 背景 发现基于OpenEuler的几个系统使用CentOS的rpm包 安装PG数据库时有问 ...

  9. CS231N Assignment1 SVM 笔记

    svm.ipynb 为SVM实现一个完全矢量化的损失函数 为其解析梯度实现完全矢量化表达式 使用数值梯度检查实现结果 使用验证集调整学习率和正则化 使用 SGD 优化损失函数 可视化最终学习权重 第一 ...

  10. K3S +Helm+NFS最小化测试安装部署只需十分钟

    作者:郝建伟 k3s 简介 官方文档:k3s 什么是k3s k3s 是一个轻量级的 Kubernetes 发行版 它针对边缘计算.物联网等场景进行了高度优化. k3s 有以下增强功能: 打包为单个二进 ...