共计 8464 个字符,预计需要花费 22 分钟才能阅读完成。
Spring Cloud Alibaba:Nacos 装置及应用
Nacos
是什么?
Nacos 致力于帮忙开发者发现、配置和治理微服务。Nacos 提供了一组简略易用的个性集,帮忙开发者疾速实现动静服务发现、服务配置、服务元数据及流量治理。
Nacos 帮忙开发者更麻利和容易地构建、交付和治理微服务平台。Nacos 是构建以“服务”为核心的古代利用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos
次要蕴含两个局部,一个是配置核心,一个是服务注册与发现。本系列的文章将顺次对其进行分享介绍。
本篇将着重介绍Nacos
的单机与集群装置及一些根本的应用。
版本阐明
- Windows: win 10 64 位零碎
- Linux: Centos 7 64 位零碎
- Nacos: 1.3.2 (以后最新稳固版本)
Windows 单机装置
下载软件包
返回 GitHub Nacos Release 下载 nacos-server-1.3.2.zip
软件包到本地。
本地解压,目录构造如下图所示。
bin : 启动 / 敞开脚本
conf : Nacos 的配置文件
data : 未做长久化的时候数据会存储在此,比方配置数据(第一次运行后才会生成)
logs : Nacos 日志(第一次运行后才会生成)
target : nacos-server.jar 运行文件
参数配置
关上文件 conf/application.properties
文件,对 nacos 进行配置。
### 配置网页端拜访端口
server.port=8848
### 配置数据长久化的数据库,这里应用 mysql### 这里的配置默认是正文掉的,须要手动去除正文
### 如果须要启用数据库的话,须要导入 conf/nacos-mysql.sql 脚本
### 如果不启用数据库,则数据将长久化到本地 data/ 目录下
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### 数据库能够有多个,db.url.0=xxx db.url.1=xxx db.url.2=xxx
### 此处仅应用一个
### 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=username
db.password=password
### 关上认证受权零碎,默认为 false ### 此项配置并不会影响网页端的登录,设置为 true 或是 false 网页端拜访时均须要登录
### 此项配置开启的话,在代码中须要配置 nacos 的用户名及明码
### 即 spring.cloud.nacos.username 和 spring.cloud.nacos.password 两个参数,对应的是网页端登录的用户名明码
### If turn on auth system:
nacos.core.auth.enabled=true
### 其余配置依据本人的需要配置即可
留神: >
- 如需启用数据库,须要导入 conf/nacos-mysql.sql 脚本!
- 如需开启认证受权,须要在我的项目代码中配置用户名明码,否则会拜访失败!
启动
启动脚本在 bin/
目录下,windows 下应用 shutdown.cmd
与 startup.cmd
两个脚本。nacos 1.3.2
的脚本有个小改变,默认启动模式为 cluster
集群模式,所以要单机启动的话,有两种计划。
- 带参数运行
创立脚本文件 startup-standalone.cmd
,增加以下代码到文件中。
startup.cmd -m standalone
而后双击启动 startup-standalone.cmd
脚本即可。或者每次启动时应用 startup.cmd -m standalone
命令启动。
集体认为写个 startup-standalone.cmd
脚本更不便。
- 批改原有的脚本
应用编辑器关上脚本文件 bin/startup.cmd
,找到大略 27 行,依照下方代码编辑。
## 本来的代码
set MODE="cluster"
## 批改后的代码
set MODE="standalone"
批改后保留,而后间接运行 bin/startup.cmd
脚本即可。
验证
双击 bin/startup.cmd
或 bin/startup-standalone.cmd
脚本,单机运行,运行胜利则如下图所示。
能够看到启动的端口号,以及启动模式为 stand alone mode
单机模式,应用了内部存储(mysql)。
浏览器中关上链接: http://localhost:8848/nacos 拜访 Nacos。
输出用户名(默认为 nacos)明码(默认为 nacos),进入首页如下图所示。
具体的应用下章细说。留神登录胜利后要批改明码,不要应用默认明码。
Linux 单机装置
下载软件包
返回 GitHub Nacos Release 下载 nacos-server-1.3.2.tar.gz
软件包到本地。
而后应用命令解压。
# 下载软件包
# 如果应用 wget 下载的比较慢的话,能够在 windows 下载,而后传输到 linux 上。# 而且 .zip 和 .tar.gz 两个包仅是压缩形式不同,外面的文件是一样的,两个包都能够应用。wget https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-server-1.3.2.tar.gz
# 解压
# 倡议本人创立一个 nacos 利用目录,解压到 nacos 利用目录中,方便管理
tar -xvf nacos-server-1.3.2.tar.gz
目录构造与 windows 中的统一,不再赘述。
参数配置
参数配置也与 windows 中的统一,不再赘述。
启动
启动模式也根本与 windows 统一,只是须要应用 shutdown.sh
与 startup.sh
脚本。命令如下:
# 启动命令 - Linux 主动后盾运行
sh startup.sh -m standalone
# 敞开命令
sh shutdown.sh
同样,能够创立一个 startup-standalone.sh
脚本来间接启动。具体参考 windows 对应章节,不再赘述。
Linux 下启动会主动后盾运行,运行胜利后,如下图所示。
如需查看启动日志,能够应用上面的命令,日志的后果与 windows 简直统一。
# 日志所在门路,如上图最初一句打印日志所示
# nacos is starting,you can check the /root/soft/nacos/nacos/logs/start.out
tail -300f /root/soft/nacos/nacos/logs/start.out
验证
Linux 零碎须要留神防火墙是否开启,是否开启了 8848
端口或是自定义的端口。如果是阿里云或其余云服务器,同样须要记得开启端口,否则无法访问。
其余均与 windows 雷同,不再赘述。
Docker 单机装置
浏览此章节,默认已理解
Docker
的基础知识,不理解请先学习一下Docker
的基本知识。
Docker 下的装置有两种,一种是官网的 nacos-docker 仓库示例。一种本人编写docker-compose
进行自定义部署。
nacos-docker 官网示例
依照上面的命令进行部署。
# 克隆我的项目
# --depth 1 示意只克隆最近的一次 commit,这样下载的数据量最小
git clone --depth 1 https://github.com/nacos-group/nacos-docker.git
cd nacos-docker
# 单机 MySQL 模式
docker-compose -f example/standalone-mysql.yaml up -d
# 集群模式
docker-compose -f example/cluster-hostname.yaml up -d
此种形式,单机模式,将创立四个容器 nacos-server
、mysql
、prometheus
和grafana
。
对于我集体而言,我有本人的数据库,没必要再额定创立一个 mysql,另外 prometheus
和 grafana
的监控我也咱不须要。应用这种形式,比拟占用服务器的资源。
对于仅须要 nacos 性能的用户来说,自定义部署可能更加不便。如果想要懒人部署,或者有监控须要,能够应用这种部署形式。另外,官网的部署文件及配置很有参考价值。
自定义部署
创立一个 docker-compose.yaml
文件,将下列配置增加到文件中。
version: '3'
services:
nacos-server: image: nacos/nacos-server:1.3.2 container_name: nacos-server hostname: nacos-server restart: always ports: - 8848:8848 networks: - dev volumes: - ./logs/:/home/nacos/logs - ./conf/custom.properties:/home/nacos/init.d/custom.properties environment: - "MODE=standalone" - "SPRING_DATASOURCE_PLATFORM=mysql" # 应用你本人的数据库连贯信息
- "MYSQL_SERVICE_HOST=127.0.0.1" - "MYSQL_SERVICE_PORT=3306" - "MYSQL_SERVICE_USER=username" - "MYSQL_SERVICE_PASSWORD=password" - "MYSQL_SERVICE_DB_NAME=nacos" # 开启认证零碎
- "NACOS_AUTH_ENABLE=true"
# 自定义网络
networks:
dev: external: true
Nacos Docker 环境变量:
名称 | 形容 | 选项 |
---|---|---|
MODE | cluster/standalone | cluster/standalone default cluster |
NACOS_SERVERS | nacos cluster address | eg. ip1:port1 ip2:port2 ip3:port3 |
PREFER_HOST_MODE | 是否反对 hostname | hostname/ip default ip |
NACOS_APPLICATION_PORT | nacos server port | default 8848 |
NACOS_SERVER_IP | 当有多网络的时候自定义 nacos server ip | |
SPRING_DATASOURCE_PLATFORM | standalone support mysql | mysql / empty default empty |
MYSQL_SERVICE_HOST | mysql host | |
MYSQL_SERVICE_PORT | mysql database port | default : 3306 |
MYSQL_SERVICE_DB_NAME | mysql database name | |
MYSQL_SERVICE_USER | username of database | |
MYSQL_SERVICE_PASSWORD | password of database | |
MYSQL_SSL_ENABLE | use ssl | default : false |
MYSQL_DATABASE_NUM | 指定数据库的数量 | default :1 |
JVM_XMS | -Xms | default :2g |
JVM_XMX | -Xmx | default :2g |
JVM_XMN | -Xmn | default :1g |
JVM_MS | -XX:MetaspaceSize | default :128m |
JVM_MMS | -XX:MaxMetaspaceSize | default :320m |
NACOS_DEBUG | enable remote debug | y/n default :n |
TOMCAT_ACCESSLOG_ENABLED | server.tomcat.accesslog.enabled | default :false |
NACOS_AUTH_SYSTEM_TYPE | 认证零碎类型,目前仅反对nacos |
default :nacos |
NACOS_AUTH_ENABLE | 是否开启认证零碎 | default :false |
NACOS_AUTH_TOKEN_EXPIRE_SECONDS | token 过期工夫(以秒为单位) | default :18000 |
NACOS_AUTH_TOKEN | 默认 token | default :SecretKey012345678901234567890123456789012345678901234567890123456789 |
NACOS_AUTH_CACHE_ENABLE | 关上 / 敞开身份验证信息的缓存。通过关上此开关,认证信息的更新将有 15 秒的提早。 | default : false |
MEMBER_LIST | 应用配置文件或命令行参数设置集群列表 | eg:192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809 |
EMBEDDED_STORAGE | 集群模式下没有 mysql 的时候应用 embedded 存储 |
embedded default : none |
创立 ./conf/custom.properties
文件,并增加以下内容:
#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**
#management.metrics.export.elastic.host=http://localhost:9200
# metrics for prometheus
#management.endpoints.web.exposure.include=*
# metrics for elastic search
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200
# metrics for influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true
custom.properties
这个文件个别可能没用,如果你须要上述的参数,能够去到正文并进行设置。
实现之后,应用上面的命令启动 / 敞开 nacos-server
:
# 后盾启动
docker-compose up -d
# 敞开
docker-compose down
# 查看日志, 也能够间接查看 logs 中的日志
docker logs nacos-server
# 进入 Nacos 容器
docker exec -it nacos-server bash
验证
留神开启端口的拜访权限。
浏览器中关上链接: http://localhost:8848/nacos 拜访 Nacos 进行验证。
集群装置
集群的装置建设在单机装置的根底上,且 Windows 机器和 Linux 机器并没有什么不同,甚至一部分 Nacos 部署在 Windows 上,一部分部署在 Linux 都能够。
本节探讨的是如何部署一个生产可用的 Nacos 集群,并应用 MySQL 做数据长久化。
Nacos 集群部署架构图
数据库筹备
如果是生产环境的话,倡议搭建一个高可用的数据库,用来存储 Nacos 的长久化数据。具体搭建步骤不在本章的探讨领域,不再赘述。
依照之前单机装置的步骤,创立一个名为 nacos
的数据库,并导入 conf/nacos-mysql.sql 脚本生成必要的数据表和数据。
集群部署布局
集群部署,其实就是在不同的机器上,每个机器都部署一份 nacos-server
,而后编辑 ./conf/cluster.conf
集群配置文件,把这些机器汇总进去。而后 nacos 会主动选举出 Leader 及 Follower,实现集群的搭建。
节点调配如下:
实例 | IP | 端口 |
---|---|---|
nacos-server-01 | 192.168.9.11 | 8848 |
nacos-server-02 | 192.168.9.12 | 8848 |
nacos-server-03 | 192.168.9.13 | 8848 |
须要留神的是,如果是多台机器部署的话,须要保障这几台机器能够互相通信,且端口须要开启。
参数配置
首先须要筹备一份 nacos-server
安装包,解压,而后编辑 ./conf/application.properties
,配置内容与 Windows 单机装置 – 参数配置 大节中齐全一样。其中数据库批改为上一步筹备的数据库即可。
而后须要复制 ./conf/cluster.conf.example
文件并重命名为 cluster.conf
,这个文件就是集群的配置文件了,当前如果须要批改集群节点信息,也是编辑这个文件,比方增减节点等。
编辑实现后的 cluster.conf
内容对应下面的节点调配,如下所示:
# 多台机器部署集群
# 各节点的 IP 与端口
192.168.9.11:8848
192.168.9.12:8848
192.168.9.13:8848
留神,如果你只是想在一台机器上模仿集群环境的话,那么此文件的配置仅须要批改下 IP 和端口即可。如下所示:
# 单台机器部署集群
# 各节点的 IP 与端口
# IP 雷同,端口不同即可
192.168.9.10:8846
192.168.9.10:8847
192.168.9.10:8848
启动
编辑好之后,将 nacos-server
安装包,复制三份,别离上传到三台机器上。而后各自执行命令启动。
# 启动命令,因为 1.3.2 版本默认集群启动,所以能够间接运行。sh startup.sh
# 如果要带参数运行也能够,只有是以集群模式启动即可。sh startup.sh -m cluster
# 敞开 nacos-serversh shutdown.sh
验证
三台机器全副启动实现之后,轻易拜访哪一台机器上的 nacos 均可。
浏览器关上链接 http://192.168.9.11:8848/nacos 拜访 nacos。能够通过 集群治理 – 节点列表 来查看集群的状况。如下图所示:
同时能够点击右侧的 节点元数据 查看节点的详细信息。节点元数据如下:
{
"adWeight": "0",
"lastRefreshTime": 1601363785570,
"naming": {
"voteFor": "192.168.9.17:8846",
"ip": "192.168.9.17:8846",
"heartbeatDueMs": 4500,
"term": 1,
"leaderDueMs": 19701,
"state": "LEADER"
},
"raftPort": "7846",
"site": "unknow",
"version": "1.3.2",
"weight": "1"
}
naming.state
节点参数,指明了此节点为 Leader 节点,其余两个节点为 Follower。
Nginx 反向代理与负载平衡
Nginx 的装置不在本章节的探讨领域内,请自行查阅学习相干的信息。
关上 Nginx 的配置文件 conf/nginx.conf
,并在 http{}
节点下增加以下内容:
upstream nacos {server 192.168.9.11:8848; server 192.168.9.12:8848; server 192.168.9.13:8848;}
server {
# 拜访端口
listen 80; # 自定义域名或者 IP # server_name nacos.com; server_name 192.168.9.10;
location /nacos/ {proxy_pass http://nacos/nacos/;}}
配置实现后,从新加载 Nginx 配置即可。
验证 Nginx
浏览器关上链接 http://192.168.9.10/nacos 拜访 nacos。如果失常拜访即通过验证。
更多技术文章欢送关注我的博客主页:http://JemGeek.com
点击浏览原文