Nacos(二)Linux部署Nacos集群环境(兼容Nacos1.x与2.x)
目錄
- 前言
- 對比1.x版本
- 1、搭建單機環境
- 2、配置集群
- 3、啟動、停止集群節點
- 4、關閉雙寫
- 5、配置自啟服務
- 6、配置nginx映射
- 7、SpringCloud連接集群
《Linux部署Nacos-2.0.3單機環境》
《Docker部署Nacos-2.0.3單機環境》
《Docker部署Nacos-2.0.3集群環境》
《SpringCloud整合Nacos2.x使用》
前言
具體搭建那個版本的Nacos,最好根據需要整合的SpringCloud版本來決定。
版本對應參考:組件版本關系
對比1.x版本
Nacos1.x的搭建方式和2.x的方式,基本一致,相比1.X新增了gRPC的通信方式,因此需要增加2個端口。新增端口是在配置的主端口(server.port)基礎上,進行一定偏移量自動生成(分別偏移了1000和1001),nacos默認的端口為8848,偏移后的新增端口為9848與9849。
| 9848 | 1000 | 客戶端gRPC請求服務端端口,用于客戶端向服務端發起連接和請求 |
| 9849 | 1001 | 服務端gRPC請求服務端端口,用于服務間同步等 |
在集群環境下,Nacos2.x為了兼容1.x的平滑升級,開啟了雙寫功能,需要在集群搭建完成后,關閉雙寫功能。
1、搭建單機環境
首先按照單機環境的流程成功,需要進行配置mysql環境、配置application.properties、配置startup.sh,參考《Linux部署Nacos-2.0.3單機環境》完成搭建的搭建并且成功運行。
2、配置集群
配置nacos集群,至少需要三個節點。
如果是在不同服務器上搭建:
- 可以先在某一臺上,完成單機環境的配置然后拷貝到其他服務器,再完成后續的集群配置
- 直接在每臺服務器上進行單機的環境部署,然后再完成后續的集群配置。
如果是在同服務器上搭建:
- 在通過一個服務上部署集群,進行測試時,可以將完成單機環境的配置然后拷貝多份,比如分為:nacos1、nacos2、nacos3,并且修改不同的端口。
部署流程如下:
節點及端口分為:nacos1(8848、9848、9849)、nacos2(8858、9858、9859)、nacos3(8868、9868、9869)
-
1、搭建單機環境:
在/opt/cloud/nacos-cluster(手動創建)目錄下,部署一個nacos單機環境,并且修改nacos的名稱為nacos1,保證nacos1搭建成功。 -
2、復制文件
將搭建好的nacos1復制為nacos2、nacos3 -
3、修改集群cluster.conf
# 分別進入到nacos1、nacos2、nacos3的配置目錄 cd /opt/cloud/nacos-cluster/nacos1[nacos2/nacos3]/conf# 修改nacos1、nacos2、nacos3中的配置文件名稱 mv cluster.conf.example cluster.conf# 分別修改nacos1、nacos2、nacos3中cluster.conf的配置 vim cluster.conf# nacos1、nacos2、nacos3配置內容均如下,每個nacos均要配置集群中的所有節點[至少3個] 111.229.160.175:8848 111.229.160.175:8858 111.229.160.175:8868
分別進入到nacos1、nacos2、nacos3的配置目錄中,將cluster.conf.example 修改為 cluster.conf并且修改里面的配置。 -
4、修改application.properties
# 分別進入到nacos1、nacos2、nacos3的配置目錄cd /opt/cloud/nacos-cluster/nacos1[nacos2/nacos3]/conf# 分別修改nacos1、nacos2、nacos3中application.properties的配置vim application.properties# 端口依次修改為8848、8858、8868server.port=8848[8858/8868]# 集群模式下,使用的LVS的DR模式作的nacos的vip,這樣三個節點上面都有這個vip以及這個節點自己的ip# 導致nacos把這個vip也當作一個節點了。# 修改nacos.inetutils.ip-address=為當前服務器的ipnacos.inetutils.ip-address=111.229.160.175
分別進入到nacos1、nacos2、nacos3的配置目錄中,修改application.properties配置中的端口。 -
5、修改JVM內存
# 分別進入到nacos1、nacos2、nacos3的bin目錄 cd /opt/cloud/nacos-cluster/nacos1[nacos2/nacos3]/bin# 分別修改nacos1、nacos2、nacos3中application.properties的配置 vim startup.sh# 依次修改JVM,如下配置 JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
集群環境下,JVM內存默認為2g,如果資源不足或者資源有余,可以進行JVM內存修改。
文檔中進行了在本機如何配置集群環境,如果在不同服務器上配置集群環境,那么可以不需要修改端口的步驟,只進行cluster.conf文件配置即可。
3、啟動、停止集群節點
操作命令:
# 以內部數據源方式啟動,依次啟動 sh startup.sh# 停止 sh shutdown.sh成功啟動任何一個節點:
啟動日志:
登錄測試:
通過:http://112.14.15.16:8848、8858、8868/nacos,成功訪問nacos則表示搭建成功。
默認賬戶:nacos
默認密碼:nacos,為了安全在第一次進入到nacos以后最好修改一次密碼。
控制臺節點信息:
成功啟動所有節點:
集群搭建成功后,數據會進行同步;訪問任意一個節點,都可以看到所有的服務列表、配置列表等數據
4、關閉雙寫
如果成功啟動集群并且穩定運行后,需要關閉雙寫,否則SpringCloud無法連接進集群,會拋出異常:
Nacos cluster is running with 1.X mode, can’t accept gRPC request temporarily. Please check the server status or close Double write to force open 2.0 mode. Detail https://nacos.io/en-us/docs/2.0.0-upgrading.html.
當集群中最后一個節點也升級到2.0.X版本時,集群會開始進行升級檢測。每個節點會對該節點的服務信息和實例信息進行校驗,并檢測是否還有未完成的雙寫任務。
當該節點的服務信息和實例信息已經核對成功,并且沒有雙寫任務存在時,該節點會判定自己已經做好升級準備,并修改自己的狀態且通知其他Nacos節點。每臺節點是否完成升級準備可以從控制臺的集群管理中元數據信息中看到"readyToUpgrade": false/true。
當集群中所有節點均判定為準備完畢時。Nacos集群中的節點會進行升級切換,自動升級到Nacos2.0的處理邏輯。
參考官網文檔:https://nacos.io/zh-cn/docs/2.0.0-upgrading.html
-
正常模式關閉雙寫:
分別在集群服務器上運行以下語句,8848為對應nacos的端口:
curl -X PUT 'localhost:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false' -
鑒權模式關閉雙寫:
如果nacos開啟了鑒權,則需要獲取accessToken,分別在集群服務器上執行以下步驟:
1、使用用戶名和密碼登陸nacos:
curl -X POST '127.0.0.1:8848/nacos/v1/auth/login' -d 'username=nacos&password=nacos'2、若用戶名和密碼正確,返回信息如下:
{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyOTE2Nn0.2TogGhhr11_vLEjqKko1HJHUJEmsPuCxkur-CfNojDo","tokenTtl":18000,"globalAdmin":true}3、加上accessToken關閉雙寫:
curl -X PUT 'localhost:8848/nacos/v1/ns/operator/switches?accessToken=實際的token值&entry=doubleWriteEnabled&value=false'
5、配置自啟服務
自啟服務需要手動配置JAVA_HOME路徑路徑,修改 /bin/startup.sh文件
查詢jdk配置:
#1、查詢jdk配置 echo $JAVA_HOME # 2、結果 /usr/local/java/jdk1.8.0_131修改為指定jdk:
# 修改配置 vim start.sh# 內容 [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/local/java/jdk1.8.0_131創建自啟服務:
vim /usr/lib/systemd/system/nacos.service加入內容:
[Unit] Description=nacos After=network.target[Service] Type=forking # 單節點方式啟動,填寫實際路徑 # ExecStart=/opt/cloud/nacos/bin/startup.sh -m standalone # 集群方式啟動-外部數據源啟動,填寫實際路徑 ExecStart=/opt/cloud/nacos/bin/startup.shExecStop=/opt/module/nacos/bin/shutdown.sh PrivateTmp=true[Install] WantedBy=multi-user.target加入自啟:
systemctl daemon-reload systemctl enable nacos.service操作命令:
# 啟動 systemctl start nacos# 停止 systemctl stop nacos6、配置nginx映射
由于是集群配置,存在多個服務端控制臺,我們可以通過任意一個控制臺看到所有節點信息,為了減少節點的訪問量,想要訪問不同的節點需要輸入不同的ip:port。
通過nginx做負載均衡,向外暴漏一個統一的地址,目的有兩個:
- 為了單個節點的減輕壓力和方便操作
- 在SpringCloud整合,server-addr配置一個統一的入口路徑
ngxin配置內容如下:
........upstream nacos-proxy {server 111.229.160.175:8848 weight=1;server 111.229.160.175:8858 weight=1;server 111.229.160.175:8868 weight=1;}server {....location /nacos {proxy_pass http://nacos-proxy;port_in_redirect on;proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}....}效果:
7、SpringCloud連接集群
spring:cloud:nacos:discovery: #連接nacos集群前,配置好nginx負載均衡,直接連接nginx的ip+port即可,80端口可以忽略server-addr: 162.14.115.18......總結
以上是生活随笔為你收集整理的Nacos(二)Linux部署Nacos集群环境(兼容Nacos1.x与2.x)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用OGR处理几何要素
- 下一篇: 小米盒子1s搭建web服务器