Nacos配置中心(一)之安装和使用

1.什么是配置

应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。

配置主要有以下几个特点:

  • 配置是独立于程序的只读变量

配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置

  • 配置伴随应用的整个生命周期

配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。如:启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等。

  • 配置可以有多种加载方式

常见的有程序内部hard code,配置文件,环境变量,启动参数,基于数据库等

  • 配置需要治理

同一份程序在不同的环境(开发、测试、生产)、不同的集群(如不同的数据中心)经常需有不同的配置,所以需要有完善的环境、集群配置管理

什么是配置中心

在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了,不仅如此,分散中还包含着冗余,如下图:

下图显示了配置中心的功能,配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。

配置中心的服务流程如下:

  1. 用户在配置中心更新配置信息。

  2. 服务A和服务B及时得到配置更新通知,从配置中心获取配置。

总得来说,配置中心就是一种统一管理各种应用配置的基础服务组件。

在系统架构中,配置中心是整个微服务基础架构体系中的一个组件,如下图,它的功能看上去并不起眼,无非就是配置的管理和存取,但它是整个微服务架构中不可或缺的一环。

总结一下,在传统巨型单体应用纷纷转向细粒度微服务架构的历史进程中,配置中心是微服务化不可缺少的一个系统组件,在这种背景下中心化的配置服务即配置中心应运而生,一个合格的配置中心需要满足如下特性:

  • 配置项容易读取和修改

  • 分布式环境下应用配置的可管理性,即提供远程管理配置的能力

  • 支持对配置的修改的检视以把控风险

  • 可以查看配置修改的历史记录

  • 不同部署环境下应用配置的隔离性

Nacos主流配置中心对比

现在市场主流的配置中心有

1springcloud的config(spring官方的开源项目)

2Apollo(携程的)

3Nacos(阿里官方的)

                                                                         对比图

从配置中心的角度来看,性能方面Nacos最高,Apollo次之,Spring Cloud   Config依赖Git场景不适合开放的大规模自动化运维API。功能方面Apollo最为完整,Nacos具有Apollp大部分配置管理功能,而Spring Cloud Config 不带运维管理界面,需要开发开发。Nacos的一大优势是整合了注册中心,配置中心功能,部署和操作相比Apollo都要直观简单,因此它简化了架构复制度,并减轻运维及部署工作。

Nacos简介

Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现,配置管理,服务治理的综合型的解决方案。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速 实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos帮助你更敏捷和容易地构建、交付和管理微服务平台、Nacos是构建以“服务”为中心的现代应用架构

官网地址:https://nacos.io

Nacos特性 

Nacos主要提供四大功能

 1服务发现与健康检查

 2动态配置管理

 3动态DNS服务

 4服务与元数据管理

Nacos快速入门

安装Nacos Server

1.预备环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
64 bit JDK 1.8+;下载 & 配置。
Maven 3.2.x+;下载 & 配置。

下载源码或者安装包
你可以通过源码和发行包两种方式来获取 Nacos。

从 Github 上下载源码方式

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/
 
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

下载编译后压缩包方式

官网下载:Releases · alibaba/nacos · GitHub
您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。

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

3.启动服务器
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

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

bash startup.sh -m standalone

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

startup.cmd -m standalone

关闭服务器

Linux/Unix/Mac
sh shutdown.sh
Windows
shutdown.cmd

或者双击shutdown.cmd运行文件
物品中出现java.io.IOException: java.lang.IllegalArgumentException: db.num is null

set MODE="cluster"为
set MODE="standalone"

Linux安装Nacos

先确认你要下载的版本,然后执行命令即可。

第一步、下载Nacos

wget https://github.com/alibaba/nacos/releases/download/2.0.4/nacos-server-2.0.4.tar.gz

第二步、解压Nacos。

#创建文件夹
mkdir /usr/local/java/nacos
#解压缩
tar -zxvf nacos-server-2.1.0.tar.gz -C /usr/local/java/nacos

意思是在当前目录下创建nacos并解压到nacos目录。

 第三、执行脚本运行Nacos。

我们进入到nacos的bin目录,查看一下脚本情况:

[fangdake@localhost nacos]$ cd bin
[fangdake@localhost bin]$ ll
总用量 20
-rwxr-xr-x. 1 fangdake fangdake  954 3月  30 2021 shutdown.cmd
-rwxr-xr-x. 1 fangdake fangdake  951 3月  30 2021 shutdown.sh
-rwxr-xr-x. 1 fangdake fangdake 3368 12月  8 20:22 startup.cmd
-rwxr-xr-x. 1 fangdake fangdake 5136 12月  8 20:22 startup.sh

看到有四个脚本,分别是关闭和启动nacos的脚本,注意,cmd结尾的是windows下启动的脚本命令,sh结尾的才是我们要使用的Linux下的。

此时我们执行命令启动脚本:

./startup.sh
# 或者
sh startup.sh

上面说到,我们是以集群模式启动的,看这条输出的日志即可:

nacos is starting with cluster

第四步:修改配置文件 

以集群模式启动需要数据库持久化,我们修改这个启动脚本将它修改为单机模式。我们编辑启动脚本startup.sh,找到standalone复制,然后再把MODE修改为standalone即可。

  编辑 vim startup.sh,修改

1.找到export MODE => 修改export MODE="standalone"

或者在开头修改nacos的startup.sh文件开头添加当前的jdk路径,其他地方无需修改

JAVA_HOME=/software/java/jdk1.8.0_251

单机模式默认堆大小为 512m,可以修改 startup.sh 脚本去调整

外部数据库支持

创建数据库nacos,数据表 sql 文件是 nacos/conf/nacos-mysql.sql,导入即可​

配置文件路径为 nacos/conf/application.properties

$ cd nacos/conf/

$ vim application.properties

$server.port=8888

将数据库相关配置注释打开,修改用户名密码,保存并退出

#mysql
spring.datasource.platform=mysql 
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

换成自己的数据库连接信息。然后保存并退出,这样我们的nacos持久化就配置好了,然后启动nacos,点击nacos的bin目录下的start.cmd:

查看日志:

$ tail -f /home/ubuntu/nacos/nacos-standalone/nacos/logs/start.out

开机自启

vim /lib/systemd/system/nacos.service

输入 i 进入插入模式
添加

[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
#改成自己的jdk路径,因为服务脚本的环境和系统环境变量不能共享,所以还得设置才能生效。
Environment="JAVA_HOME=/usr/local/jdk1.8"
#standalone 是单机,默认是集群cluster
ExecStart=/usr/local/java/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/java/nacos/bin/shutdown.sh
ExecStop=/usr/local/java/nacos/bin/shutdown.sh
PrivateTmp=true 
[Install]  
WantedBy=multi-user.target

按 esc 退出插入模式
按:wq 保存
执行以下命令
先进行文件生效配置

systemctl daemon-reload

设置为开机启动:

systemctl enable nacos.service

启动nacos服务

systemctl start nacos.service

查看该service是否开机启用

systemctl is-enabled nacos.service

Docker安装Nacos

1、拉取镜像

docker pull nacos/nacos-server

2、挂载目录

mkdir -p /mydata/nacos/logs/                      #新建logs目录
mkdir -p /mydata/nacos/init.d/          
vim /mydata/nacos/init.d/custom.properties        #修改配置文件

3、mysql新建nacos的数据库,并执行脚本

下载地址

https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

4、修改配置文件custom.properties

server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://xx.xx.xx.x:3306/nacos_devtest_prod?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=pass

nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.naming.expireInstance=true

5、启动容器

docker  run \
--name nacos -d \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /mydata/nacos/logs:/home/nacos/logs \
-v /mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
nacos/nacos-server

6、浏览器输入服务器地址:http://xxx.xxx.xx.xx:8848/nacos/index.html,账号nacos 密码nacos,登陆成功!

 7.配置数据库

查看自定义网络中各容器ip

//查看网络
docker network ls
//查看网络容器
docker network inspect common-network

在这里插入图片描述

 在这里插入图片描述

进入nacos容器修改配置

// 进入容器  
docker exec -it nacos bash
// 修改容器配置
cd conf
vi application.properties

在这里插入图片描述

 创建数据库表(脚本地址)

https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql 

重启容器

docker restart nacos

nacos管理平台(新增配置 ,然后可在数据库查看)

http://ip:8848/nacos/index.html
nacos/nacos(用户名密码)

服务注册&发现和配置管理

服务注册

启动nacos成功后、可通过nacos提供的http、api验证nacos服务是否正常运行

下边我们通过curl工具来测试nacos的open api;

curl是开发中的常用命令行,可以做Http协议测试。

本教程下载cur的windows版本:下载地址:http://curl.haxx.se/windows/

步骤

下载curl安装包:wget http://curl.haxx.se/download/curl-7.38.0.tar.gz

解压:tar -xzvf curl-7.38.0.tar.gz

进入解压后的curl文件夹:cd curl-7.38.0

输入: ./configure --prefix=/usr/local/curl

输入:make && make install

检查安装是否成功:curl --version

发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

 下载完成进入crul的bin目录进行下边的测试,通过测试可判断nacos是否正常工作

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

服务发现

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'

windows环境下nacos单机启动两种方式

第一种启动方式:

进入nacos的解压目录\bin下
以notepad++方式打开startup.cmd
然后修改大概在26行的set MODE="cluster"为set MODE="standalone"

直接点击startup.cmd命令,就启动成功了

第二种启动方式:

在黑窗体环境下切换目录到nacos/bin下,然后输入命令startup.cmd -m standalone

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

我是一个小仓鼠01

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值