Nacos2.0版本部署
- Nacos2.0版本相比1.X新增了gRPC的通信方式,是以需要增加2個端口。新增端口是在配置的主端口(server.port)基礎上,進行一定偏移量自動生成。
端口 | 與主端口的偏移量 | 描述 |
8848 | 【服務主端口】,預設8848,java程式注冊中心、配置中心、服務注冊等使用該端口 |
9848 | +1000 | 用戶端gRPC請求服務端端口,用于TCP長連接配接和請求,無需手動配置,已經內建了 就是【服務主端口】+ 1000 |
7848 | -1000 | jRaft服務節點之間資料同步協定端口,無需手動配置,已經內建了 就是【服務主端口】- 1000 |
9849 | +1001 | gRPC服務節點之間資料同步協定端口,無需手動配置,已經內建了 就是【服務主端口】+ 1001 |
Docker 安裝nacos容器
# 搜尋可以使用的鏡像
docker search nacos
# 拉取鏡像
docker pull nacos/nacos-server
建立挂載目錄
mkdir -p /home/nacos/logs
mkdir -p /home/nacos/conf
編輯檔案
vim /home/nacos/conf/application.properties
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.XXX.222:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=root
vim /home/nacos/conf/cluster.conf
#2023-02-15T23:15:42.791581
192.168.XXX.222:8840
192.168.XXX.222:8850
192.168.XXX.222:8860
第一種運作nacos容器的方法
docker run -d \
--name nacos \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e JVM_XMN=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /data/nacos/logs:/home/nacos/logs \
-v /data/nacos/conf:/home/nacos/conf \
-v /data/nacos/conf/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server
# (不推薦,因為不能連接配接資料庫,進行持久化)
第二種運作nacos容器的方法
#推薦使用這種方式,可以連接配接自己的資料庫
docker run -d
--name nacos \
--restart=always \
-e PREFER_HOST_MODE=hostname \
-e NACOS_APPLICATION_PORT=8848 \
-e MODE=standalone \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e JVM_XMN=256m \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.0.12 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server
操作nacos容器
#進入nacos
docker exec -it nacos /bin/bash
#把nacos的配置檔案複制到主機上面,進行檢視日志之類的操作
docker cp -a nacos:/home/nacos /home/docker/
#删除複制的檔案
rm -rf /home/docker/nacos
#如果需要強制删除nacos容器,執行下面的指令
docker rm -f nacos
搭建nacos叢集
機器 | ip |
node1 | 10.19.11.215 |
node2 | 10.19.11.217 |
node3 | 10.19.23.114 |
docker run -d \
--name nacos_cluster_1 \
--restart=always \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
#此節點的端口
-e NACOS_APPLICATION_PORT=8848 \
#叢集所有的ip
-e NACOS_SERVERS="10.19.11.215:8848 10.19.11.217:8848 10.19.23.114:8848" \
#使用mysql存儲
-e SPRING_DATASOURCE_PLATFORM=mysql \
#mysql的位址
-e MYSQL_SERVICE_HOST=11.22.33.44 \
#mysql端口
-e MYSQL_SERVICE_PORT=3306 \
#mysql使用者名
-e MYSQL_SERVICE_USER=root \
#mysql密碼
-e MYSQL_SERVICE_PASSWORD=root \
#nacos庫名字
-e MYSQL_SERVICE_DB_NAME=nacos_config \
#此節點的内網ip,每個節點的ip都不一樣
-e NACOS_SERVER_IP=10.19.11.215 \
#挂載的端口,nacos2.0新增了9848,9849端口
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.0.4
docker run -d \
--name nacos_cluster_2 \
--restart=always \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
#此節點的端口
-e NACOS_APPLICATION_PORT=8848 \
#叢集所有的ip
-e NACOS_SERVERS="10.19.11.215:8848 10.19.11.217:8848 10.19.23.114:8848" \
#使用mysql存儲
-e SPRING_DATASOURCE_PLATFORM=mysql \
#mysql的位址
-e MYSQL_SERVICE_HOST=11.22.33.44 \
#mysql端口
-e MYSQL_SERVICE_PORT=3306 \
#mysql使用者名
-e MYSQL_SERVICE_USER=nacos_mysql \
#mysql密碼
-e MYSQL_SERVICE_PASSWORD=nacos_pwd \
#nacos庫名字
-e MYSQL_SERVICE_DB_NAME=cloud_nacos \
#此節點的内網ip,每個節點的ip都不一樣
-e NACOS_SERVER_IP=10.19.11.217 \
#挂載的端口,nacos2.0新增了9848,9849端口
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.0.4
docker run -d \
--name nacos_cluster_3 \
--restart=always \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
#此節點的端口
-e NACOS_APPLICATION_PORT=8848 \
#叢集所有的ip
-e NACOS_SERVERS="10.19.11.215:8848 10.19.11.217:8848 10.19.23.114:8848" \
#使用mysql存儲
-e SPRING_DATASOURCE_PLATFORM=mysql \
#mysql的位址
-e MYSQL_SERVICE_HOST=11.22.33.44 \
#mysql端口
-e MYSQL_SERVICE_PORT=3306 \
#mysql使用者名
-e MYSQL_SERVICE_USER=nacos_mysql \
#mysql密碼
-e MYSQL_SERVICE_PASSWORD=nacos_pwd \
#nacos庫名字
-e MYSQL_SERVICE_DB_NAME=cloud_nacos \
#此節點的内網ip,每個節點的ip都不一樣
-e NACOS_SERVER_IP=10.19.23.114 \
#挂載的端口,nacos2.0新增了9848,9849端口
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.0.4
10.19.11.215:8848 node1
10.19.11.217:8848 node2
10.19.23.114:8848 node3
docker run -itd \
--name nacos-server-01 \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.XXX.222 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_APPLICATION_PORT=8846 \
-e NACOS_SERVERS="192.168.XXX.222:8846 192.168.XXX.222:8847 192.168.XXX.222:8848" \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e JVM_XMN=256m \
--network host \
--restart=always \
-p 8846:8848 \
nacos/nacos-server
docker run -itd \
--name nacos-server-02 \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.XXX.222 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_APPLICATION_PORT=8847 \
-e NACOS_SERVERS="192.168.XXX.222:8846 192.168.XXX.222:8847 192.168.XXX.222:8848" \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e JVM_XMN=256m \
--network host \
--restart=always \
-p 8847:8848 \
nacos/nacos-server
docker run -itd \
--name nacos-server-03 \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.XXX.222 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=Peng2022 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS="192.168.XXX.222:8846 192.168.XXX.222:8847 192.168.XXX.222:8848" \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e JVM_XMN=256m \
--network host \
--restart=always \
-p 8848:8848 \
nacos/nacos-server
nginx配置負載均衡
stream {
#用戶端gRPC請求服務端端口,用于用戶端向服務端發起連接配接和請求
upstream nacosGrpc {
server 10.19.11.215:9848;
server 10.19.11.217:9848;
server 10.19.23.114:9848;
}
server {
#nginx暴露的grpc端口
listen 9848;
proxy_pass nacosGrpc;
}
}
events {
worker_connections 1024;
}
http {
#nacos UI 8848端口
upstream nacosClu {
server 10.19.11.215:8848;
server 10.19.11.217:8848;
server 10.19.23.114:8848;
}
server {
listen 8848;
# 需要通路nacos UI的Ip
server_name 127.0.0.1;
location / {
proxy_pass http://nacosClu;
}
}
}