首页 > 其他分享 >Spring Cloud Alibaba:Nacos 安装及使用

Spring Cloud Alibaba:Nacos 安装及使用

时间:2023-04-18 11:33:18浏览次数:51  
标签:default Spring Nacos nacos 192.168 server 8848 Alibaba

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 集群模式,所以要单机启动的话,有两种方案。

  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.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-servermysqlprometheusgrafana

对于我个人而言,我有自己的数据库,没必要再额外创建一个 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-server
sh 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

点击阅读原文

标签:default,Spring,Nacos,nacos,192.168,server,8848,Alibaba
From: https://www.cnblogs.com/forestwolf/p/17328973.html

相关文章

  • Spring Boot - Spring Boot 数据库连接池 Hikari 介绍
    SpringBoot数据库连接池Hikari介绍介绍TheHikariCPdesignaestheticisMinimalism.Inkeepingwiththesimpleisbetterorlessismoredesignphilosophy,someconfigurationaxisareintentionallyleftout.HikariCP奉行极简主义的设计美学。为了保持“越......
  • spring security中的AuthenticationManager
    一、AuthenticationManagerAuthenticationManager是springsecurity中的认证管理器用来对登录请求进行处理。举个例子讲,在使用表单登录时处理用户的登录请求的是UsernamePasswordAuthenticationFilter这个过滤器,它内部持有一个AuthenticationManager的对象,处理认证登录请求时......
  • Failed to process import candidates for configuration class [springfox.documenta
     org.springframework.beans.factory.BeanDefinitionStoreException:Failedtoprocessimportcandidatesforconfigurationclass[springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration];nestedexceptionisjava.lang.IllegalArgumen......
  • 【Spring MVC + Tomcat】Spring MVC 传统VS现代方式的启动过程对比
    1 前言这节我们来讨论下SpringMVC传统和现在的启动方式的不同,可能大家现在上手就是SpringBoot直接给我们内置Tomcat,我们最多也就是改改配置就完事了,我记得我上学的时候写SSM的时候,还要整理各种Jar包和配置,这节我们就来对比下两种启动方式是如何启动SpringMVC的哈。2  传......
  • Spring 教程—REST 客户端详解
    Spring框架为调用REST端点提供了以下选择:WebClient -非阻塞、响应式客户端和fluentAPI。RestTemplate -带有模板方法API的同步客户端。HTTP接口 -注解式接口,并生成动态代理实现。一、 WebClientWebClient 是一个非阻塞的、响应式的客户端,用于执行HTTP请求。它在5.0中引......
  • 不同版本的Spring Framework有哪些主要功能?
    官方地址:https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions SpringFramework版本 JDKJavaEE/JakartaEESpringBoot支持新特性eof6.x6.0.xJDK 17-21JakartaEE9-10Springboot3.x What'sNewinSpring......
  • Java SpringBoot 7z 压缩、解压
    JavaSpringBoot7z压缩、解压cmd7z文件压缩7z压缩测试添加依赖<dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>1.12</version></dependency><dependency......
  • Springboot使用RestTemplate发送Post请求postForEntity (application/json)的坑
    当使用RestTemplate进行http请求时,的确很方便,但是当需要进行post请求时遇到了坑1POST传递参数:采用LinkedMultiValueMap,不能使用HashMapStringurl='http://posturl';MultiValueMap<String,String>map=newLinkedMultiValueMap<String,String>();map.add(......
  • 深谈Spring如何解决Bean的循环依赖
    1.什么是循环依赖Java循环依赖指的是两个或多个类之间的相互依赖,形成了一个循环的依赖关系,这会导致程序编译失败或运行时出现异常。下面小岳就带大家来详细分析下Java循环依赖。简单来讲就是:假设有两个人是:A和B,A想要向B借钱,但B需要先向A借钱。这种情况就形成了循环依赖关系,无......
  • springboot整合swagger2
     1.正文1.1什么是swagger2Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务的接口文档 .接口:controller相应的路径方法Swagger2是一款前后端分离开发中非常实用的API管理工具,它可以帮助开发者根据约定规范自动生成API文档,并支持......