Nacos集群搭建及高可用方案
- 前言
- 集群架構圖
- 集群規劃
- 集群搭建
- 準備作業
- Nginx服務器
- Nacos服務器
- 清除資料
- 集群搭建
- 1.拷貝nacos01
- 2.修改nacos01埠號
- 3.添加集群節點
- 4.拷貝nacos02、nacos03
- 5.Nginx負載均衡
- 測驗
- 啟動集群
- nacos client
- 1.application.properties
- 2.啟動client
前言
集群架構圖
首先我們來看一下官網的集群架構圖,如下:

DNS:域名地址(防止因ip或者埠號變化而無法訪問)
SLB:是負載均衡,這里我們會使用Nginx實作Nacos集群的負載均衡
集群規劃
按照集群節點設定為奇數的原則,我們的Nacos集群規劃三個節點Nacos01(192.168.8.190:8845)、Nacos01(192.168.8.190:8846)、Nacos01(192.168.8.190:8847);最后配置一臺Nginx服務器Nginx(192.168.8.199),
問:為什么集群的個數建議設定為奇數個?
1:通常在集群中要求可用節點數量 > 集群總節點數量/2 ;如果是偶數個的話,當master節點宕機在各個子節點不可通信的情況下會形成若干小集群,每個小集群會選出自己的master,這就會導致腦裂的出現,
2:在容錯能力相同的情況下,奇數臺更節省資源,比如在遵循第一條規則的前提下,如集群節點為三個,則只允許一臺機器宕機;集群節點為4個,同樣只允許一臺機器宕機;
集群搭建
準備作業
Nginx服務器
按照上述的集群規劃,我們參照文章Nginx系列之一掃盲篇搭建我們的Nginx服務器,搭建完畢后我們在瀏覽器中訪問http://192.168.8.199:80(80是Nginx默認埠號,可以不寫),如果出現以下歡迎界面則說明我們的Nginx服務器搭建成功,如下圖:

Nacos服務器
Nacos是比較占用記憶體的(通常一個節點占用記憶體大于1個G),由于我們上面的三個節點在同一臺服務器,所以我們要將Nacos的服務器記憶體調到3G以上,這里我們調整為5G,如下圖所示:

如果宿主機記憶體在8G以下的童鞋建議不要將三個節點放在同一臺服務器
清除資料
進群中的三個nacos節點我們通過復制nacos而來,但是集群搭建要求不能有原始資料,所以我們要將nacos和mysql中的資料清空
首先我們關閉nacos服務進入到nacos目錄,執行命令rm -rf data洗掉data目錄

然后我們通過SQLyog連接MySQL5.7服務器中的nacos資料庫,將資料庫清空,重新匯入nacos-mysql.mysql,如下圖:

集群搭建
1.拷貝nacos01
我們進入到目錄/usr/tools中執行命令cp -rf nacos nacos01復制出nacos01,如下圖

2.修改nacos01埠號
進入到目錄nacos/conf下,執行命令vim application.properties,修改埠號為8845,如下圖:


3.添加集群節點
在上面conf目錄中我們看到了檔案cluster.conf.example,這個就是集群配置的模板檔案,我們執行命令cp cluster.conf.example cluster.conf拷貝并重新命名,如下圖:

然后我們執行命令vim cluster.conf編輯該組態檔,在該檔案中添加以下配置:
192.168.8.190:8845
192.168.8.190:8846
192.168.8.190:8847

單個節點的所有配置就是這樣了,后面的節點nacos02和nacos03只要拷貝nacos01然后改下埠號就可以了
4.拷貝nacos02、nacos03
回到/usr/tools目錄依次執行命令cp -rf nacos01 nacos02、cp -rf nacos01 nacos03,然后依次修改這兩個節點的埠號為8846和8847
5.Nginx負載均衡
我們進入到Nginx服務器的/usr/tools/nginx/conf目錄,我們可以看到有個檔案nginx.conf,如下圖:

執行命令vim nginx.conf,添加upstream、注釋掉原先的location,新增如下內容保存后退出:
upstream nacos-servers {
server 192.168.8.190:8845;
server 192.168.8.190:8846;
server 192.168.8.190:8847;
}
#location / {
# root html;
# index index.html index.htm;
#}
location / {
proxy_pass http://nacos-servers/;
}

最后執行命令nginx -s reload重新啟動nginx
測驗
啟動集群
我們依次啟動nacos01、nacos02和nacos03,然后瀏覽器依次訪問http://192.168.8.190:8445/nacos、http://192.168.8.190:8446/nacos、http://192.168.8.190:8447/nacos,如下圖所示:


nacos client
1.application.properties
我們打開專案01.springcloud_alibaba_nacos_client的application.properties檔案,修改spring.cloud.nacos.server-addr的地址為Nginx的地址,如下
server.port=8800
# 代表微服務服務名 唯一 推薦 大寫
spring.application.name=NACOSCLIENT
# nacos server 的地址修改為Nginx的地址
spring.cloud.nacos.server-addr=192.168.8.199:80
# 作為nacos client注冊地址
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr}
# 指定向nacos server注冊服務名稱
spring.cloud.nacos.discovery.service=${spring.application.name}
2.啟動client
? 我們啟動client,如下圖:

此時我們分別訪問三個nacos,可以看到每個nacos的服務串列中都已經注冊了我們的client,這也說明我們的集群搭建是成功的,如下圖

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/291822.html
標籤:其他
上一篇:微服務架構介紹
