前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Docker搭建Nacos集群

基于Docker搭建Nacos集群

作者头像
一行Java
发布2022-04-06 15:22:08
2.8K1
发布2022-04-06 15:22:08
举报
文章被收录于专栏:用户9257747的专栏
准备机器3台
  • 192.168.1.160
  • 192.168.1.161
  • 192.168.1.162
docker安装

CentOS 7下安装Docker及基础操作

安装
mysql
  • 基于docker安装mysql
代码语言:javascript
复制
docker run \
-p 3306:3306 \
--name nacos-mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
  • 初始化sql sql脚本入口:https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql
Nacos
  • 创建Nacos的工作目录
代码语言:javascript
复制
// 每个节点都创建
mkdir -p /usr/local/docker/nacos-server
mkdir -p /usr/local/docker/nacos-server/env
mkdir -p /usr/local/docker/nacos-server/logs
mkdir -p /usr/local/docker/nacos-server/init.d
  • 调整custom.properties
代码语言:javascript
复制
vim /usr/local/docker/nacos-server/init.d/custom.properties

// 添加以下配置
#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**
#management.metrics.export.elastic.host=http://localhost:9200
# metrics for prometheus
management.endpoints.web.exposure.include=*

# metrics for elastic search
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200

# metrics for influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true
  • 调整nacos-hostname.env
代码语言:javascript
复制
vim /usr/local/docker/nacos-server/env/nacos-hostname.env

#nacos dev env
# 首选主机模式
PREFER_HOST_MODE=hostname
# 当前主机的IP
NACOS_SERVER_IP=192.168.1.160
# 集群的各个节点
NACOS_SERVERS=192.168.1.160:8848 192.168.1.161:8848 192.168.1.162:8848
# 数据库的配置
MYSQL_SERVICE_HOST=192.168.1.100
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=root

# 从节点 这里就使用单节点测试,因此就不配置从节点
#MYSQL_SLAVE_SERVICE_HOST=xxx
#MYSQL_SLAVE_SERVICE_PORT=3306

# JVM参数 默认是2G 如果使用虚拟机,内存没有2G,就需要调整这里的参数,否则将无法启动
JVM_XMS=256m
JVM_XMX=256m
JVM_XMN=256m
  • 将配置文件拷贝到其他两台机器
代码语言:javascript
复制
scp -r /usr/local/docker/nacos-server/env/nacos-hostname.env  root@192.168.1.:/usr/local/docker/nacos-server/env/nacos-hostname.env
scp -r /usr/local/docker/nacos-server/env/nacos-hostname.env  root@192.168.1.:/usr/local/docker/nacos-server/env/nacos-hostname.env

scp -r /usr/local/docker/nacos-server/init.d/custom.properties  root@192.168.1.:/usr/local/docker/nacos-server/init.d/custom.properties
scp -r /usr/local/docker/nacos-server/init.d/custom.properties  root@192.168.1.:/usr/local/docker/nacos-server/init.d/custom.properties
  • docker启动(3个节点)
代码语言:javascript
复制
docker run \
-p : \
--restart=always \
--name nacos-node \
--env-file=/usr/local/docker/nacos-server/env/nacos-hostname.env \
-v /usr/local/docker/nacos-server/logs:/home/nacos/logs \
-v /usr/local/docker/nacos-server/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-d nacos/nacos-server
  • 异常查看
代码语言:javascript
复制
// 如果出现异常,可以在/usr/local/docker/nacos-server/logs目录下查看
tail -f /usr/local/docker/nacos-server/logs/nacos.log

测试

访问任意节点的8848端口; 如: 192.168.1.160:8848/nacos 默认用户名和密码为: nacos/nacos ;登录之后查看节点即可看到如下效果.

当停用任何一个节点,都不会影响正常的使用

Nginx代理Nacos集群
  • 创建nacos.conf;添加以下配置
代码语言:javascript
复制
upstream nacos_server {
   server 192.168.1.160:8848;
   server 192.168.1.161:8848;
   server 192.168.1.162:8848;
}

server {
    listen ;
    listen  ssl;
    #填写绑定证书的域名
    server_name nacos.你的域名;
    #ssl on;
    ssl_certificate /你的证书路径.crt;
    ssl_certificate_key /你的密钥路径.key;
    ssl_session_timeout 5m;
    #按照这个协议配置
    ssl_protocols TLSv1 TLSv1. TLSv1.;
    #按照这个套件配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    charset utf-;

    resolver 223.5.5.5 223.6.6.6 1.2.4.8 114.114.114.114 valid=3600s;

    location / {
        proxy_read_timeout ;
        proxy_http_version .;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;

        proxy_pass http://nacos_server;
    }
}
  • 重启服务
代码语言:javascript
复制
sbin/nginx -t
sbin/nginx -s reload
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一行Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备机器3台
  • docker安装
  • 安装
    • mysql
      • Nacos
      • 测试
      • Nginx代理Nacos集群
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档