日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

微服务管理平台nacos虚拟ip负载均衡集群模式搭建

發(fā)布時間:2023/12/19 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 微服务管理平台nacos虚拟ip负载均衡集群模式搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、Nacos簡介

Nacos是用于微服務(wù)管理的平臺,其核心功能是服務(wù)注冊與發(fā)現(xiàn)、服務(wù)配置管理。

Nacos作為服務(wù)注冊發(fā)現(xiàn)組件,可以替換Spring Cloud應(yīng)用中傳統(tǒng)的服務(wù)注冊于發(fā)現(xiàn)組件,如:Eureka、consul等,支持服務(wù)的健康檢查。
Nacos作為服務(wù)配置中心,可以替換Spring Cloud Config。

當(dāng)然Nacos作為一個微服務(wù)管理平臺,除了面向spring Cloud,還支持很多其他的微服務(wù)基礎(chǔ)設(shè)施,如:docker、dubbo、kubernetes等。除了核心的服務(wù)注冊與發(fā)現(xiàn)和配置管理功能,還提供了各種服務(wù)管理的功能特性,如:動態(tài)DNS、服務(wù)元數(shù)據(jù)管理等。

二、Nacos單點(diǎn)部署

Nacos支持單點(diǎn)部署的模式,搭建過程非常簡單,實(shí)際上nacos的standalone模式?jīng)]有所謂的安裝過程,就是下載和啟動。但是這種情況沒有高可用支持,所以只適合測試或?qū)W習(xí)使用。
首先去nacos的github地址下載release安裝包。當(dāng)然你也可以自己下載源碼之后進(jìn)行編譯打包,nacos是使用java開發(fā)的,使用maven進(jìn)行編譯打包。這里我們就不自己打包了,使用release安裝包。下載地址是:https://github.com/alibaba/nacos/releases。在linux系統(tǒng)下可以使用如下的命令下載和解壓縮。

#下載nacos
wget https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz;
# 解壓nacos
tar -xvf nacos-server-1.1.4.tar.gz

進(jìn)入到nacos/bin目錄下面,startup命令用于啟動nacos,shutdown命令用于停掉nacos。

如果你是linux/unix系統(tǒng),使用sh startup.sh -m standalone腳本啟動方式。
如果你是windows系統(tǒng),雙擊startup.cmd啟動nacos。

nacos的默認(rèn)服務(wù)端口是8848,啟動完成之后通過瀏覽器訪問nacos:http://ip:8848/nacos/。看到如下界面,需要登陸,默認(rèn)的用戶名密碼都是nacos,登陸之后看到如下界面:

如果你訪問不到上面的界面,請檢查你部署的主機(jī)操作系統(tǒng)的防火墻設(shè)置。以下是為CentOS7系統(tǒng)防火墻開放8848端口的命令,其他系統(tǒng)請自行解決。

firewall-cmd --zone=public --add-port=8848/tcp --permanent    
firewall-cmd --reload

三、查看主機(jī)網(wǎng)卡名稱

使用ip addr命令查看linux主機(jī)的網(wǎng)卡。

第一個lo網(wǎng)絡(luò)ip是回路ip,127.0.0.1,這個是標(biāo)配
第二個enp0s3網(wǎng)絡(luò)設(shè)備,ip是10.0.2.15,這個是因?yàn)槲业姆?wù)器網(wǎng)絡(luò)使用了雙網(wǎng)卡:橋接+HostOnly模式。正常的服務(wù)器是沒有的。
第三個enp0s8就是本服務(wù)器真正的使用到提供服務(wù)的網(wǎng)絡(luò)ip,如:192.168.161.4。
第四個網(wǎng)絡(luò)設(shè)備是因?yàn)槲以谶@臺虛擬機(jī)上安裝過docker,所以有一個docker0的網(wǎng)絡(luò)設(shè)備。

因?yàn)檩^多的網(wǎng)絡(luò)設(shè)備,導(dǎo)致我在后續(xù)安裝過程出現(xiàn)問題。這里先賣個關(guān)子。

四、配置nacos集群

我們準(zhǔn)備了三臺服務(wù)器(虛擬機(jī)),192.168.161.3、192.168.161.4、192.168.161.5。在三臺服務(wù)器上分別下載、解壓nacos,并開放8848端口。參考單點(diǎn)standalone部署的模式的操作。然后在conf/cluster.conf中加入三臺服務(wù)器的ip配置

#ip:port
192.168.161.3:8848
192.168.161.4:8848
192.168.161.5:8848

初始化 MySQL 數(shù)據(jù)庫,sql源文件是在nacos/conf解壓目錄下面的nacos-mysql.sql文件。sql語句源文件。并在nacos/conf/application.properties中增加mysql配置

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://192.168.161.3:3306/testdb?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=test
db.password=

spring.datasource.platform說明支持?jǐn)?shù)據(jù)持久化的數(shù)據(jù)庫類型,已知目前只支持mysql
db.num數(shù)據(jù)庫的數(shù)量,我們實(shí)驗(yàn)環(huán)境只有一個mysql數(shù)據(jù)庫,所以是1
db.url.0表示第一個mysql數(shù)據(jù)庫的jdbc url連接。如果還有第二個、第三個,請?jiān)黾觗b.url.n中的n。

問題: 解決網(wǎng)卡獲取的不是我們希望綁定的網(wǎng)卡的問題:當(dāng)我們配置完成之后,使用startup.sh命令啟動。發(fā)現(xiàn)集群節(jié)點(diǎn)列表中并沒有任何記錄。而且后臺服務(wù)日志報(bào)錯,內(nèi)容如下:

分析: 通過日志我們看到nacos程序自動獲取的是10.0.2.15這個ip,而我們配置的是192.168.161.x的ip。二者不一致,所以報(bào)錯。我們看一下獲取主機(jī)ip的程序源碼,如下:

private static String getHostAddress() {
        String address = System.getProperty("nacos.server.ip");
        if (StringUtils.isNotEmpty(address)) {
            return address;
        } else {
            address = "127.0.0.1";
        }
        ...
}

解決方案: 看完源碼之后,ip是通過System.getProperty獲取的,所以我們完全可以通過JVM傳參指定ip。在startup.sh的啟動腳本中增加nacos.server.ip參數(shù)。

#=================================================================================
# JVM Configuration
#================================================================================

# 單機(jī)模式對應(yīng)的啟動參數(shù)
if [[ "${MODE}" == "standalone" ]]; then
    JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
    JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
# 集群模式對應(yīng)的啟動參數(shù)
    JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
    JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
# 新增以下參數(shù)設(shè)置本機(jī)ip地址
    JAVA_OPT="${JAVA_OPT} -Dnacos.server.ip=你的服務(wù)器的ip"
fi

當(dāng)以上工作都完成之后,我們通過瀏覽器分別訪問nacos服務(wù),看到如下界面。集群管理的節(jié)點(diǎn)列表里面已經(jīng)有三各節(jié)點(diǎn),ip分別是192.168.161.3:8848、192.168.161.4:8848、192.168.161.5:8848。

五、nacos集群架構(gòu)

在完成nacos集群的配置之后,我們可以通過三個入口分別訪問集群內(nèi)的nacos服務(wù),那下面的問題就是如何將三個入口轉(zhuǎn)成一個入口。目前許多個人開發(fā)者寫的博客或教程中的方法就是在三個nacos服務(wù)的前端加一個負(fù)載均衡器,如:nginx、haproxy。然后號稱是生產(chǎn)級別的搭建方法,但這種方法是絕對不能用于生產(chǎn)的,因?yàn)槟愕膎ginx和haproxy是單點(diǎn),一旦nginx掛了,整個服務(wù)就掛了。

nacos官網(wǎng)推薦的方法是使用虛擬ip的方法,如下:

最開始虛擬ip192.168.161.6可能與192.168.161.3的主機(jī)綁定在一起,通過這兩個ip都可以訪問192.168.161.3主機(jī)的nacos服務(wù)。
一旦192.168.161.3主機(jī)宕機(jī)或者其他網(wǎng)絡(luò)故障,192.168.161.6會自動切換到與192.168.161.4或者192.168.161.5主機(jī)綁定在一起。這個過程被叫做虛擬ip的漂移。

這種虛擬ip的方法就是沒有使用到負(fù)載均衡,訪問的仍然是某一個節(jié)點(diǎn)的nacos服務(wù),只不過形成了主從備份,提供了高可用。那既可以提供高可用,又可以提供負(fù)載均衡的辦法可能有的朋友已經(jīng)想到了,如下圖:

在nacos服務(wù)的前端加上nginx或者h(yuǎn)aproxy的負(fù)載均衡器
然后對負(fù)載均衡器使用虛擬ip,通過keepalived實(shí)現(xiàn)虛擬ip的漂移
用戶訪問負(fù)載均衡器實(shí)現(xiàn)對nacos服務(wù)的訪問,主nginx掛掉,虛擬ip漂移到從nginx負(fù)載均衡提供服務(wù)

六、nacos集群(虛擬ip漂移)

我們就拿官網(wǎng)中推薦的方法,使用虛擬ip訪問nacos集群的方式做個例子講解一下。為什么不講第三種?一般系統(tǒng)架構(gòu)水平到了的人聽懂這種方式就知道第三種方式怎么做,水平不到的人聽了第三種仍然還是不懂。

6.1.安裝配置keepalived

在三臺服務(wù)器上分別安裝keepalived

yum install -y keepalived

在三臺服務(wù)器上分別修改/etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    state MASTER
    interface enp0s8
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.161.6
    }
}

一臺服務(wù)器是MASTER,其他的服務(wù)器為BACKUP
interface 配置為我們剛剛查看的網(wǎng)卡的名稱
virtual_router_id 必須一致,表示這三臺服務(wù)器搶用一個虛擬ip。
修改priority 優(yōu)先級,三臺服務(wù)器要不一樣,比如:100、101、102,優(yōu)先級最高的優(yōu)先使用虛擬ip。MASTER的優(yōu)先級一定要高于BACKUP主機(jī)
advert_int 是幾臺服務(wù)器之間的同步檢查時間,1秒
authentication 的設(shè)置必須一致,這樣這幾臺服務(wù)器才能通信
修改virtual_ipaddress為三臺服務(wù)器所在網(wǎng)段內(nèi)未被占用的IP地址,比如:192.168.161.6

6.2.修改防火墻
CentOS7必須開放防火墻配置,否則三臺主機(jī)無法就虛擬ip的使用優(yōu)先級通信,將都是MASTER,都配置虛擬ip。

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0  --protocol vrrp -j ACCEPT;
firewall-cmd --reload;

6.3.啟動keepalived服務(wù)

sudo systemctl restart keepalived.service

期待您的關(guān)注

向您推薦博主的系列文檔:《手摸手教您學(xué)習(xí)SpringBoot系列-16章97節(jié)》
本文轉(zhuǎn)載注明出處(必須帶連接,不能只轉(zhuǎn)文字):字母哥博客。

總結(jié)

以上是生活随笔為你收集整理的微服务管理平台nacos虚拟ip负载均衡集群模式搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。