Spring Cloud - Nacos注册中心入门单机模式及集群模式

近几年微服务很火,Spring Cloud提供了为服务领域的一整套解决方案。其中Spring Cloud Alibaba是我们SpringCloud的一个子项目,是提供微服务开发的一站式解决方案。

包含微服务开发的必要组件,基于SpringCloud 符合SpringCloud标准,是阿里的微服务的解决方案。

文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

Nacos的安装与启动

Nacos是其中一个组件。是阿里开源的可用于注册中心和配置中心的开源组建。

下载安装也比较简单,只需要下载一个压缩包即可,解压即可用,windows和了linux都适用。

我的是windows,然后下载的是nacos-server-1.1.4.zip,选择一个目录解压的到如下文件。

只需要切换到bin目录下,双击startup.cmd,就会看到打开了一个cmd窗口

等待一会,以下这样就是启动好了

然后,浏览器访问,http://localhost:8848/nacos  打开他的控制台,用户名密码都是nacos,然后进来就是这样,就启动好了。

是不是简单。

注册服务到Nacos

然后我们可以写一个服务去注册到nacos上,创建SpringBoot的项目。创建好之后按以下步骤把Nacos引入到我们的项目中。

第一:引入Nacos客户端的依赖

<dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>    

第二:配置Nacos的地址

spring:
  application:
    name: order-center
  cloud:
   nacos:
     discovery:
       server-addr: localhost:8088

第三:启动项目,观察Nacos服务列表。成功注册。

Nacos集群启动

刚才是在Nacos单机的情况下完成的操作,实际情况下作为注册中心都是要集群部署保证高可用的。我们就来看一下Nacos集群模式如何配置并启动的。

我们就弄三个实例,

第一:把我们解压的Nacos的包复制三个,如下图:

第二:进入到各自的conf目录下打开application.properties文件,一次修改为 server.port=8849/8850/8851三个端口,然后添加如下配置,保存。(记得三个包都要改)

spring.datasource.platform=mysql

# 数据库实例数量
db.num=1
#自己数据库的连接信息
db.url.0=jdbc:mysql://localhost:3306/nacos_test?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=你的数据库密码

第三:在conf目录下找到nacos-mysql.sql 这个SQL脚本,在你的mysql里新建一个数据量,名字你自己定,然后执行这个SQL。(数据库名字要和你配置里写的一致)

第四:在conf目录下找到 cluster.conf.example 文件,命名为 cluster.conf 然后打开填入三个 Nacos的IP和端口。(记得改为你自己的IP和端口)

192.168.0.107:8849
192.168.0.107:8850
192.168.0.107:8851

注意:三个实例的以上配置都要改。改完之后就可以去启动了。

第五:启动。这个时候启动要注意了,不能直接双击startuo.cmd了

博主就是因为在集群模式下依然使用双击的启动方式,导致一直是起了三个单机模式的实例,最后找了很久才发现是因为这个启动脚本默认是单机启动的,集群启动需要加参数指定,而Linux的启动脚本正好相反,默认是集群模式,单机启动需要加参数-m standalone。

集群模式下启动需要打开CMD窗口,打开三个,进入到各自的bin目录下,分别执行,startup.smd -m cluster,然后等待一会,即可看到以cluster模式启动的字眼

然后访问这三台Nacos,点击节点列表就可以看到三个Nacos实例 谁是Leader 谁是follower一清二楚。

集群下客户端怎么连?

第一种:可以在刚才单机的基础上加多个IP和端口中间用逗号隔开

第二种:配合Nginx代理我们的Nacos的集群,配置里就直接写Nginx的IP和端口即可

Nginx配置如下:

    upstream nacos_server{
        server 192.168.0.107:8849;
        server 192.168.0.107:8850;
        server 192.168.0.107:8851;
    }
    server {
        listen       8088;
        server_name  localhost;

        location /nacos/ {
           proxy_set_header Host $http_host;
           proxy_pass http://nacos_server/nacos/;
        }
    }

而我们访问Nacos的控制台的时候,就可以通过Nginx来访问了,客户端注册到Nacos的时候就可以直接写Nginx的地址了。

获取注册中心注册的服务的地址列表

我们刚才写了一个springboot的项目引入了Nacos的客户端,并成功把服务信息注册到了Nacos上。现在我们来验证一下。

写个Controller,注入RestTemplate 和 DiscoveryClient (Nacos的服务发现客户端)

    @Autowired
    private DiscoveryClient discoveryClient;
    @Autowired
    private RestTemplate restTemplate;
        @GetMapping("/getServiceList")
    public List<ServiceInstance> getServiceList() {
         List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("order-center");
         return serviceInstanceList;
    }

然后重启这个服务,浏览器访问 http://localhost:8081/getServiceList

能够从Nacos拿到我们注册的服务的信息。

OK,今天就是一个Nacos的一个入门案例,就分享到这里。

总结一下:

1、Nacos同一个程序包同时支持Windows和Linux。

2、支持单机启动和集群启动

3、Windows单机启动直接双击 startup.cmd,Linux执行 ./startup.sh -m stanalone

4、配置好集群后,Windows集群启动CMD窗口下执行 startup.cmd -m cluster,Linux直接执行./startup.sh

5、集群下客户端可使用多地址逗号隔开的方式,也可使用集群+Nginx的方式,推荐后者。

Nacos还有更加细粒度的注册中心配置方式,如不同的环境,不同Group,不同的location,不同的版本控制等。

欢迎关注我的公众号:编程大道,一起交流学习。

原文地址:https://www.cnblogs.com/ibigboy/p/12541928.html

时间: 2024-10-11 22:30:31

Spring Cloud - Nacos注册中心入门单机模式及集群模式的相关文章

CentOS下ZooKeeper单机模式、集群模式安装

本文环境如下: 操作系统:CentOS 6 32位 ZooKeeper版本:3.4.8 0. 环境需求 Zookeeper需要JDK1.6以上版本的Java环境 可以参考: CentOS 6使用rpm方式安装JDK8 1. 下载软件包 到ZooKeeper官网上http://zookeeper.apache.org/下载软件包,例如: wget "http://apache.opencas.org/zookeeper/stable/zookeeper-3.4.8.tar.gz" tar

IntelliJ IDEA(Ultimate版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)Ultimate

不多说,直接上干货! IntelliJ IDEA号称当前Java开发效率最高的IDE工具.IntelliJ IDEA有两个版本:社区版(Community)和旗舰版(Ultimate).社区版时免费的.开源的,但功能较少,旗舰版提供了较多的功能,是收费的,可以试用30天. 强烈推荐,新手刚入门,可以去用社区版,但是,立马还是用旗舰版,我可是走了弯路,当然,体会到其中的棘手还是很不错! IDEA Community(社区版)再谈之无奈之下还是去安装社区版 IntelliJ IDEA(Communi

IntelliJ IDEA的下载、安装和WordCount的初步使用(本地模式和集群模式)

我们知道,对于开发而言,IDE是有很多个选择的版本.如我们大部分人经常用的是如下. Eclipse *版本 Eclipse *下载 而我们知道,对于spark的scala开发啊,有为其专门设计的eclipse,Scala IDE for Eclipse Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) 这里,我们知道,spark的开发可以通过IntelliJ IDEA或者Scala IDE for Eclipse,包括来构建spark开发

spring cloud 搭建注册中心Eureka(集群模式)

集群 注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的.在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态.为了维持其可用性,使用集群是很好的解决方案.Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署. 新建3个配置文件 application-peer1.yml spring: application: name: Service #应用名称,也是服务注册的

Spring Cloud 核心组件——注册中心

1. 什么是微服务的注册中心 注册中心:服务管理,核心是有个服务注册表,心跳机制动态维护. 为什么要用? 微服务应用和机器越来越多,调用方需要知道接口的网络地址,如果靠配置文件的方式去控制网络地址,对于动态新增机器,维护带来很大问题. 主流的注册中心:Zookeeper.Eureka.Consul.ETCD 等. 服务提供者 Provider:启动的时候向注册中心上报自己的网络信息. 服务消费者 Consumer:启动的时候向注册中心上报自己的网络信息,拉取 Provider 的相关网络信息.

Spring Cloud之注册中心搭建

一.注册中心服务端搭建 1)引入相关Maven坐标 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> 2)加入相关注解 @EnableEurekaServer 3)相关配置属性,application.yml

spring cloud Eureka注册中心集群搭建

1.创建springcloud-eureka maven项目 pom.xml <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/m

spring cloud(服务注册中心及服务提供者——初学一)

一.创建服务注册中心 1.创建spring boot项目 2.引入eureka-server依赖(也可以在创建项目时勾选eureka-server服务,自动生成依赖) 注意版本号,版本不对可能启动会报错,本次使用Dalston.SR1版本 3.启动类中开启服务注册中心功能 4.在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties中问增加如下配置: 5.浏览器访问  localhost:1111

Spring Cloud Eureka 注册中心高可用机制

一.Eureka 正常工作流程 Service 服务作为 Eureka Client 客户端需要在启动的时候就要向 Eureka Server 注册中心进行注册,并获取最新的服务列表数据. Eureka Server 之间通过 Peer To Peer 模式复制最新数据. Eureka Client 通过心跳机制定时向 Eureka Server 续约,上报自己的状态,并获取最新的服务列表数据. Eureka Client 在本地有一个localRegionApps变量,用来保存从 Eureka