Nacos在企業生產中如何使用集群環境?

點贊再看,養成習慣,微信搜索【牧小農】關注我獲取更多資訊,風裡雨里,小農等你,很高興能夠成為你的朋友。
項目源碼地址:公眾號回復 nacos,即可免費獲取源碼

前言

由於在公司,註冊中心和配置中心都是使用的Nacos,因為前一段時間比較忙(木有划水時間),沒有精力仔細去研究,時間就像海綿里的水,擠一擠總會是有的,出於對技術的好奇心,今天擠了一點時間,終於到了我 牧漢三 出馬的時候。今兒個就說一說Nacos集群架構是如何搭配,以及在企業中是如何使用的。

Nacos集群架構

在搭建Nacos集群之前,我們首先要了解一下Nacos的架構,工欲善其事必先利其器,磨刀不費砍材功,在上一節中,我們了解了Nacos基礎功能,對Nacos的一些基本使用和配置,但是這些在實際工作過程中是遠遠不夠的,我們還需要了解一個非常重要的點,就是對Nacos集群相關的操作,首先我們就要從Nacos的集群配置開始說起

,

2.1 Nacos 三種部署模式

  • 單機模式:用於測試和單節點使用
  • 集群模式:用於生產環境,確保高可用
  • 多集群模式:用戶多數據中心場景

2.2 參考文檔

參考網站://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

部署手冊://nacos.io/zh-cn/docs/deployment.html

下面我們來看一下Nacos的一個具體拆分架構圖:

環境準備

對於Nacos而言,本身是存在內置的資料庫 derby 實現配置持久化,但是為了查看和維護以及配置nacos集群方便我們需要將內置資料庫配置成本地MySQL資料庫,同時因為Nacos使用的嵌入式實現數據的存儲,所以如果啟動多個默認配置下的Nacos節點,數據存儲會存在一致性的問題,為了解決這個問題,Naacos採用了集中存儲方式來支援集群化存儲。目前nacos僅支援MySQL資料庫。

3.1 準備工作

  1. 64 bit OS Linux/Unix/Mac,推薦使用Linux系統。
  2. 64 bit JDK 1.8+;
  3. Maven 3.2.x+;
  4. 3個或3個以上Nacos節點才能構成集群。
  5. Nginx
  6. MySql 5.6.5+

公眾號後台回復:nacos 即可獲取

在Linxu下安裝Nacos

我們需要3個或3個以上Nacos節點才能構成集群,同時也需要一個Nginx來模擬負載均衡。

安裝包已備好,後台回復nacos即可

1. 解壓Nacos

tar -zxvf nacos-server-2.0.3.tar.gz

持久化配置

前面我們已經講過了,Nacos 默認自帶的嵌入式資料庫 derby,當我們每次創建一個Nacos實例的時候就會有一個 derby,當我們想要搭建Nacos集群,出現多個Nacos節點的時候,就會出現一致性的問題,所以我們如果要搭建Nacos集群,首先要使用Nacos支援的外部統一數據管理MYSQL。

參考官網://nacos.io/zh-cn/docs/deployment.html

這裡建立的Mysql資料庫,一定要Linux下Nacos的可以訪問

我們需要找到Nacos安裝目錄下conf目錄下的SQL腳本,然後在資料庫中執行

1 創建資料庫

CREATE DATABASE nacos_config;
USE nacos_config;

2 執行腳本

找到nacos資料庫腳本,在剛才創建的資料庫中執行

執行成功,如下圖所示:

3 修改配置

修改 conf/application.properties文件,增加支援MySQL數據源配置

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user=root
db.password=123456

Nacos集群配置

1. 修改cluter.conf文件

我們在正式開始配置集群之前,我們需要修改conf/cluter.conf配置文件,在修改一個文件之前,先進行備份,這一步Nacos文件已經幫我們做了,如果沒有手動複製一個備份文件

cp cluster.conf cluster.conf.example

在配置集群的時候,不能通過127.0.0.1 來進行分配,伺服器是不知道具體哪台機器,具體的IP地址,需要使用conf/cluter.conf來指明對應的IP和埠

同時我們修改埠的時候,要有一定的偏移量,因為Nacos2.0本身新增了佔用埠,在設置埠的時候要避開。

每行配置成ip:port

ifconfig -a #查看具體ip

在這裡我的IP地址為:192.168.137.152

vi cluster.conf

在配置中添加我們需要使用的IP和port

192.168.137.152:8848
192.168.137.152:8868
192.168.137.152:8888

2.編輯啟動腳本startup.sh

修改這個腳本,是為了能夠讓我們在使用這個命令啟動的時候傳入對應的埠參數,這樣攜帶具體埠號參數啟動就能啟動具體的Nacos節點,腳本目錄為:nacos/bin/startup.sh
修改參數:

啟動Nacos

啟動命令:

./startup.sh -o 8848

./startup.sh -o 8848

./startup.sh -o 8848

啟動以後我們可以查看這個日誌文件,是否啟動成功

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

啟動完成之後,我們可以使用下面的命令來測試Nacos集群是否正常啟動:

ps -ef|grep nacos|grep -v grep |wc -l

一般數量為3,我這裡是啟動了三個日誌查看,所以是6

注意:我們在瀏覽器訪問Nacos地址的時候,一定要把防火牆關閉

systemctl stop firewalld # 臨時關閉

systemctl disable firewalld # 永久關閉

打開任意IP和埠下的路徑,使用帳號密碼nacos/nacos 登錄成功後,在 集群管理>節點列表 中可以看到我們三個nacos服務,到這裡nacos此時已經完成全部配置

nginx 負載均衡配置

tar -zxvg nginx-1.14.2.tar.gz # 解壓
cd nginx-1.14.2 
./configure # 編譯
make && make install #安裝
cd /usr/local/nginx/conf/
vi nginx.conf  # 修改nginx文件

整個文件中只需要使用到下面的配置即可:

下面沒有使用HTTP請求進行轉發,而是使用的TCP協議
使用nginx請求時,需要配置成TCP轉發,不能配置http2轉發,否則連接會被nginx斷開。

worker_processes  1;

events {
    worker_connections  1024;
}

stream {
        upstream nacos {
            server 192.168.137.152:8848;
            server 192.168.137.152:8868;
            server 192.168.137.152:8888;

        }

        server {
                listen 81;
                proxy_pass nacos;
        }

}

啟動nginx

cd /usr/local/nginx/sbin/ # 進入目錄

./nginx #啟動

在瀏覽器上輸入網址,查看是否可以啟動成功

//192.168.137.152:81/nacos

添加配置

我們在 config_info表中也看到了對應的添加記錄

註冊服務到nacos中

我們拿上一節中講到的服務cloud-alibaba-nacos-9001進行註冊到Nacos集群中,如果成功,表示我們Nacos已經可以使用了

yml配置:

server:
  port: 9001
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: //192.168.137.152:81
#      server-addr: localhost:8848

management:
  endpoint:
    web:
      exposure:
        include: '*'

啟動成功後,我們在瀏覽器中就可以看到對應的服務註冊到nacos了

總結

到這裡,我們Nacos集群搭建就完成了,有不懂的小夥伴,再下方留言告訴我,小農看到了會第一時間回復,要注意的是,在nginx安裝那裡,可能會有一些包找不到,需要你自己去下載安裝,上面都是小農自己一步一步搭建出來的,按照步驟來,是不會有問題的,如果覺得文中對你有幫助,記得點贊關注!

怕什麼真理無窮,進一步有進一步的歡喜。大家加油~