首页 > 其他分享 >docker部署nacos集群

docker部署nacos集群

时间:2023-05-28 14:00:25浏览次数:40  
标签:SERVICE nacos 192.168 8848 nginx 集群 MYSQL docker

1. 环境准备

准备4台服务器,一台安装nginx和mysql 另三台做集群使用

IP 服务 操作系统
192.168.3.215 Nginx/Mysql CentOS 7.9
192.168.3.216 Nacos-1 CentOS 7.9
192.168.3.217 Nacos-2 CentOS 7.9
192.168.3.218 Nacos-3 CentOS 7.9

 

 

 

 

 

mysql选用5.7 需要提前安装,并且部署nacos数据库脚本,nacos脚本可以看我之前的博客

 

2. 部署nacos集群

2.1 拉去nacos镜像(选用nacos2.0.2):三台服务器都需要执行

docker pull nacos/nacos-server:2.0.2

2.2 创建nacos日志路径 :三台服务器都需要执行

mkdir -p /usr/local/software/nacos/logs

2.3 执行docker命令:三台服务器分别执行

2.3.1 nacos-1(192.168.3.216) docker命令

docker run -d \
-p 8848:8848 \
-p 9848:9848 \
-e NACOS_AUTH_ENABLE=true \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e JVM_XMN=128m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="192.168.3.216:8848 192.168.3.217:8848 192.168.3.218:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.3.215 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_SERVER_IP=192.168.3.216 \
-v /usr/local/software/nacos/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--name nacos1 \
nacos/nacos-server:2.0.2

2.3.2 nacos-2(192.168.3.217) docker命令

docker run -d \
-p 8848:8848 \
-p 9848:9848 \
-e NACOS_AUTH_ENABLE=true \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e JVM_XMN=128m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="192.168.3.216:8848 192.168.3.217:8848 192.168.3.218:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.3.215 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_SERVER_IP=192.168.3.217 \
-v /usr/local/software/nacos/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--name nacos2 \
nacos/nacos-server:2.0.2

2.3.3 nacos-3(192.168.3.218) docker命令

docker run -d \
-p 8848:8848 \
-p 9848:9848 \
-e NACOS_AUTH_ENABLE=true \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e JVM_XMN=128m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="192.168.3.216:8848 192.168.3.217:8848 192.168.3.218:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.3.215 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_SERVER_IP=192.168.3.218 \
-v /usr/local/software/nacos/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--name nacos3 \
nacos/nacos-server:2.0.2

参数说明:

参数 说明
-d 支持后台运行模式
-p 8848:8848 把容器内的端口8848挂载到宿主机8848上面
-p 9848:9848  把容器内的端口9848挂载到宿主机9848上面
-e NACOS_AUTH_ENABLE=true 开启 Nacos server 的注册鉴权
-e JVM_XMS=128m 为jvm启动时分配的内存
-e JVM_XMX=128m 为jvm运行过程中分配的最大内存
-e JVM_XMN=128m 为jvm设置年轻代的大小
-e PREFER_HOST_MODE=ip 是否支持hostname,可选项:hostname/ip,默认值ip
-e MODE=cluster 集群模式或者单独模式, 可选项:cluster/standalone,默认值cluster
-e NACOS_SERVER_PORT=8848 nacos服务端口
-e NACOS_SERVERS="192.168.3.216:8848 192.168.3.217:8848 192.168.3.218:8848" nacos集群地址
-e SPRING_DATASOURCE_PLATFORM=mysql 以mysql为nacos做数据持久化
-e MYSQL_SERVICE_HOST=192.168.3.215 mysql地址
-e MYSQL_SERVICE_PORT=3306-e mysql访问地址
-e MYSQL_SERVICE_USER=root mysql账号
-e MYSQL_SERVICE_PASSWORD=root mysql密码
-e MYSQL_SERVICE_DB_NAME=nacos_config mysql使用库
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' mysql常用连接参数
-e NACOS_SERVER_IP=192.168.3.218 nacos单机注册地址
-v /usr/local/software/nacos/logs:/home/nacos/logs 挂在nacos运行日志
--privileged=true 使用root权限运行容器
--restart=always 容器自动运行
--name nacos3 容器名字
nacos/nacos-server:2.0.2 使用docker镜像

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.4 访问页面查看是否运行成功:IP:8848/nacos

 登录账号:nacos/nacos(正式运行的时候别忘了改密码)

 

2.5 查看容器运行状态

集群管理 > 节点列表 查看集群运行状态

 

3. 安装nginx 做nacos负载均衡(192.168.3.215)

3.1 拉去nginx镜像

docker pull nginx:latest

3.2 创建nginx配置文件

mkdir -p /usr/local/software/nginx/conf

touch /usr/local/software/nginx/conf/nginx.conf

3.3 nginx配置文件详情

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


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;

    upstream nacos8848 {
        server 192.168.3.216:8848;
        server 192.168.3.217:8848;
        server 192.168.3.218:8848;
    }

    upstream nacos9848 {
        server 192.168.3.216:9848;
        server 192.168.3.217:9848;
        server 192.168.3.218:9848;
    }

    server {
        listen 8848;
        location / {
            proxy_pass http://nacos8848;
        }
    }

    server {
        listen 9848;
        location / {
            proxy_pass http://nacos9848;
        }
    }
    

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

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

3.4 运行nginx命令

docker run -d \
-p 8848:8848 \
-p 9848:9848 \
--privileged=true \
--restart=always \
-v /usr/local/software/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
--name nacos-nginx \
nginx:latest

3.5 访问地址,查看nginx是否部署成功

http://192.168.3.215:8848/nacos

 

 nacos 集群部署成功

 

4. 捐赠支持

你可以请作者喝杯咖啡表示鼓励

标签:SERVICE,nacos,192.168,8848,nginx,集群,MYSQL,docker
From: https://www.cnblogs.com/sunxun001/p/17438179.html

相关文章

  • 使用 Nacos 的配置功能和自动更新
    Nacos不但可以作为注册中心,同时也可以作为配置中心,方便我们对SpringCloud中的各个SpringBoot微服务的配置进行统一的管理维护。尤其是当微服务数量较多,并且在不同的服务器上进行部署时,使用配置中心进行统一管理维护的优势就更加明显。本篇博客仍然使用之前搭建的Nacos集群......
  • docker存储
    1、概念1.1、容器本地存储与Docke存储驱动容器本地存储:每个容器都被自动分配了内部存储,即容器本地存储。采用的是联合文件系统。通过存储驱动进行管理。容器本地存储空间:分层结构构成,由一个可写容器层和若干只读的镜像层组成。联合文件系统:Docker的一种底层技术,由存储驱动(StorageD......
  • 本地spark通过spark集群连接hive
    最近在学习spark,上周将spark集群搭建起来了,今天在idea中创建了一个测试程序读取hive库中的数据,程序很简单,但是踩到一些坑,卡了四五个小时,做个记录。搭建Spark集群比较简单:1、安装scala,scala版本要和spark使用的scala版本一致(因为这个问题卡了五六个小时)2、下载、解压,配置环境变......
  • MyCat19——搭建MyCat高可用集群
    1HAProxy单点故障在上一篇文章里,我们在一台机器上安装了HAProxy,实现了MyCat服务的集群。但是这样的架构中,只有一个HAProxy服务,一旦这个服务发生了宕机,集群将不可用,这就是所谓的单点故障。那么怎么进一步提高HAProxy的高可用,从而解决单点故障的问题呢?通过Keepalived可以实现。2解......
  • Docker笔记五之Docker系统变量
    本文首发于公众号:Hunter后端原文链接:Docker笔记五之Docker系统变量当我们运行一个容器的时候是可以向容器内部指定某些变量值的,比如上一篇MySQL笔记中的参数是通过容器运行的时候-e来指定的。往容器里指定变量,有如下几种方法:Dockerfile中定义运行容器的时候指定变量参......
  • docker安装mysql
    转载请注明出处:1.从DockerHub下载MySQL镜像:dockerpullmysql2.运行MySQL容器,并将主机的3306端口映射到容器的3306端口:dockerrun-p3306:3306--namemysql-eMYSQL_ROOT_PASSWORD=your_password-dmysql其中,--namemysql指定容器的名称为mysql,-p3306......
  • docker的CMD和ENTRYPOINT
    在Dockerfile中,`CMD`和`ENTRYPOINT`都用于定义容器启动时要执行的命令或程序,但它们有一些关键的区别。1.`CMD`的作用:-`CMD`指令用于设置容器启动时的默认命令或程序。-`CMD`可以在Dockerfile中只出现一次,如果有多个`CMD`指令,只有最后一个指令会生效。-`......
  • dockerfile里的EXPOSE
    在Dockerfile中,`EXPOSE`指令用于声明容器运行时将要监听的网络端口。`EXPOSE`并不会实际打开容器的端口,它只是向用户和开发人员提供了容器内部服务的网络接口信息。通过在Dockerfile中使用`EXPOSE`,你可以向其他人传达容器暴露的网络服务和端口,以便更好地理解容器的使用和......
  • MySQL 8.0 主从集群部署
    1、环境服务器名称IP地址备注db-161-13110.32.161.131主db-161-13210.32.161.132从2、MySQL安装参考:https://www.cnblogs.com/a120608yby/p/17164694.html3、修改配置并重启服务#主节点主要配置#vim/etc/my.cnf...server-id=131log_bin=mys......
  • kubeadm极速部署Kubernetes,教你如何轻松处理容器运行瓶颈(Docker丨容器化技术丨DevOps
    kubeadm极速部署Kubernetes1.25版本集群前言随着Kubernetes的普及,快速部署和管理Kubernetes集群已成为容器领域的关键技能之一。本文将介绍使用kubeadm工具部署Kubernetes集群的方法,为您提供一个简单且高效的解决方案。不再需要自行构建集群,通过使用本文的方法,您将能够在最短的时......