Bootstrap

Docker——(七)Nacos v2.1.2集群搭建篇

(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
;