Spring Cloud 系列之 Alibaba Nacos 注冊中心(二)


本篇文章為系列文章,未讀第一集的同學請猛戳這里:Spring Cloud 系列之 Alibaba Nacos 注冊中心(一)

本篇文章講解 Nacos 注冊中心集群環境搭建。

  

Nacos 集群環境搭建

  

  集群模式跟我們平時進行擴容是一樣的,可以通過 Nginx 轉發到多個節點,如下圖:

  如果為了方便省事,可以使用直連 ip 模式,配置中按如下編寫即可:

spring:
  # 配置 Nacos 注冊中心
  cloud:
    nacos:
      discovery:
        enabled: true # 如果不想使用 Nacos 進行服務注冊和發現,設置為 false 即可
        server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服務器地址

  PS:如果只是為了學習的話直接在本地啟動 3 個實例,通過修改端口的方式即可。本文使用三台服務器的方式帶大家搭建環境,其實這種方式反而更簡單。

  

環境准備

  

  Nacos 單節點,也就是我們剛才使用的 standalone 模式,默認使用嵌入式數據庫實現數據的存儲,不方便觀察數據存儲的基本情況,0.7 版本以后增加了支持 MySQL 數據源能力。集群搭建的時候我們需要將 Nacos 對接 Mysql 進行數據存儲。如果要搭建高可用的集群環境,至少要滿足以下條件:

  • JDK 1.8+;
  • Maven 3.2.x+;
  • MySQL 5.6.5+(生產使用建議至少主備模式,或者采用高可用數據庫);
  • 3個或3個以上Nacos節點才能構成集群。

  

下載源碼或者安裝包

  

  可以通過源碼和發行包兩種方式來獲取 Nacos。

  

源碼方式

  

  從 Github 上下載源碼方式。

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

  

發行包方式

  

  您可以從 https://github.com/alibaba/nacos/releases 下載最新穩定版本的 nacos-server 包。

  

配置集群配置文件

  

  將安裝包解壓。

tar -zxvf nacos-server-1.2.1.tar.gz -C /usr/local/ # 解壓文件至 local 目錄

  在 Nacos 的解壓目錄 nacos/conf 目錄下,復制配置文件 cluster.conf.example 並重命名為 cluster.conf,每行配置成 ip:port。(請配置3個或3個以上節點)

192.168.10.101:8848
192.168.10.102:8848
192.168.10.103:8848

  

配置 MySQL 數據庫

  

  Nacos 在 0.7 版本之前,默認使用的是嵌入式數據庫 Apache Derby 來存儲數據(內嵌的數據庫會隨着 Nacos 一起啟動,無需額外安裝);0.7 版本及以后,增加了對 MySQL 數據源的支持。

  

MySQL數據源

  

  環境要求:MySQL 5.6.5+(生產使用建議至少主備模式,或者采用高可用數據庫);

  

初始化 MySQL 數據庫

  

  創建數據庫 nacos_config

  SQL源文件地址:https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql ,或者在 nacos-server 解壓目錄 conf 下,找到 nacos-mysql.sql 文件,運行該文件,結果如下:

  

application.properties 配置

  

  修改 nacos/conf/application.properties 文件的以下內容。

  最終修改結果如下:

#*************** Config Module Related Configurations ***************#
### If user MySQL as datasource:
# 指定數據源為 MySQL
spring.datasource.platform=mysql

### Count of DB:
# 數據庫實例數量
db.num=1

# 數據庫連接信息,如果是 MySQL 8.0+ 版本需要添加 serverTimezone=Asia/Shanghai
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user=root
db.password=1234

如果你和我一樣使用的是 MySQL 8.0+ 版本,那么啟動 Nacos 時肯定會報錯。莫慌,在 Nacos 安裝目錄下新建 plugins/mysql 文件夾,並放入 8.0+ 版本的 mysql-connector-java-8.0.xx.jar,重啟 Nacos 即可,啟動時會提示更換了 MySQL 的 driver-class 類。

  

啟動服務器

  

Linux/Unix/Mac

  

  在 Nacos 的解壓目錄 nacos/bin 目錄下啟動。

  啟動命令(在沒有參數模式,是集群模式):

sh startup.sh

  

查看啟動記錄

  

  可通過 /nacos/logs/nacos.log(詳細日志)或 /nacos/conf/start.out(啟動記錄)的輸出內容查看是否啟動成功。

  查看命令:

tail -f /usr/local/nacos/logs/start.out

  啟動成功輸出結果:

2020-04-29 22:47:56,204 INFO Nacos is starting...

2020-04-29 22:47:56,556 INFO Nacos logs files: /usr/local/nacos/logs/

2020-04-29 22:47:56,556 INFO Nacos conf files: /usr/local/nacos/conf/

2020-04-29 22:47:56,556 INFO Nacos data files: /usr/local/nacos/data/

2020-04-29 22:47:56,556 INFO Nacos started successfully in cluster mode.

  

訪問

  

  訪問以下鏈接,默認用戶名/密碼是 nacos/nacos :

  

關閉服務器

  

Linux/Unix/Mac

  

sh shutdown.sh

  

測試

  

直連 ip 模式

  

  商品服務 application. yml 配置文件。

server:
  port: 7070 # 端口

spring:
  application:
    name: product-service # 應用名稱
  # 配置 Nacos 注冊中心
  cloud:
    nacos:
      discovery:
        enabled: true # 如果不想使用 Nacos 進行服務注冊和發現,設置為 false 即可
        server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服務器地址,集群版直連 ip 模式

  

  訂單服務 application. yml 配置文件。

server:
  port: 9090 # 端口

spring:
  application:
    name: order-service # 應用名稱
  # 配置 Nacos 注冊中心
  cloud:
    nacos:
      discovery:
        enabled: true # 如果不想使用 Nacos 進行服務注冊和發現,設置為 false 即可
        server-addr: 192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848 # Nacos 服務器地址,集群版直連 ip 模式

  

  啟動 Nacos 集群,從下圖可以看到集群節點共有三個,其中 192.168.10.101:8848leader

  

  通過服務列表可以看到服務已注冊至 Nacos。

  訪問:http://localhost:9090/order/1 結果如下:

  

Nginx 轉發

  

  再啟動一台服務器 192.168.10.100,安裝 Nginx,配置代理轉發規則。

upstream nacos {
    server 192.168.10.101:8848;
    server 192.168.10.102:8848;
    server 192.168.10.103:8848;
}

  

  商品服務 application. yml 配置文件。

server:
  port: 7070 # 端口

spring:
  application:
    name: product-service # 應用名稱
  # 配置 Nacos 注冊中心
  cloud:
    nacos:
      discovery:
        enabled: true # 如果不想使用 Nacos 進行服務注冊和發現,設置為 false 即可
        server-addr: 192.168.10.100:80 # Nacos 服務器地址,集群版 Nginx 轉發

  

  訂單服務 application. yml 配置文件。

server:
  port: 9090 # 端口

spring:
  application:
    name: order-service # 應用名稱
  # 配置 Nacos 注冊中心
  cloud:
    nacos:
      discovery:
        enabled: true # 如果不想使用 Nacos 進行服務注冊和發現,設置為 false 即可
        server-addr: 192.168.10.100:80 # Nacos 服務器地址,集群版 Nginx 轉發

  

  啟動 Nacos 集群,從下圖可以看到集群節點共有三個,其中 192.168.10.101:8848leader

  

  通過服務列表可以看到服務已注冊至 Nacos。

  訪問:http://localhost:9090/order/1 結果如下:

  至此 Nacos 注冊中心所有的知識點就講解結束了。

本文采用 知識共享「署名-非商業性使用-禁止演繹 4.0 國際」許可協議

大家可以通過 分類 查看更多關於 Spring Cloud 的文章。

  

🤗 您的點贊轉發是對我最大的支持。

📢 掃碼關注 哈嘍沃德先生「文檔 + 視頻」每篇文章都配有專門視頻講解,學習更輕松噢 ~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM