Nacos在企業(yè)中如何使用集群環(huán)境?
前言
在公司,注冊中心和配置中心都是使用的Nacos,因為前一段時間比較忙(木有劃水時間),也沒有精力仔細去研究,但是時間就像海綿里的水,擠一擠總會是有的,出于對技術(shù)的好奇心,今天終于到了我 牧漢三 出馬了。就說一說Nacos集群架構(gòu)是如何搭配。
Nacos集群架構(gòu)
在搭建Nacos集群之前,我們首先要了解一下Nacos的架構(gòu),工欲善其事必先利其器,磨刀不費砍材功,在上一節(jié)中,我們了解了Nacos基礎(chǔ)功能,對Nacos的一些基本使用和配置,但是這些在實際工作過程中是遠遠不夠的,我們還需要了解一個非常重要的點,就是對Nacos集群相關(guān)的操作,首先我們就要從Nacos的集群配置開始說起。
2.1 Nacos 三種部署模式
- 單機模式:用于測試和單節(jié)點使用。
- 集群模式:用于生產(chǎn)環(huán)境,確保高可用。
- 多集群模式:用戶多數(shù)據(jù)中心場景。
2.2 參考文檔
參考網(wǎng)站:
https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
部署手冊:
https://nacos.io/zh-cn/docs/deployment.html
下面我們來看一下Nacos的一個具體拆分架構(gòu)圖:
環(huán)境準(zhǔn)備
對于Nacos而言,本身是存在內(nèi)置的數(shù)據(jù)庫 derby 實現(xiàn)配置持久化,但是為了查看和維護以及配置nacos集群方便我們需要將內(nèi)置數(shù)據(jù)庫配置成本地MySQL數(shù)據(jù)庫,同時因為Nacos使用的嵌入式實現(xiàn)數(shù)據(jù)的存儲,所以如果啟動多個默認配置下的Nacos節(jié)點,數(shù)據(jù)存儲會存在一致性的問題,為了解決這個問題,Naacos采用了集中存儲方式來支持集群化存儲。目前nacos僅支持MySQL數(shù)據(jù)庫。
3.1 準(zhǔn)備工作
- 64 bit OS Linux/Unix/Mac,推薦使用Linux系統(tǒng)。
- 64 bit JDK 1.8+;
- Maven 3.2.x+;
- 3個或3個以上Nacos節(jié)點才能構(gòu)成集群;
- Nginx;
- MySql 5.6.5+;
在Linxu下安裝Nacos
我們需要3個或3個以上Nacos節(jié)點才能構(gòu)成集群,同時也需要一個Nginx來模擬負載均衡。
安裝包已備好,后臺回復(fù)nacos即可。
1. 解壓Nacos
tar -zxvf nacos-server-2.0.3.tar.gz
持久化配置前面我們已經(jīng)講過了,Nacos 默認自帶的嵌入式數(shù)據(jù)庫 derby,當(dāng)我們每次創(chuàng)建一個Nacos實例的時候就會有一個 derby,當(dāng)我們想要搭建Nacos集群,出現(xiàn)多個Nacos節(jié)點的時候,就會出現(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文件
我們在正式開始配置集群之前,我們需要修改conf/cluter.conf配置文件,在修改一個文件之前,先進行備份,這一步Nacos文件已經(jīng)幫我們做了,如果沒有手動復(fù)制一個備份文件。
cp cluster.conf cluster.conf.example
在配置集群的時候,不能通過127.0.0.1 來進行分配,服務(wù)器是不知道具體哪臺機器,具體的IP地址,需要使用conf/cluter.conf來指明對應(yīng)的IP和端口。
同時我們修改端口的時候,要有一定的偏移量,因為Nacos2.0本身新增了占用端口,在設(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.編輯啟動腳本startup.sh
修改這個腳本,是為了能夠讓我們在使用這個命令啟動的時候傳入對應(yīng)的端口參數(shù),這樣攜帶具體端口號參數(shù)啟動就能啟動具體的Nacos節(jié)點,腳本目錄為:nacos/bin/startup.sh修改參數(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
一般數(shù)量為3,我這里是啟動了三個日志查看,所以是6。
注意:我們在瀏覽器訪問Nacos地址的時候,一定要把防火墻關(guān)閉。
- systemctl stop firewalld # 臨時關(guān)閉;
- systemctl disable firewalld # 永久關(guān)閉;
打開任意IP和端口下的路徑,使用賬號密碼nacos/nacos 登錄成功后,在 集群管理>節(jié)點列表 中可以看到我們?nèi)齻€nacos服務(wù),到這里nacos此時已經(jīng)完成全部配置。
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請求進行轉(zhuǎn)發(fā),而是使用的TCP協(xié)議使用nginx請求時,需要配置成TCP轉(zhuǎn)發(fā),不能配置http2轉(zhuǎn)發(fā),否則連接會被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 #啟動
在瀏覽器上輸入網(wǎng)址,查看是否可以啟動成功
http://192.168.137.152:81/nacos
添加配置
我們在 config_info 表中也看到了對應(yīng)的添加記錄。
注冊服務(wù)到nacos中
我們拿上一節(jié)中講到的服務(wù)cloud-alibaba-nacos-9001進行注冊到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: '*'
啟動成功后,我們在瀏覽器中就可以看到對應(yīng)的服務(wù)注冊到nacos了。
總結(jié)到這里,我們Nacos集群搭建就完成了,有不懂的小伙伴,下方留言告訴我,小農(nóng)看到了會第一時間回復(fù),要注意的是,在nginx安裝那里,可能會有一些包找不到,需要你自己去下載安裝,上面都是小農(nóng)自己一步一步搭建出來的,按照步驟來,是不會有問題的。
cd /usr/local/nginx/sbin/ # 進入目錄
./nginx #啟動