Nacos在企業(yè)生產(chǎn)中如何使用集群環(huán)境?

前言

由于在公司,注冊(cè)中心和配置中心都是使用的Nacos,因?yàn)榍耙欢螘r(shí)間比較忙(木有劃水時(shí)間),沒有精力仔細(xì)去研究,時(shí)間就像海綿里的水,擠一擠總會(huì)是有的,出于對(duì)技術(shù)的好奇心,今天擠了一點(diǎn)時(shí)間,終于到了我 牧漢三 出馬的時(shí)候。今兒個(gè)就說一說Nacos集群架構(gòu)是如何搭配,以及在企業(yè)中是如何使用的。

Nacos集群架構(gòu)

在搭建Nacos集群之前,我們首先要了解一下Nacos的架構(gòu),工欲善其事必先利其器,磨刀不費(fèi)砍材功,在上一節(jié)中,我們了解了Nacos基礎(chǔ)功能,對(duì)Nacos的一些基本使用和配置,但是這些在實(shí)際工作過程中是遠(yuǎn)遠(yuǎn)不夠的,我們還需要了解一個(gè)非常重要的點(diǎn),就是對(duì)Nacos集群相關(guān)的操作,首先我們就要從Nacos的集群配置開始說起

2.1 Nacos 三種部署模式

  • 單機(jī)模式:用于測試和單節(jié)點(diǎn)使用
  • 集群模式:用于生產(chǎn)環(huán)境,確保高可用
  • 多集群模式:用戶多數(shù)據(jù)中心場景

2.2 參考文檔

參考網(wǎng)站:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

部署手冊(cè):https://nacos.io/zh-cn/docs/deployment.html

下面我們來看一下Nacos的一個(gè)具體拆分架構(gòu)圖:

環(huán)境準(zhǔn)備

對(duì)于Nacos而言,本身是存在內(nèi)置的數(shù)據(jù)庫 derby 實(shí)現(xiàn)配置持久化,但是為了查看和維護(hù)以及配置nacos集群方便我們需要將內(nèi)置數(shù)據(jù)庫配置成本地MySQL數(shù)據(jù)庫,同時(shí)因?yàn)镹acos使用的嵌入式實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),所以如果啟動(dòng)多個(gè)默認(rèn)配置下的Nacos節(jié)點(diǎn),數(shù)據(jù)存儲(chǔ)會(huì)存在一致性的問題,為了解決這個(gè)問題,Naacos采用了集中存儲(chǔ)方式來支持集群化存儲(chǔ)。目前nacos僅支持MySQL數(shù)據(jù)庫。

3.1 準(zhǔn)備工作

  1. 64 bit OS Linux/Unix/Mac,推薦使用Linux系統(tǒng)。
  2. 64 bit JDK 1.8+;
  3. Maven 3.2.x+;
  4. 3個(gè)或3個(gè)以上Nacos節(jié)點(diǎn)才能構(gòu)成集群。
  5. Nginx
  6. MySql 5.6.5+

公眾號(hào)后臺(tái)回復(fù):nacos 即可獲取

在Linxu下安裝Nacos

我們需要3個(gè)或3個(gè)以上Nacos節(jié)點(diǎn)才能構(gòu)成集群,同時(shí)也需要一個(gè)Nginx來模擬負(fù)載均衡。

安裝包已備好,后臺(tái)回復(fù)nacos即可

1. 解壓Nacos

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

持久化配置

前面我們已經(jīng)講過了,Nacos 默認(rèn)自帶的嵌入式數(shù)據(jù)庫 derby,當(dāng)我們每次創(chuàng)建一個(gè)Nacos實(shí)例的時(shí)候就會(huì)有一個(gè) derby,當(dāng)我們想要搭建Nacos集群,出現(xiàn)多個(gè)Nacos節(jié)點(diǎn)的時(shí)候,就會(huì)出現(xiàn)一致性的問題,所以我們?nèi)绻罱∟acos集群,首先要使用Nacos支持的外部統(tǒng)一數(shù)據(jù)管理MYSQL。

參考官網(wǎng):https://nacos.io/zh-cn/docs/deployment.html

這里建立的Mysql數(shù)據(jù)庫,一定要Linux下Nacos的可以訪問

我們需要找到Nacos安裝目錄下conf目錄下的SQL腳本,然后在數(shù)據(jù)庫中執(zhí)行

1 創(chuàng)建數(shù)據(jù)庫

CREATE DATABASE nacos_config;
USE nacos_config;

2 執(zhí)行腳本

找到nacos數(shù)據(jù)庫腳本,在剛才創(chuàng)建的數(shù)據(jù)庫中執(zhí)行

執(zhí)行成功,如下圖所示:

3 修改配置

修改 conf/application.properties文件,增加支持MySQL數(shù)據(jù)源配置

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文件

我們?cè)谡介_始配置集群之前,我們需要修改conf/cluter.conf配置文件,在修改一個(gè)文件之前,先進(jìn)行備份,這一步Nacos文件已經(jīng)幫我們做了,如果沒有手動(dòng)復(fù)制一個(gè)備份文件

cp cluster.conf cluster.conf.example

在配置集群的時(shí)候,不能通過127.0.0.1 來進(jìn)行分配,服務(wù)器是不知道具體哪臺(tái)機(jī)器,具體的IP地址,需要使用conf/cluter.conf來指明對(duì)應(yīng)的IP和端口

同時(shí)我們修改端口的時(shí)候,要有一定的偏移量,因?yàn)镹acos2.0本身新增了占用端口,在設(shè)置端口的時(shí)候要避開。

每行配置成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.編輯啟動(dòng)腳本startup.sh

修改這個(gè)腳本,是為了能夠讓我們?cè)谑褂眠@個(gè)命令啟動(dòng)的時(shí)候傳入對(duì)應(yīng)的端口參數(shù),這樣攜帶具體端口號(hào)參數(shù)啟動(dòng)就能啟動(dòng)具體的Nacos節(jié)點(diǎn),腳本目錄為:nacos/bin/startup.sh
修改參數(shù):

啟動(dòng)Nacos

啟動(dòng)命令:

./startup.sh -o 8848

./startup.sh -o 8848

./startup.sh -o 8848

啟動(dòng)以后我們可以查看這個(gè)日志文件,是否啟動(dòng)成功

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

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

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

一般數(shù)量為3,我這里是啟動(dòng)了三個(gè)日志查看,所以是6

注意:我們?cè)跒g覽器訪問Nacos地址的時(shí)候,一定要把防火墻關(guān)閉

systemctl stop firewalld # 臨時(shí)關(guān)閉

systemctl disable firewalld # 永久關(guān)閉

打開任意IP和端口下的路徑,使用賬號(hào)密碼nacos/nacos 登錄成功后,在 集群管理>節(jié)點(diǎn)列表 中可以看到我們?nèi)齻€(gè)nacos服務(wù),到這里nacos此時(shí)已經(jīng)完成全部配置

nginx 負(fù)載均衡配置

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文件

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

下面沒有使用HTTP請(qǐng)求進(jìn)行轉(zhuǎn)發(fā),而是使用的TCP協(xié)議
使用nginx請(qǐng)求時(shí),需要配置成TCP轉(zhuǎn)發(fā),不能配置http2轉(zhuǎn)發(fā),否則連接會(huì)被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;
        }

}

啟動(dòng)nginx

cd /usr/local/nginx/sbin/ # 進(jìn)入目錄

./nginx #啟動(dòng)

在瀏覽器上輸入網(wǎng)址,查看是否可以啟動(dòng)成功

http://192.168.137.152:81/nacos

添加配置

我們?cè)?config_info表中也看到了對(duì)應(yīng)的添加記錄

注冊(cè)服務(wù)到nacos中

我們拿上一節(jié)中講到的服務(wù)cloud-alibaba-nacos-9001進(jìn)行注冊(cè)到Nacos集群中,如果成功,表示我們Nacos已經(jīng)可以使用了

yml配置:

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

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

啟動(dòng)成功后,我們?cè)跒g覽器中就可以看到對(duì)應(yīng)的服務(wù)注冊(cè)到nacos了

總結(jié)

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

怕什么真理無窮,進(jìn)一步有進(jìn)一步的歡喜。大家加油~


文章轉(zhuǎn)載自: https://muxiaonong.blog.csdn.net


公眾號(hào):牧小農(nóng),微信掃碼關(guān)注或搜索公眾號(hào)名稱