(1) 集群架构
Nginx --------- 1个Nginx反向代理 ---------- 提供服务
Nacos Nacos Nacos -------- 3个Nacos注册中心
MySQL -------- 1个MySQL ----------------- 作存储
(2) 将Nacos默认自带的嵌入式数据库derby切换为MySQL5.7.37数据库
# 在当前版本Nacos目录\nacos\conf目录下找到如下sql脚本
mysql-schema.sql 或者 nacos-mysql.sql
# 到MySQL数据库中执行找到的脚本即可
# 利用脚本创建数据库的名字为 nacos_config,如果没有可自行创建数据库
(3) 在三台服务器上分别执行以下命令
### MySQL方式启动[实际上增加配置为修改Nacos容器内部的application.properties配置文件,这是Docker容器技术的特点] 2.x版本nacos多了两个端口
# Nacos 1
docker run -e JAVA_OPTS="-Xms256m -Xmx256m" \
-e MODE=cluster \
-e PREFER_HOST_MODE=hostname \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_AUTH_PASSWORD=设置你的nacos密码 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=你的1号机器IP \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=你设置的mysql密码 \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--privileged=true \
-v /docker/nacos/conf:/home/nacos/conf \
-v /docker/nacos/logs:/home/nacos/logs \
--restart=always \
--name nacos-node-1 \
-d nacos/nacos-server:v2.1.2
# Nacos 2
docker run -e JAVA_OPTS="-Xms256m -Xmx256m" \
-e MODE=cluster \
-e PREFER_HOST_MODE=hostname \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_AUTH_PASSWORD=设置你的nacos密码 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=你的2号机器IP \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=你设置的mysql密码 \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--privileged=true \
-v /docker/nacos/conf:/home/nacos/conf \
-v /docker/nacos/logs:/home/nacos/logs \
--restart=always \
--name nacos-node-2 \
-d nacos/nacos-server:v2.1.2
# Nacos 3
docker run -e JAVA_OPTS="-Xms256m -Xmx256m" \
-e MODE=cluster \
-e PREFER_HOST_MODE=hostname \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_AUTH_PASSWORD=设置你的nacos密码 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=你的3号机器IP \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=你设置的mysql密码 \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--privileged=true \
-v /docker/nacos/conf:/home/nacos/conf \
-v /docker/nacos/logs:/home/nacos/logs \
--restart=always \
--name nacos-node-3 \
-d nacos/nacos-server:v2.1.2
(4) 配置Nginx一台
【配置 详见文章 Docker——(八)Nginx 1.22安装篇 】
# 启动Nginx
docker run -e JAVA_OPTS="-Xms256m -Xmx256m" \
-e TZ=Asia/Shanghai \
-p 80:80 \
-p 6868:6868 \
--privileged=true \
-v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/logs:/var/log/nginx \
-v /docker/nginx/html:/usr/share/nginx/html \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
--restart=always \
--name nginx-nacos \
-d nginx:1.22
# 修改/docker/nginx/conf.d/default.conf配置文件,如下所示:
upstream cluster {
server 你的1号机器IP:8848;
server 你的2号机器IP:8848;
server 你的3号机器IP:8848;
}
server {
listen 6868;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
proxy_pass http://cluster;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
(5) 通过Nginx访问Nacos集群
# 访问如下地址
Nginx所在主机IP:6868