前言:最近在做毕设项目,由于是基于微服务的,所以逃不开部署nacos这个服务注册及配置中心,为了方便以后的项目部署,顺便就把nacos集群做了。

一、准备阶段

  1. 首先要在云服务器或者虚拟机下安装docker(我就不过多阐述了,网上都有)

  2. docker拉取nacos以及nginx反向代理服务器镜像

    #拉取nacos:1.4.1,我用的是这个版本
    docker pull nacos/nacos-server:1.4.1
    #拉取nginx
    docker pull nginx
    
  3. 查看镜像

    docker images
    

    在这里插入图片描述

  4. 做nacos持久化

    下载nacos-server-1.4.1.zip

    在nacos/conf目录下找到nacos-mysql.sql文件

    方法一:打开sql文件,在IDEA或是Navicat中连接数据库,新建数据库nacos,use nacos,复制粘贴sql文件中的sql语句

    方法二:将sql文件上传到云服务器上,在此文件夹下顺序执行命令

    mysql -uroot -p
    create database nacos;
    use nacos;
    source nacos-mysql.sql
    

二、nacos启动,依次启动

  1. nacos1

    docker run -d \
    # 是否支持hostname
    -e PREFER_HOST_MODE=hostname \
    # cluster模式/standalone模式
    -e MODE=cluster \
    # nacos 端口号
    -e NACOS_APPLICATION_PORT=8845 \
    # nacos cluster地址
    -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \
    # mysql 数据库
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    # mysql 主节点host
    -e MYSQL_SERVICE_HOST=IP地址 \
    # mysql 主节点端口
    -e MYSQL_SERVICE_PORT=3301 \
    # 数据库用户名
    -e MYSQL_SERVICE_USER=root \
    # 数据库密码
    -e MYSQL_SERVICE_PASSWORD=123456 \
    # mysql 主节点数据库
    -e MYSQL_SERVICE_DB_NAME=nacos \
    # 数据库数量
    -e MYSQL_DATABASE_NUM=1 \
    # 设置 JVM 最大堆内存大小
    -e JVM_XMS=256m \
    # 设置 JVM 最初是堆内存大小
    -e JVM_XMX=256m \
    # 设置 JVM 堆内新生代的内存大小
    -e JVM_XMN=128m \
    -e JVM_MS=32m \
    -e JVM_MMS=80m \
    # 多网卡下的自定义nacos服务器IP
    -e NACOS_SERVER_IP=IP地址 \
    -p 8845:8845 \
    --name nacos1 \
    nacos/nacos-server:1.4.1
    
  2. nacos2

    docker run -d \
    -e PREFER_HOST_MODE=hostname \
    -e MODE=cluster \
    -e NACOS_APPLICATION_PORT=8846 \
    -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=IP地址 \
    -e MYSQL_SERVICE_PORT=3301 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=123456 \
    -e MYSQL_SERVICE_DB_NAME=nacos \
    -e MYSQL_DATABASE_NUM=1 \
    -e JVM_XMS=256m \
    -e JVM_XMX=256m \
    -e JVM_XMN=128m \
    -e JVM_MS=32m \
    -e JVM_MMS=80m \
    -e NACOS_SERVER_IP=IP地址 \
    -p 8846:8846 \
    --name nacos2 \
    nacos/nacos-server:1.4.1
    
  3. nacos3

    docker run -d \
    -e PREFER_HOST_MODE=hostname \
    -e MODE=cluster \
    -e NACOS_APPLICATION_PORT=8847 \
    -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=IP地址 \
    -e MYSQL_SERVICE_PORT=3301 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=123456 \
    -e MYSQL_SERVICE_DB_NAME=nacos \
    -e NACOS_SERVER_IP=IP地址 \
    -e MYSQL_DATABASE_NUM=1 \
    -e JVM_XMS=256m \
    -e JVM_XMX=256m \
    -e JVM_XMN=128m \
    -e JVM_MS=32m \
    -e JVM_MMS=80m \
    -p 8847:8847 \
    --name nacos3 \
    nacos/nacos-server:1.4.1
    
  4. 查看运行的容器

    docker ps
    

    在这里插入图片描述

  5. 浏览器访问

    在这里插入图片描述

    在这里插入图片描述

三、nginx配置及启动

  1. nginx的default.conf配置文件,我在服务器的root目录下

    获取default.conf

    #运行一个nginx,获取default.conf,之后删除容器(最后有基本命令)
    docker run -d --name nginxTest nginx
    docker cp nginxTest:/etc/nginx/conf.d/default.conf default.conf
    docker stop nginxTest
    docker rm nginxTest
    

    原本的default

    server {
        listen       80;
        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;
        }
    
        #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;
        #}
    }
    

    修改后

    #新增
    upstream cluster {
            server IP地址:8845;
            server IP地址:8846;
            server IP地址:8847;
    }
    
    server {
        listen       80;
        #listen  [::]:80;#改正
        server_name  localhost;
    
        #access_log  /var/log/nginx/host.access.log  main;
        #添加
        location /nacos {
            proxy_pass http://cluster;
        }
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        #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;
     #}
    }
    
  2. 运行nginx

    docker run -p 80:80 --name my-nginx -v /root/default.conf:/etc/nginx/conf.d/default.conf --privileged=true -d nginx
    docker ps
    

    在这里插入图片描述

  3. 浏览器访问

    在这里插入图片描述

    在这里插入图片描述

docker基本的一些命令

  1. 查找镜像

    docker search 镜像名
    
  2. 拉取镜像

    docker pull 镜像名
    
  3. 查看镜像

    docker images
    
  4. 删除镜像

    docker rmi 镜像id
    
  5. 运行容器

    docker run 
    -d:后台运行
    -p:端口映射
    -e:自定义变量
    --name:容器名称
    
  6. 修改容器为自启动

    docker update 容器id/容器名 --restart=always
    
  7. 进入容器

    docker exec -it 容器id/容器名 /bin/bash
    
  8. 查看所有容器

    docker ps -a
    
  9. 查看运行中的容器

    docker ps
    
  10. 停止容器

    docker stop 容器id/容器名
    
  11. 删除容器

    docker rm 容器id/容器名
    
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐