Spring Cloud - Nacos註冊中心入門單機模式及集羣模式

近幾年微服務很火,Spring Cloud提供了爲服務領域的一整套解決方案。其中Spring Cloud Alibaba是咱們SpringCloud的一個子項目,是提供微服務開發的一站式解決方案。mysql

包含微服務開發的必要組件,基於SpringCloud 符合SpringCloud標準,是阿里的微服務的解決方案。linux

文檔:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.mdgit

Nacos的安裝與啓動

Nacos是其中一個組件。是阿里開源的可用於註冊中心和配置中心的開源組建。github

下載安裝也比較簡單,只須要下載一個壓縮包便可,解壓便可用,windows和了linux都適用。spring

個人是windows,而後下載的是nacos-server-1.1.4.zip,選擇一個目錄解壓的到以下文件。sql


 

只須要切換到bin目錄下,雙擊startup.cmd,就會看到打開了一個cmd窗口數據庫

 

等待一會,如下這樣就是啓動好了編程

 

 而後,瀏覽器訪問,http://localhost:8848/nacos  打開他的控制檯,用戶名密碼都是nacos,而後進來就是這樣,就啓動好了。windows

 

是否是簡單。瀏覽器

註冊服務到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的一個入門案例,就分享到這裏。

 

總結一下:

一、Nacos同一個程序包同時支持Windows和Linux。

二、支持單機啓動和集羣啓動

三、Windows單機啓動直接雙擊 startup.cmd,Linux執行 ./startup.sh -m stanalone

四、配置好集羣后,Windows集羣啓動CMD窗口下執行 startup.cmd -m cluster,Linux直接執行./startup.sh

五、集羣下客戶端可以使用多地址逗號隔開的方式,也可以使用集羣+Nginx的方式,推薦後者。

 

Nacos還有更加細粒度的註冊中心配置方式,如不一樣的環境,不一樣Group,不一樣的location,不一樣的版本控制等。

歡迎關注個人公衆號:編程大道,一塊兒交流學習。

相關文章
相關標籤/搜索