一、什么是 Nacos?
Nacos 是阿里巴巴的新開源項目,其核心定位是 “一個更易於幫助構建雲原生應用的動態服務發現、配置和服務管理平台”,它支持幾乎所有主流類型的“服務”的發現、配置和管理。
二、單體部署
配置文件/data/nacos/init.d/custom.properties內容如下
management.endpoints.web.exposure.include=*
docker run -d -p 8848:8848 -e MODE=standalone -v /data/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties -v /data/nacos/logs:/home/nacos/logs --restart always --name nacos nacos/nacos-server
三、群集部署
整體架構為:Nginx + 3 x Nacos + MySQL
高可用MySQL使用主從復制結構 https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
docker run -d \
-p 8848:8848 \
--name nacos-1 \
-e MODE=cluster \
-e PREFER_HOST_MODE=ip \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e NACOS_SERVER_IP=192.168.87.133 \
-e NACOS_SERVERS=192.168.87.133:8848 192.168.87.135:8848 192.168.87.139:8848 \
-e MYSQL_MASTER_SERVICE_HOST=192.168.1.30 \
-e MYSQL_MASTER_SERVICE_PORT=3306 \
-e MYSQL_MASTER_SERVICE_DB_NAME=nacos \
-e MYSQL_MASTER_SERVICE_USER=root \
-e MYSQL_MASTER_SERVICE_PASSWORD=123456 \
-e MYSQL_SLAVE_SERVICE_HOST=192.168.1.30 \
-e MYSQL_SLAVE_SERVICE_PORT=3307 \
-e JVM_XMS=512m \
-e JVM_XMX=512m \
-e JVM_XMN=256m \
-e JVM_MS=32m \
-e JVM_MMS=80m \
-v /data/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-v /data/nacos/logs:/home/nacos/logs \
--restart=always \
nacos/nacos-server
其對應關系為:
192.168.87.133 對應 nacos-1
192.168.87.135 對應 nacos-2
192.168.87.139 對應 nacos-3
四、訪問Nacos UI界面
這里使用133服務器頁面進行展示下,
訪問http://192.168.87.133:8848/nacos
,進入登錄頁面,默認的用戶名與密碼都是nacos
我這里還原的sql是平時測試用的,這里打下碼,我們的關注點在 集群管理 > 節點列表 這里
這里我們看到Nacos集群各節點已經正常了,LEADER與FOLLOWER已經選出,一切正常了
五、配置Nginx
除了Nacos集群配置外,我們在Spring Boot或Spring Cloud項目中使用的時候,只能指定一個URL指向Nacos服務端,這里使用Nginx進行代理負載均衡
如果可以的話,生產環境最佳實踐是使用一個域名指向Nginx,之后就算換Nginx主機,客戶端也無需修改配置文件,只需要使用域名指向一個新的Nginx的IP
upstream nacos-cluster
{
server 192.168.87.133:8848;
server 192.168.87.139:8848;
server 192.168.87.135:8848;
}
server
{
listen 8848;
location /
{
proxy_pass http://nacos-cluster;
}
}
啟動Nginx,使用代碼進行測試連接當前的Nginx所在主機IP:8848
這里已經可以看到服務正常注冊到集群中了
注:文章中是按照3台虛擬機部署的,其實在一台機器上部署也可以,把ip換成一樣,端口設不一樣就行,根據自身情況調整