使用Docker搭建Nacos集群部署微服务

使用Docker搭建Nacos集群部署微服务

搭建集群

集群部署架构图

使用Docker搭建Nacos集群部署微服务_第1张图片

Docker拉取Nacos镜像
docker pull nacos/nacos-server

使用Docker搭建Nacos集群部署微服务_第2张图片

导入镜像数据库

新建数据库

使用Docker搭建Nacos集群部署微服务_第3张图片

运行SQL文件

使用Docker搭建Nacos集群部署微服务_第4张图片

使用Docker搭建Nacos集群部署微服务_第5张图片

创建用户

使用Docker搭建Nacos集群部署微服务_第6张图片

配置角色权限

使用Docker搭建Nacos集群部署微服务_第7张图片

创建自定义网络

Docker集群部署Nacos时要注意,创建的Nacos容器填写的ip都是外部ip,但是创建的网段却是docker内部的网段,因此 我们需要只能在同一网段的ip

docker network ls
docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 mynetwork
docker network inspect mynetwork

使用Docker搭建Nacos集群部署微服务_第8张图片

使用Docker搭建Nacos集群部署微服务_第9张图片

创建Nacos容器集群

my-nacos1

docker run -d \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_IP=172.19.0.2 \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS="172.19.0.2:8848 172.19.0.3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=服务器公网ip \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=13851176590++ \
-e MYSQL_SERVICE_DB_NAME=nacos \
-p 8848:8848 \
--network=mynetwork \
--name my-nacos1 \
--ip 172.19.0.2 \
nacos/nacos-server

my-nacos2

docker run -d \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_IP=172.19.0.3 \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS="172.19.0.2:8848 172.19.0.3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=服务器公网ip \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=13851176590++ \
-e MYSQL_SERVICE_DB_NAME=nacos \
-p 8849:8848 \
--network=mynetwork \
--name my-nacos2 \
--ip 172.19.0.3 \
nacos/nacos-server

image-20220731222759572

访问my-nacos1地址:http://{ip}:8848/nacos/index.html

访问my-nacos2地址:http://{ip}:8849/nacos/index.html

输入默认的账户密码nacos登录成功则说明集群部署成功

使用Docker搭建Nacos集群部署微服务_第10张图片

使用Docker搭建Nacos集群部署微服务_第11张图片

使用Nginx反向代理Nacos集群

拉取nginx镜像并创建nginx容器

docker pull nginx
docker run --name nginx -p 8080:80 -d nginx

image-20220627213342836

将容器中的nginx配置文件拷贝到宿主机/usr/local/nginx/conf目录下

mkdir -p /usr/local/nginx/conf/nginx.conf
docker cp 53cf4d545507:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf

停止并删除之前的nginx容器

docker stop 
docker rm 

修改nginx.conf配置

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

    include /etc/nginx/conf.d/*.conf;

    upstream cluster{
        server 172.19.0.2:8848;
        server 172.19.0.3:8848;
    }

    server {
        listen 8080;
        server_name _;

        location / {
            proxy_pass http://cluster;
        }
    }
}

数据挂载运行docker容器

docker run --name nginx --network=mynetwork -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8080:8080 -d nginx

image-20220731225828171

访问:http://{ip}:8080/nacos/

使用Docker搭建Nacos集群部署微服务_第12张图片

修改配置文件

  cloud:
    nacos:
      discovery:
        server-addr:{ip}:8080

运行服务

使用Docker搭建Nacos集群部署微服务_第13张图片

使用Docker搭建Nacos集群部署微服务_第14张图片
到此,本地服务已经通过Nginx反向代理注册到远端服务器的Nacos的Docker容器集群中,真是非常好用。

参考文档:

Docker:docker部署Nacos(单例与集群)并配置自定义Mysql:https://www.cnblogs.com/nhdlb/p/16139178.html
使用Docker完成Nacos集群部署:https://juejin.cn/post/6861996608247201806#
SpringBoot整合Nacos集群报错,以及解决方案:https://www.jianshu.com/p/a2bde820d8b5

你可能感兴趣的:(Spring,Cloud,docker,微服务,spring,cloud)