iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Nacos集群如何搭建
  • 616
分享到

Nacos集群如何搭建

2023-06-15 14:06:09 616人浏览 八月长安
摘要

小编给大家分享一下Nacos集群如何搭建,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 一、Nacos 简介Nacos(Naming and Confi

小编给大家分享一下Nacos集群如何搭建,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

 一、Nacos 简介

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

详情查看Nacos 官方文档[1]

二、Nacos 安装

1、Nacos 依赖

Nacos 基于 java 开发的,运行依赖于 java 环境。

依赖 64 bit JDK 1.8+,前往官网下载 JDK[2]

2、Nacos 安装

下载编译后压缩包,最新稳定版本[3]

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

三、Nacos 部署

1、单实例部署

单实例部署不适合生产环境,单点故障是致命的。

linux 单实例非集群模式启动命令

startup.sh -m standalone

Linux 单实例非集群模式关闭命令

shutdown.sh

访问 nacos 管理页面,初始化用户名密码均为 nacos

Nacos集群如何搭建

2、集群部署

1、集群架构

Nacos集群如何搭建

2、本地虚拟机模拟集群部署

本地环境准备

Nacos集群如何搭建

在本地 PC 机上利用 VMware workstation 虚拟出如上表所示的几台机器,其中 Nginx 和 MySQL  都是采用的单实例,仅做练习使用。

搭建步骤

初始化 nacos 必须的数据库表并配置

找到 Nacos 安装目录下提供的数据库脚本文件

Nacos集群如何搭建

Mysql 实例创建 nacos_config 库并导入脚本

Nacos集群如何搭建

修改修改 Nacos 配置文件,指向 mysql 实例,替换其内嵌数据库

Nacos集群如何搭建
#*************** 切换Nacos内嵌数据库平台为Mysql ***************# spring.datasource.platfORM=mysql  db.num=1 db.url.0=jdbc:mysql://192.168.15.141:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&SocketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=root db.passWord=123456

说明:三台 nacos 实例都需要切换 MySQL 平台,均需执行以上操作

nacos 集群配置

复制 cluster.conf 文件

Nacos集群如何搭建

Nacos 集群配置,修改 cluster.conf 文件

[root@localhost conf]# vim ./cluster.conf #it is ip #example 192.168.15.145 192.168.15.147 192.168.15.148

说明:三台 nacos 实例都需要做以上集群配置,至此关于 nacos 的配置结束了,可以尝试以集群模式启动三个 nacos 实例了

以集群模式分别启动三个 nacos 实例

Nacos集群如何搭建
Nacos集群如何搭建

尝试访问 nacos 管理页,测试三个实例是否正常

Nacos集群如何搭建

说明:如果三个实例以集群模式正常启动,那么分别访问三个实例的管理页就是展示以上登录页了。如果不能访问,则可能防火墙未开放 nacos  服务的端口,可执行如下命令。

[root@localhost bin]# firewall-cmd --add-port=8848/tcp --permanent success [root@localhost bin]# firewall-cmd --reload success [root@localhost bin]# firewall-cmd --list-all public (active)   target: default   icmp-block-inversion: no   interfaces: ens33   sources:   services: ssh dhcpv6-client   ports: 27017/tcp 8848/tcp   protocols:   masquerade: no   forward-ports:   source-ports:   icmp-blocks:   rich rules:  [root@localhost bin]#

Nginx 配置

  • Nginx 安装参考,Nginx 源码安装[4]

  • 修改 Nginx 配置文件 nginx.conf

worker_processes  1;  events {     worker_connections  1024; }  Http {     include       mime.types;     default_type  application/octet-stream;      sendfile        on;      keepalive_timeout  65;      #nacos集群负载均衡     upstream nacos-cluster {         server 192.168.15.145:8848;         server 192.168.15.147:8848;         server 192.168.15.148:8848;     }      server {         listen       80;         server_name  192.168.15.146;          location / {             #root   html;             #index  index.html index.htm;             proxy_pass http://nacos-cluster;         }          error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         }     }  }

启动 Nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

微服务配置

微服务父 pom 配置

<?xml version="1.0" encoding="UTF-8"?>  <project xmlns="http://Maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>      <groupId>com.atguigu.SpringCloud</groupId>     <artifactId>cloud2020</artifactId>     <version>1.0-SNAPSHOT</version>     <packaging>pom</packaging>      <!-- 模块 -->     <modules>         <module>cloud-alibaba-nacos-config-client-3377</module>     </modules>      <!-- 统一管理jar版本 -->     <properties>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>         <maven.compiler.source>1.8</maven.compiler.source>         <maven.compiler.target>1.8</maven.compiler.target>         <junit.version>4.12</junit.version>         <log4j.version>1.2.17</log4j.version>         <lombok.version>1.16.18</lombok.version>         <mysql.version>5.1.47</mysql.version>         <druid.version>1.1.16</druid.version>         <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>     </properties>      <!-- 统一依赖管理 -->     <dependencyManagement>         <dependencies>             <!-- spring boot 2.2.2 -->             <dependency>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot</artifactId>                 <version>2.2.2.RELEASE</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>              <!-- spring cloud Hoxton.SR1 -->             <dependency>                 <groupId>org.springframework.cloud</groupId>                 <artifactId>spring-cloud-dependencies</artifactId>                 <version>Hoxton.SR1</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>              <!-- spring cloud alibaba 2.1.0.RELEASE -->             <dependency>                 <groupId>com.alibaba.cloud</groupId>                 <artifactId>spring-cloud-alibaba-dependencies</artifactId>                 <version>2.1.0.RELEASE</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>              <!-- mysql连接器 -->             <dependency>                 <groupId>mysql</groupId>                 <artifactId>mysql-connector-java</artifactId>                 <version>${mysql.version}</version>             </dependency>              <!--druid 数据源-->             <dependency>                 <groupId>com.alibaba</groupId>                 <artifactId>druid</artifactId>                 <version>${druid.version}</version>             </dependency>              <!-- mybatis 整合 spring -->             <dependency>                 <groupId>org.mybatis.spring.boot</groupId>                 <artifactId>mybatis-spring-boot-starter</artifactId>                 <version>${mybatis.spring.boot.version}</version>             </dependency>              <!-- junit -->             <dependency>                 <groupId>junit</groupId>                 <artifactId>junit</artifactId>                 <version>${junit.version}</version>             </dependency>              <!-- log4j -->             <dependency>                 <groupId>log4j</groupId>                 <artifactId>log4j</artifactId>                 <version>${log4j.version}</version>             </dependency>              <!-- lombok -->             <dependency>                 <groupId>org.projectlombok</groupId>                 <artifactId>lombok</artifactId>                 <version>${lombok.version}</version>             </dependency>         </dependencies>      </dependencyManagement>      <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <configuration>                     <fork>true</fork>                     <addResources>true</addResources>                 </configuration>             </plugin>         </plugins>     </build>  </project>

微服务 pom 依赖

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <parent>         <artifactId>cloud2020</artifactId>         <groupId>com.atguigu.sprinGCloud</groupId>         <version>1.0-SNAPSHOT</version>     </parent>     <modelVersion>4.0.0</modelVersion>      <artifactId>cloud-alibaba-nacos-config-client-3377</artifactId>      <dependencies>          <!-- nacos config -->         <dependency>             <groupId>com.alibaba.cloud</groupId>             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>         </dependency>          <!-- nacos discovery -->         <dependency>             <groupId>com.alibaba.cloud</groupId>             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>         </dependency>          <!-- WEB -->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>          <!-- actuator -->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-actuator</artifactId>         </dependency>          <!-- test -->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>         </dependency>          <!-- devtools -->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-devtools</artifactId>             <scope>runtime</scope>             <optional>true</optional>         </dependency>          <!-- lombok -->         <dependency>             <groupId>org.projectlombok</groupId>             <artifactId>lombok</artifactId>             <optional>true</optional>         </dependency>     </dependencies> </project>

微服务 bootstrap.yml 配置

server:   port: 3377  spring:   application:     name: nacos-config-client    cloud:     nacos:       discovery:         #server-addr: my.nacos.com:8848         #nacos集群配置(Nginx)         server-addr: 192.168.15.146:80       config:         #server-addr: my.nacos.com:8848         #nacos集群配置(Nginx)         server-addr: 192.168.15.146:80         #指定yaml格式的配置         file-extension: yaml         #指定分组         group: DEV_GROUP         #指定命名空间ID         namespace: my_nacos_namespace

微服务启动类配置

package com.atguigu.springcloud;  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  @SpringBootApplication @EnableDiscoveryClient public class NacosConfigClientMain3377 {      public static void main(String[] args) {         SpringApplication.run(NacosConfigClientMain3377.class, args);     }  }

微服务 Controller 读取 nacos 配置

package com.atguigu.springcloud.controller;  import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;  @RestController @Slf4j @RefreshScope //支持Nacos的动态刷新功能 public class ConfigClientController {      @Value("${config.info}")     private String configInfo;      @GetMapping("/config/info")     public String getConfigInfo() {         return configInfo;     } }

在 nacos 管理页上维护一个配置

Nacos集群如何搭建
Nacos集群如何搭建

本地启动微服务并访问

Nacos集群如何搭建

以上是“Nacos集群如何搭建”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Nacos集群如何搭建

本文链接: https://www.lsjlt.com/news/280621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Nacos集群如何搭建
    小编给大家分享一下Nacos集群如何搭建,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 一、Nacos 简介Nacos(Naming and Confi...
    99+
    2023-06-15
  • nacos集群搭建
    在官方文档上面就有结束搭建nacos是介绍 官方文档提供了一个Nacos集群的架构图,当我们访问Nacos时,首先会经过SLB,也就是负载均衡,通常是一个nginx,通过nginx来进行分发到具体的Nacos服务器上面。我们需要给不同的服...
    99+
    2023-08-19
    centos linux 服务器
  • 搭建Nacos集群
    nacos的默认端口是8848,但是他还占用了另外两个接口:9848、9849。因此,在单机配置集群时,不可使用三个连续的端口,否则会导致 gRPC端口冲突。 端口与主端口(8848)偏移量作用98481000客户端gRPC请求服务端口,用...
    99+
    2023-08-18
    java mysql 开发语言 nacos
  • docker之nacos集群怎么搭建
    要搭建Nacos集群,您可以按照以下步骤进行操作: 下载Nacos的安装包,并解压到不同的目录下,例如nacos1、nacos2...
    99+
    2024-04-02
  • Nacos集群搭建过程详解
    目录1.集群结构图2.搭建集群2.1.初始化数据库2.2.下载nacos2.3.配置Nacos2.4.启动2.5.nginx反向代理2.6.优化1.集群结构图 官方给出的Nacos集...
    99+
    2024-04-02
  • RabbitMQ集群如何搭建
    这篇文章主要讲解了“RabbitMQ集群如何搭建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RabbitMQ集群如何搭建”吧!1.前提erlang安装版本一致RabbitMQ安装版本一致以...
    99+
    2023-06-26
  • Zookeeper集群如何搭建
    这篇文章主要介绍“Zookeeper集群如何搭建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Zookeeper集群如何搭建”文章能帮助大家解决问题。一、Zookeeper原理简介ZooKeeper...
    99+
    2023-06-28
  • 如何搭建MySQL集群
    这篇文章给大家介绍如何搭建MySQL集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。概述MySQL Cluster 是MySQL 适合于分布式计算环境的高实用、可拓展、高性能、高冗余...
    99+
    2024-04-02
  • redis集群如何搭建
    这篇文章给大家分享的是有关redis集群如何搭建的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。介绍安装环境与版本用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master...
    99+
    2024-04-02
  • 如何搭建redis集群
    这篇文章主要讲解了“如何搭建redis集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何搭建redis集群”吧!redis集群搭建在开始redis集群搭建之前,我们先简单回顾一下redi...
    99+
    2023-06-25
  • hadoop如何搭建集群
    搭建Hadoop集群需要以下步骤:1. 确保所有节点的操作系统版本一致,并配置好网络环境。2. 在每个节点上安装Java环境,并设置...
    99+
    2023-08-16
    hadoop
  • mysql中如何搭建集群
    mysql中如何搭建集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余...
    99+
    2024-04-02
  • Minikube如何搭建Kubernetes集群
    这篇文章主要介绍了Minikube如何搭建Kubernetes集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Minikube打开 https://github....
    99+
    2023-06-29
  • docker如何搭建redis集群
    要搭建Redis集群,可以使用Docker来进行部署。下面是一种常见的方法:1. 创建一个文件夹,在文件夹中创建一个名为`docke...
    99+
    2023-08-23
    docker redis
  • docker如何搭建kafka集群
    本文小编为大家详细介绍“docker如何搭建kafka集群”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker如何搭建kafka集群”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、原生Docker命令 ...
    99+
    2023-06-30
  • Docker-Compose如何搭建Redis集群
    本篇内容介绍了“Docker-Compose如何搭建Redis集群”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 集群配置3主+3从由于...
    99+
    2023-07-05
  • 如何搭建Redis集群环境
    本篇文章为大家展示了如何搭建Redis集群环境,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 Redis集群环境搭建方便起见,这里集群环境的所有节点全部位于同一个...
    99+
    2024-04-02
  • windows下如何搭建Consul集群
    这篇文章主要介绍“windows下如何搭建Consul集群”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows下如何搭建Consul集群”文章能帮助大家解决问题。Consul 是 Hashi...
    99+
    2023-07-02
  • Windows下如何搭建Redis集群
    这篇文章给大家分享的是有关Windows下如何搭建Redis集群的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Redis集群:如果部署到多台电脑,就跟普通的集群一样;因为Redis是单线程处理的,多核CPU也只能...
    99+
    2023-06-29
  • 搭建Domino群集
    搭建Domino群集浙江省电力办公自动化系统(以下简称:OA系统)是全省推广,统一软件、统一平台、统一规划与实施的一套大型应用系统。它的硬件平台采用IBM的小型机AS/400,软件采用Lotus Domino/Notes,并实施了在一台小型...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作