首页 > 其他分享 >Nacos集群使用docker构建和部署

Nacos集群使用docker构建和部署

时间:2024-02-26 21:23:02浏览次数:31  
标签:10.2 app Nacos nacos 集群 asset conf docker

使用Dockers部署Nacos集群

前置条件:

  • 已经安装docker

  • 已经有Mysql服务保存Nacos配置数据

  • Docker Swarm集群已经初始化

    [root@swarm nacos]# docker node ls
    ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
    lbrj80f4queyxowvqgoxq4e21 *   swarm.manager14   Ready     Active         Leader           24.0.6
    dglfv8gqgxqebfrjvfyqv5lju     swarm.work15      Ready     Active                          24.0.6
    ycbtvvg2vh82bjghkeqjl5rvz     swarm.work16      Ready     Active                          24.0.6
    k7k9dg4lx12g7vz1d9f59y2up     swarm.work17      Ready     Active                          24.0.6
    
  • Nacos稳定版本和Linux版本的Jdk稳定版本

  • 私有镜像仓库可以正常使用(可选)

构建私有镜像

准备

创建目录

[root@swarm nacos]# pwd
/app/nacos
## 目录层级和目录中文件如下
/app/nacos/
/app/nacos/nacos.Dockerfile 
/app/nacos/nacos.yml

/app/nacos/asset/
/app/nacos/asset/nacos-server-2.3.0.tar.gz
/app/nacos/asset/jdk-8u144-linux-x64.tar.gz 

/app/nacos/asset/bin/
/app/nacos/asset/bin/docker-startup.sh

/app/nacos/asset/conf/
/app/nacos/asset/conf/application.properties
/app/nacos/asset/conf/cluster.conf
/app/nacos/asset/conf/console-guide.conf
/app/nacos/asset/conf/nacos-logback.xml

tar.gz包

从官方网站下载 jdk-8u144-linux-x64.tar.gz nacos-server-2.3.0.tar.gz

docker-startup.sh

获取方式:解压nacos-server-*.tar.gz包后,复制里面的 bin/startup.sh ,修改最后的启动脚本,将后台启动修改为前台启动,

具体修改: nohup 修改为 exec ,最后的 & 符号去掉。

#!/bin/bash
## 此处省略内容
******************
******************

if [[ "$JAVA_OPT_EXT_FIX" == "" ]]; then
 exec  "$JAVA" ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1
else
 exec  "$JAVA" "$JAVA_OPT_EXT_FIX" ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1
fi
echo "nacos is starting. you can check the ${BASE_DIR}/logs/start.out"

application.properties

conf目录中的所有配置文件都是从nacos-server-*.tar.gz包里面复制来,只是按需求做了一定修改

## 动态从环境变量中获取配置来替换
server.port=${NACOS_APPLICATION_PORT:8848}
## 直接写死配置
db.num=1
db.url.0=jdbc:mysql://10.2.1.14:3336/nacos_mysql?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

修改集群配置文件

cat asset/conf/cluster.conf
#it is ip
#example
10.2.1.15:8848
10.2.1.16:8848
10.2.1.17:8848

nacos.Dockerfile

FROM centos:centos7
# 构建一个自定义的nacos镜像,需要的jdk和nacos-server自行下载

WORKDIR /home
# identity、gzip、bzip2 或 xz 这些文件会自动解压
ADD ../asset/jdk-8u144-linux-x64.tar.gz      jdk
ADD ../asset/nacos-server-2.3.0.tar.gz       .
#  nacos-server-2.3.0.tar.gz 解压后
#  直接从解压后的配置中复制后修改
ADD ../asset/conf/*                          nacos/conf
#   复制 startup.sh 文件为 docker-startup.sh 修改最后的启动命令为 exec 方式,让nacos进程成为容器内的 pid=1 的进程 。
ADD ../asset/bin/*                           nacos/bin

ENV NACOS_HOME /home/nacos

ENV JAVA_HOME /home/jdk/jdk1.8.0_144
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH $PATH:${JAVA_HOME}/bin

# 这里使用环境变量来覆盖配置文件里面的默认配置
ENV NACOS_APPLICATION_PORT 8848

EXPOSE 8848
WORKDIR $NACOS_HOME
ENTRYPOINT ["bin/docker-startup.sh"]
# CMD [ "/bin/startup.sh" ]

nacos.yml

version: '3.8'
services:
  nacos:
    image: 10.2.1.14:8082/nacos:2.3.0
    ports:
    ## 端口相关文件  https://nacos.io/zh-cn/docs/v2/guide/admin/cluster-mode-quick-start.html  
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
      - "7848:7848"
    volumes:
      - nacos_volume:/home/nacos
    networks:
      - swarm_net
    deploy:
      replicas: 3
networks:
  swarm_net:
    # external: true 时 要手动创建这个网络  docker network create -d overlay swarm_net
    external: true
volumes:
  nacos_volume:

构建

# 在 swarm 集群主节点上执行以下命令
# 创建网络,如果没有的话
docker network create -d overlay swarm_net
# 进入目录
cd  /app/nacos/
# 构建镜像
docker build -t 10.2.1.14:8082/nacos:2.3.0 -f nacos.Dockerfile .
# 推送到私有仓库
docker login 10.2.1.14:8082 -u admin -p pass
docker push 10.2.1.14:8082/nacos:2.3.0

启动

# 通过docker stack 发布启动 
docker stack deploy -c nacos.yml  nacos
# 查看服务 
docker service ls 
# 查看日志 
docker service logs qv2msyp8z

问题

  • 启动过程报错

    1. 检查数据库配置是否正确,并且正常连接
  • 无法拉取镜像

    1. 检查docker的配置文件是否正确 /etc/docker/daemon.json

      {"default-address-pools":[{"base":"10.30.0.0/16","size":24}],"insecure-registries":["10.2.1.14:8082","10.2.1.14:5000"],"registry-mirrors":["http://10.2.1.14:5000"]}
      
    2. 检查私有仓库的镜像是否是最新

  • 启动后无法访问

  • 集群节点IP注册不对

标签:10.2,app,Nacos,nacos,集群,asset,conf,docker
From: https://www.cnblogs.com/xysgo/p/18035602

相关文章

  • centos7安装hadoop(集群模式)
    目录节点规划安装前准备准备jdk和hadoop的安装文件分别修改三台主机名字建立hadoop账号添加账号并且指定密码添加hadoop账号到sudo组,vi/etc/soduers切换到hadoop账号配置三台主机的证书登录解压jdk和hadoop配置环境变量复制jdk和配置文件到别的节点使环境变量生效编辑文件修改修......
  • Docker 容器中 域名解析失败
     Docker容器中域名解析失败环境:Centos8 docker 离线安装:https://www.cnblogs.com/1285026182YUAN/p/18007461在安装完docker与 docker-compose 后,在容器是访问主机域名失败,但访问主机IP可以。 解决方案:1.通过docker-compose配置使用docker-compose.yml进行编......
  • 云原生周刊:Docker 推出 Docker Build Cloud
    开源项目推荐Kube-VipKube-Vip旨在为Kubernetes集群提供高可用性和负载均衡功能。它提供了一个可插拔的VIP(虚拟IP)管理器,可以为集群中的服务分配一个虚拟IP地址,并自动将流量路由到正确的节点。该项目提供了多种配置选项,可以根据需要选择适合的负载均衡算法和IP模式。Kub......
  • docker部署Prometheus
     1、安装运行Prometheus下面介绍如何使用Prometheus、Grafana、CAdvisor、node-exporter、mysqld-exporter对本机服务器性能、Docker容器、MySQL数据库进行监控。监控本机,只需要一个exporternode_exporter–用于机器系统数据收集mysqld-exporter用于MySQL数据库数据收集......
  • centos8 安装docker
    说明:因为centos8版本得原因,很多网上docker得安装,已经不适用于现在得环境,会出现各种错误,所以就安装问题给个详细得成功经验1、遇到这个问题:centos8安装docker遇到yuminstall-yyum-utils报错,Nomatchforargument:、Unabletofindamatch:解决方法:这个问题是语言的环境问题......
  • 从零开始写 Docker(二)---优化:使用匿名管道传递参数
    本文为从零开始写Docker系列第二篇,主要在mydockerrun命令基础上优化参数传递方式,改为使用runC同款的匿名管道传递参数。如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。扫描下方二维码或搜索公众号【探索云原生】即可订阅完整代......
  • [Docker] 基于CENTOS7的Docker版本升级
    0序环境信息OS:CENTOS7.9.2009DockerVersion:18.06.3-ce=>25.0.3-1.el71升级过程Step1卸载低版本dockerStep1.1检查docker版本#查看版本(方法1)dockerversion#查看版本(方法2)rpm-qa|grepdocker#查看版本(方法3)yumlistinstalled|g......
  • 在Docker中设置Redis的密码
    目录1,介绍2,实现“DockerRedis设置密码”的整体流程3,具体实现步骤4,结论1,介绍Docker是一个开源的应用容器引擎,可以自动化部署、扩展应用程序。它可以帮助开发人员将应用程序及其依赖项打包到一个可移植的容器中,然后在任何环境中运行。Redis是一个开源的内存数据结构存储系统,它可以......
  • CentOS7安装Docker
    1.删除原有的Docker(如果有)sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\......
  • Docker 容器的备份和迁移
    Docker的镜像和容器有两种方式导出DockerSave镜像方法,会保存该镜像的所有历史记录,包括数据1、创建快照使用dockercommit命令来创建快照,生成images镜像。dockercommit-pcontainer_namecontainer-backup获取IMAGEIDdockerimages2、备份快照镜像导出镜像,后缀为tar......