Nacos的介绍和部署
Nacos是阿⾥开源的⼀个项⽬,他可以致⼒于帮助您发现、配置和管理微服务。Nacos 提供了⼀组简单易⽤的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理解决⽅案。
我们这次主要介绍配置管理和服务发现。
1.什么是配置中⼼
1.什么是配置
应⽤程序在启动和运⾏的时候往往需要读取⼀些配置信息,配置基本上伴随着应⽤程序的整个⽣命周期,⽐如:数据库连接参数,启动参数等。
配置主要有⼀下⼏个特点:
* 配置是独⽴于程序的只读变量
。配置对于程序是只读的,程序通过读取配置来改变⾃⼰的⾏为,但是程序不应该去改变配置
* 配置伴随应⽤的整个⽣命周期
。配置贯穿于应⽤的整个⽣命周期,应⽤在启动时通过读取配置来初始化,在运⾏时根据配置调整⾏为。⽐如:启动时需要读取服务的端⼝号,系统在运⾏过程中需要读取定时策略执⾏定时任务等。
* 配置可以有多种加载⽅式
。常见的有程序内部hard code ,配置⽂件,环境变量,启动参数,基于数据库等
* 配置需要治理
。同⼀份程序在不同的环境(开发,测试,⽣产),不同的集(如不同的数据中⼼)经常需要有不同的配置,所以需要有完善的环境,集配置管理
2.什么是配置中⼼
在微服务架构中,当系统从⼀个单体应⽤,被拆分成分布式系统上⼀个个服务节点后,配置⽂件也必须跟着迁移(分割),这样配置就分散了,不仅如此,分散中还包含着冗余,如下图
下图显⽰了配置中⼼的功能,配置中⼼将配置从各应⽤中剥离出来,对配置进⾏统⼀管理,应⽤⾃⾝不需要⾃⼰去管理配置。
2.Nacos简介
1.主流配置中⼼对⽐
⽬前市⾯上⽤的⽐较多的配置中⼼有:Spring Clound Config, Apollo,Nacos和Disconf等。
由于Disconf不再维护,下⾯主要对⽐Spring Clound Config, Apollo和Nacos
2.Nacos简介
Nacos是阿⾥的⼀个开源产品,它是针对微服务架构中的服务发现,配置管理,服务治理的综合性解决⽅案。
官⽅的介绍是这样的:
官⽅地址:
curl是什么命令3.Nacos特性
Nacos主要提供以下四⼤功能:
1.服务发现和服务健康检查
Nacos使服务更容易注册,并通过DNS或HTTP接⼝发现其他服务,Nacos还提供服务的实时健康检查,以防⽌向不健康的主机或服务实例发送请求。
2.动态配置管理
动态配置服务允许您在所有环境中以集中和动态的⽅式管理所有服务的配置。Nacos消除了在更新配置时重新部署应⽤程序,这使配置的更改更加⾼效和灵活。
3.动态DNS服务
Nacos提供基于DNS协议的服务发现能⼒,旨在⽀持异构语⾔的服务发现,⽀持将注册在Nacos上的服务以域名的⽅式暴露端点,让三⽅应⽤⽅便的查阅及发现。
4.服务和元数据管理
Nacos能让您从微服务平台建设的视⾓管理数据中⼼的所有服务及元数据,包括管理服务的表述,⽣命周期,服务的静态依赖分析,服务的健康状态,服务的流量管理,路由及安全策略。
3.安装Nacos Server
1.预备环境准备
Nacos依赖java环境来运⾏。如果您是从代码开始构建并运⾏Nacos,还需要为此配置maven环境,请确保是在以下版本环境中安装使⽤;
1. 64 bit OS Linux/Unix/Mac,推荐使⽤Linux系统。
2. 64 bit JDK 1.8+;
3. Maven 3.2.x+;
基础环境的准备我这⾥就不做演⽰了,可以参考上⾯链接。
2.部署的过程
#下载Nacos稳定发布包
[root@linux-test-no src]# wget github/alibaba/nacos/releases/download/1.2.1/nacos-server-1.2.
这⾥⼀般官⽅下载⽐较慢,我这⾥有下好的可以⽤
链接:pan.baidu/s/16XBUXEFG1S2IYmKVmEAZew
提取码:f7q8
#解压运⾏Nacos包
[root@linux-test-no ~]# tar -zxvf nacos-server-1.2.
#编辑配置 vim conf/application.properties ⼀般默认配置就够⽤了,如果有特殊需求可参考配置列表进⾏⾃定义配置
#运⾏ Nacos bin/startup.sh -m standalone
[root@linux-test-no nacos]# bin/startup.sh -m standalone
这⾥是以单机模式运⾏的命令,如果要配置集需要编辑f ⽂件,并且需要在每个Nacos实例内conf/application.properties 配置数据库连接信息#启动完毕访问ip:8848/nacos,默认账号密码都是nacos
3.OPEN API配置管理测试
启动nacos成功之后,可通过nacos提供的http api验证nacos服务运⾏是否正常。
下边我们通过curl⼯具来测试nacos的open api:
curl是开发中常⽤的命令⾏⼯具,可以⽤作http协议测试。
通过下⾯的命令进⾏测试,通过测试可判断nacos是否正常⼯作:
发布配置
[root@linux-test-no ~]# curl -X POST "172.31.46.38:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
上边的命令表⽰向nacos发布⼀个配置:
获取配置
向nacos发布配置成功,就可以通过客户端从nacos获取配置信息,执⾏下⾯的命令
[root@linux-test-no ~]# curl -X GET "172.31.46.38:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
HelloWorld
通过测试发现,可以从nacos获取前边发布的配置:HelloWorld
4.关闭服务器
关闭nacos服务的⽅式如下:
[root@linux-test-no ~]# nacos/bin/shutdown.sh
The nacosServer(24570)
Send shutdown request to nacosServer(24570) OK
5.外部mysql数据库⽀持(推荐做)
单机模式是nacos默认使⽤嵌⼊式数据库实现数据的存储,若想使⽤外部mysql存储nacos数据,需要进⾏以下步骤:
1.安装数据库,版本要求:5.6.5+,mysql8以下
2.初始化mysql数据库,新建数据库nacos_config,数据库初始化⽂件:${nacoshome/conf/nacos-mysql.sql
3.修改${nacoshome}/conf/application.properties⽂件,增加⽀持mysql数据源配置(⽬前只⽀持mysql)
,添加mysql数据源的url,⽤户名和密码。
#部署数据库的过程我们这⾥就不演⽰了。
#⾸先创建进到数据库⾥创建nacos_config库并验证
mysql> create database nacos_config;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| nacos_config |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
#然后进⼊到nacos_config库下,并导⼊数据库初始化⽂件。
mysql> use nacos_config;
Database changed
mysql> select database();
+--------------+
| database() |
+--------------+
| nacos_config |
+--------------+
1 row in set (0.00 sec)
mysql> show tables;
Empty set (0.00 sec)
mysql> source /root/nacos/conf/nacos-mysql.sql;
。。。。。
mysql> show tables;
+------------------------+
| Tables_in_nacos_config |
+------------------------+
| config_info |
| config_info_aggr |
| config_info_beta |
| config_info_tag |
| config_tags_relation |
| group_capacity |
| his_config_info |
| permissions |
| roles |
| tenant_capacity |
| tenant_info |
| users |
+------------------------+
12 rows in set (0.00 sec)
#接下来就是修改nacos的配置⽂件application.properties,增加⽀持mysql数据源配置。
[root@linux-test-no ~]# vim nacos/conf/application.properties
spring.datasource.platform=mysql #在配置⽂件⾥到这⼀⾏,取消注释,然后在在其下加⼊下⾯⼏⾏
db.num=1
db.url.0=jdbc:mysql://172.31.46.38:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true #这⾥的地址填你数据库服务所在的地址
db.user=root #这⾥写对nacos_config库有权限的⽤户和密码,我这⾥为了⽅便直接⽤了数据库的root账号和密码,⽣产中不建议。
db.password=LiuBo@2020
#接下来我们重启⼀下nacos,使配置⽣效
[root@linux-test-no ~]# nacos/bin/shutdown.sh
The nacosServer(7692)
Send shutdown request to nacosServer(7692) OK
[root@linux-test-no ~]# nacos/bin/startup.sh -m standalone
#重新执⾏上⾯的发布配置命令,然后到Mysql数据库表中进⾏验证,看是否nacos配置mysql成功
mysql> select * from config_info; #这⾥重新执⾏发布配置命令我这⾥就省略掉了,执⾏完之后我们看到confing_info表下⽣成了表记录,证明nacos关联mysql配置成功
+----+------------------+----------+------------+----------------------------------+---------------------+---------------------+-
---------+--------------+----------+-----------+--------+-------+--------+------+----------+
| id | data_id | group_id | content | md5 | gmt_create | gmt_modified | src_user | src_ip | app_name | tenant_id | c_desc | c_use | effect | type | c_schema |
+----+------------------+----------+------------+----------------------------------+---------------------+---------------------+----------+--------------+----------+-----------+--------+-------+--------+------+----------+
| 1 | nacos.cfg.dataId | test | HelloWorld | 68e109f0f40ca72a15e05cc22786f8e6 | 2020-07-15 16:32:17 | 2020-07-15 16:32:17 | NULL | 172.31.46.38 | | | NULL | NULL | NULL | NULL | NULL | +----+------------------+----------+------------+----------------------------------+---------------------+---------------------+----------+--------------+----------+-----------+--------+-------+--------+------+----------+
1 row in set (0.00 sec)
4.Nacos配置⼊门
1.发布配置
⾸先在nacos发布配置。
浏览器访问我们部署的nacos地址:
打开nacos的控制台,并点击菜单配置管理-配置列表:
在Nacos添加如下的配置:
Data ID: nacos-simple-demo.yaml
Group: DEFAULT_GROUP
配置格式: YAML
配置内容: common:
config1: something
Note:注意dataid是以properties(默认的⽂件扩展名⽅式)为扩展名,这⾥使⽤yaml。操作过程如下图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论