关于spring-cloud:Spring-Cloud-AlibabaNacos-安装及使用

31次阅读

共计 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.cmdstartup.cmd 两个脚本。
nacos 1.3.2 的脚本有个小改变,默认启动模式为 cluster 集群模式,所以要单机启动的话,有两种计划。

  1. 带参数运行

创立脚本文件 startup-standalone.cmd,增加以下代码到文件中。

startup.cmd -m standalone

而后双击启动 startup-standalone.cmd 脚本即可。或者每次启动时应用 startup.cmd -m standalone 命令启动。
集体认为写个 startup-standalone.cmd 脚本更不便。

  1. 批改原有的脚本

应用编辑器关上脚本文件 bin/startup.cmd,找到大略 27 行,依照下方代码编辑。

## 本来的代码
set MODE="cluster"
## 批改后的代码
set MODE="standalone"

批改后保留,而后间接运行 bin/startup.cmd 脚本即可。

验证

双击 bin/startup.cmdbin/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.shstartup.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-servermysqlprometheusgrafana
对于我集体而言,我有本人的数据库,没必要再额定创立一个 mysql,另外 prometheusgrafana 的监控我也咱不须要。应用这种形式,比拟占用服务器的资源。
对于仅须要 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

点击浏览原文

正文完
 0