Nacos基本概念和单机部署

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: Nacos基本概念和单机部署

基本概念

在 Spring Cloud Alibaba 生态中,由 Nacos 中间件同时承担注册中心和配置中心职责,需要独立部署。官方地址为:https://nacos.io/zh-cn/index.html 是阿里开源项目,官方定义为:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
image.png

功能

动态配置服务

动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

服务发现及管理

动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。

动态DNS服务

通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
更多特性和功能说明查看官方文档

单机部署

nacos依赖java环境,首先需要安装jdk和配置环境变量

  • 安装jdk
yum -y install java-1.8.0-openjdk-devel.x86_64 
#安装成功后验证Java版本 
java -version 
  • 配置环境变量

OpenJDK 默认安装在 /usr/lib/jvm/ 路径下,之后通过编辑 profile 设置 JAVA_HOME 环境变量。

[root@zjq ~]# vim /etc/profile 
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64 
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 
[root@zjq ~]# source /etc/profile 

确认 JAVA_HOME 环境变量是否配置正确。

[root@server-1 ~]# echo $JAVA_HOME 
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64 

JDK安装后,正式进入 Nacos 的安装过程。

window安装

  1. 下载对应版本的nacos,并初始化数据库:https://github.com/alibaba/nacos/releases image.png

image.png

  1. 修改application.properties配置文件
### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=8848

### 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?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
  1. 进入bin目录启动nacos
#单节点启动
startup.cmd -m standalone

访问:http://localhost:8848/nacos/#/login 账号密码:nacos/nacos

linux安装

  1. 下载对应版本的压缩包文件并上传到对应服务器:https://github.com/alibaba/nacos/releases
  2. 解压对应的压缩包文件
tar -zxvf nacos-server-2.0.2.tar.gz

解压后nacos目录结构说明:

  • bin:保存启用/关闭 Nacos Server 脚本;
  • conf:Nacos Server 配置目录;
  • data:Nacos 数据目录;
  • logs:存放日志目录;
  • target:Nacos Jar 包存放目录;
  1. 进入bin目录,以单节点模式启动Nacos
sh startup.sh -m standalone

启动日志如下:

nacos is starting with standalone 
nacos is starting, you can check the /data/software/nacos/logs/start.out 

查看nacos启动日志
可以看出来nacos默认端口号为8848

tail -300f /data/software/nacos/logs/start.out

2021-11-06 21:03:18,759 INFO Tomcat started on port(s): 8848 (http) with context path '/nacos' 
2021-11-06 21:03:18,766 INFO Nacos Log files: /data/software/nacos/logs 
2021-11-06 21:03:18,766 INFO Nacos Log files: /data/software/nacos/conf 
2021-11-06 21:03:18,766 INFO Nacos Log files: /data/software/nacos/data 
2021-11-06 21:03:18,767 INFO Nacos started successfully in stand alone mode. use embedded storage

如果centos系统防火墙(firewall-cmd --state 查看防火墙状态)是开启的,需要开放8848和7848端口(8848 端口是 Nacos 对客户端提供服务的端口,7848 是 Nacos 集群通信端口,用于Nacos 集群间进行选举,检测等。)

#开放端口8848
[root@zjq bin]# firewall-cmd --zone=public --add-port=8848/tcp --permanent 
#开放端口7848
[root@zjq bin]# firewall-cmd --zone=public --add-port=7848/tcp --permanent 
#刷新防火墙
[root@zjq bin]# firewall-cmd  --reload 
  1. 进入 Nacos 管理界面,打开浏览器,地址栏输入:

http://ip:8848/nacos
输入账号密码:nacos/nacos进入管理页面

docker安装

  1. 拉取镜像:docker pull nacos/nacos-server:2.0.2
  2. 下载对应版本的SQL文件并初始化:https://github.com/alibaba/nacos/releases
  3. 构建容器并启动服务
docker run -d --privileged=true \
-e TZ="Asia/Shanghai" \
-e MODE=standalone \
-p 8848:8848 \
--name nacos-zjq-mysql \
--restart=always \
nacos/nacos-server:2.0.2
  1. 查看日志
docker logs -f -t --tail 300 nacos-zjq-mysql
  1. 进入容器
docker exec -it nacos-zjq-mysql bash
  1. 修改配置文件设置数据源为MySQL
cd /home/nacos/conf

vim application.properties

# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:127.0.0.1}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos_config}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true}
db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true}
db.user=${MYSQL_SERVICE_USER:root}
db.password=${MYSQL_SERVICE_PASSWORD:root}
### The auth system to use, currently only 'nacos' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
  1. 复制容器内的配置文件到宿主机,避免容器重新构建时候还要修改配置文件

docker cp 容器名称:容器文件(绝对路径) 宿主机目录

docker cp nacos-sa-mysql:/home/nacos/conf/application.properties /data/docker/nacos/nacos-soms/conf
  1. 重新启动容器并挂载目录
#停止容器
docker stop nacos-zjq-mysql
#删除容器
docker rm nacos-zjq-mysql
#启动容器
docker run -d --privileged=true \
-e TZ="Asia/Shanghai" \
-e MODE=standalone \
-v /data/docker/nacos/nacos-zjq/conf/application.properties:/home/nacos/conf/application.properties \
-p 8848:8848 \
--name nacos-zjq-mysql \
--restart=always \
nacos/nacos-server:2.0.2
  • nacos镜像启动的时候直接指定数据库配置
docker run -d \
-v /data/nacos/logs:/home/nacos/logs \
-e TZ="Asia/Shanghai" \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=数据库IP地址 \
-e MYSQL_SERVICE_PORT=数据库端口 \
-e MYSQL_SERVICE_USER=数据库账户 \
-e MYSQL_SERVICE_PASSWORD=数据库密码 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM= \
-e NACOS_APPLICATION_PORT=8848 \
-p 8848:8848 \
--name nacos-zjq-mysql \
--restart=always \
nacos/nacos-server:2.0.2

生产建议nacos注册中心服务部署多个节点,形成集群,提高可用性,防止单机节点宕机时服务不可用。

相关文章
|
2月前
|
Kubernetes Java Nacos
nacos常见问题之通过helm方式部署设置开启授权认证功能如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
179 0
|
1月前
|
Nacos Docker 容器
docker部署nacos
docker部署nacos
47 2
|
2月前
|
Oracle 关系型数据库 Shell
Nacos部署问题之多节点集群报错如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
|
8月前
|
Nacos
服务器部署 Nacos 获取不到配置浏览器可以访问
[Nacos Config] config[dataId=ruoyi-auth.yml,group=DEFAULT_GROUP] is empty、Nacos无法注册、gRPC、端口偏移
166 0
服务器部署 Nacos 获取不到配置浏览器可以访问
|
2月前
|
Arthas 运维 Kubernetes
nacos常见问题之2.2.4版本带密钥单机启动 -k不识别如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
14天前
|
Nacos 数据中心 Docker
Docker 部署 Nacos 集群
Docker 部署 Nacos 集群
|
18天前
|
关系型数据库 MySQL Nacos
使用 Docker 部署 Nacos 并配置 MySQL 数据源
使用 Docker 部署 Nacos 并配置 MySQL 数据源
99 0
|
19天前
|
存储 关系型数据库 MySQL
Nacos的单机以及集群部署模式
Nacos定义为一个IDC内部应用组件,并非面向公网环境的产品,建议在内部隔离网络环境中部署,强烈不建议部署在公共网络环境。
23 0
|
20天前
|
数据库连接 Nacos 数据库
nacos在windows系统下单机模式启动四部曲(2.1.2重置密码)
nacos在windows系统下单机模式启动四部曲(2.1.2重置密码)
23 0
|
2月前
|
Linux Nacos 数据库
【微服务】生产部署nacos集群(三个节点)
【微服务】生产部署nacos集群(三个节点)
69 1