Nacos高可用集羣搭建+MySQL持久化

Nacos高可用集羣搭建+MySQL持久化

之前講述了Nacos單機版的簡單安裝,詳情請參閱 Nacos之單機版安裝 或者參考 官網,本文將進一步搭建一個生產可用級別的Nacos高可用集羣,並使用MySQL數據庫實現數據的持久化。

架構圖

下面使官方推薦的搭建模式:
在這裏插入圖片描述
本文使用Nginx來承擔VIP的責任,複製負載均衡。

環境要求

  • 64 bit JDK1.8+;
  • 64 bit OS(本文CentOS 7.4);
  • Maven 3.2+(不打包可不需要);
  • 3個或以上的Nacos節點,3個以上才能構成集羣;

下載安裝包

請參閱Nacos之安裝,下載對應的安裝包,上傳至 /usr/local/src,本文使用的1.1.4版本:
在這裏插入圖片描述
解壓後複製到/usr/local/nacos_cluster,分別命名爲nacos1nacos2nacos3

[root@localhost src]# unzip nacos-server-1.1.4.zip
[root@localhost src]# cp nacos /usr/local/nacos_cluster/nacos1 -R
[root@localhost src]# cp nacos /usr/local/nacos_cluster/nacos2 -R
[root@localhost src]# cp nacos /usr/local/nacos_cluster/nacos3 -R

在這裏插入圖片描述

數據庫配置

真正生產環境建議至少主備模式,或採用高可用數據庫。具體可以參考這篇文章:MySQL高可用方案選型參考。本文主角是Nacos,這裏使用單機版MySQL。

新建數據庫nacos_config,然後執行nacos/conf目錄下的nacos-mysql.sql,創建以下幾張表:
在這裏插入圖片描述

集羣配置

進入/usr/local/nacos_cluster1/nacos,複製cluster.conf.examplecluster.conf

cp cluster.conf.example cluster.conf

修改cluster.conf內容如下:

#it is ip
#example
192.168.0.14:8847
192.168.0.14:8848
192.168.0.14:8849

這裏特別注意下:這個IP不能寫127.0.0.1,要寫你的真實IP或者說要保證hostname -i命令後打印的結果是192.xxx.xxx.xxx,如果不是請修改hosts,否則你服務註冊的時候會失敗,報錯如下:

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([192.168.0.14:8800]) tried: failed to req API:192.168.0.14:8800/nacos/v1/ns/instance. code:503 msg: server is STARTING now, please try again later!

然後複製cluster.conf到nacos2和nacos3的conf下,當然你也可以分別去修改:

[root@localhost conf]# cp cluster.conf /usr/local/nacos_cluster/nacos2/conf/cluster.conf
[root@localhost conf]# cp cluster.conf /usr/local/nacos_cluster/nacos3/conf/cluster.conf

我們這裏在一臺機器上部署3個不同端口的Nacos節點。生產環境,建議多個主機。

修改nacos/conf目錄下的application.properties文件:

server.port=8847 # 這裏nacos1、naocs2、nacos3分別修改爲8847、8848、8849,不要重複了。

# 尾部追加以下內容
spring.datasource.platform=mysql # 使用MySQL方式持久化
db.num=1 # 這裏寶石几個數據庫實例,多個的話,下邊依次是`db.url.0`, `db.url.1` etc
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root # 用戶名
db.password=root # 密碼

如果啓動失敗,可能是內存不夠用的,比如我的虛擬機就只設置了1g,啓動的時候就報內存不夠分配的異常。可以進入nacos1/bin下,修改startup.sh,調整爲合適的大小:
在這裏插入圖片描述
依次啓動3個Nacos節點:

[root@localhost nacos_cluster]# ./nacos1/bin/startup.sh
[root@localhost nacos_cluster]# ./nacos1/bin/startup.sh
[root@localhost nacos_cluster]# ./nacos1/bin/startup.sh

Output:

nacos is starting with cluster
nacos is starting,you can check the /usr/local/nacos_cluster/nacos1/logs/start.out

查看一下nacos節點個數:

[root@localhost nacos_cluster]# ps -ef|grep nacos|grep -v grep|wc -l
3

Nginx代理

安裝nginx這裏不再贅述,請自行Google搜索。
修改nginx的配置conf,添加一下內容:

upstream cluster{
    server 127.0.0.1:8847;
    server 127.0.0.1:8848;
    server 127.0.0.1:8849;
}

server {
    listen  8800;
    server_name localhost;
    location / {
        proxy_pass http://cluster;
    }
}

然後啓動或者刷新Nginx:

[root@localhost nginx]# ./sbin/nginx -s reload
ngx_http_fastdfs_set pid=11240

訪問測試

打開瀏覽器訪問:http://192.168.0.14:8800/nacos/
在這裏插入圖片描述
登錄(賬號密碼都是nacos),創建一個測試配置:
在這裏插入圖片描述
我們去數據庫查詢一下我們新添加的測試配置信息:
在這裏插入圖片描述
OK. 至此,Nacos集羣+MySQL持久化的搭建就完成了。

服務註冊發現測試

yml配置:

Nacos服務地址這裏配置Nginx負載均衡的地址,不用寫多個IP,這樣的好處是如果以後更換IP,只要Nginx那邊修改就好了,也可以配置成域名。這裏的Nginx就是充當了官方架構圖中的VIP角色,這樣也是官方推薦的模式。

server:
  port: 8809
spring:
  application:
    name: cloud-alibaba-provider
  cloud:
    nacos:
      server-addr: 192.168.0.14:8800 # 這裏配置Nginx負載均衡的地址,不用寫多個IP,這樣的好處是如果以後更換IP,只要Nginx那邊修改就好了,也可以配置成域名。這裏的Nginx就是充當了官方架構圖中的VIP角色,這樣也是官方推薦的模式。

啓動服務,訪問Nacos控制檯:
在這裏插入圖片描述
OK,已經註冊到nacos集羣了。

因個人能力有限,如果不足或錯誤之處,歡迎指正 ~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章