linux环境搭建nacos集群详解

2023-11-08

一、集群部署说明

官网集群部署:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

集群架构如下:

在这里插入图片描述

二、环境准备

搭建集群首先要具备JDK环境,其次需要,1个Nginx+3个nacos注册中心+1个mysql,集群按正常来说应该要具备三台服务器,我这里设备有限,就在一台机器上来搭建集群了!Nginx主要用他作为负载均衡。如果您也是一台Linux机器,Linux内存最少要4个G左右,不然可能会内存爆满,然后会导致Nacos启动不成功等问题!

  1. jdk环境:https://blog.csdn.net/weixin_43888891/article/details/126810947?spm=1001.2014.3001.5501
  2. 基于docker安装mysql:https://blog.csdn.net/weixin_43888891/article/details/113577006
  3. 创建Nacos数据库,并执行脚本(Nacos数据持久化到mysql),脚本文件:https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql
  4. 安装Nginx:https://blog.csdn.net/weixin_43888891/article/details/122831636
  5. Nacos下载地址:https://github.com/alibaba/nacos/releases

在这里插入图片描述
6. 查看nginx是否启动成功:ps -ef | grep nginx

在这里插入图片描述

三、搭建Nacos集群

我这里用的是一台机器,假如你是三台机器,那么每一台都需要这么操作,切记每个nacos的cluster.conf要保持一致,并且application.properties当中指定的mysql数据库也都要是一致的。

第一步:上传解压:

  1. 创建存放nacos的文件夹:mkdir /opt/nacos
  2. 通过xftp上传tar包到/opt/nacos
  3. 解压:tar -zxvf nacos-server-2.1.1.tar.gz

第二步:修改application.properties,指定mysql持久化

  1. 修改配置文件:vi /opt/nacos/nacos/conf/application.properties ,Esc进入编辑状态
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
  1. :wq保存application.properties配置

第三步:指定集群的IP和端口

  1. 进入/opt/nacos/nacos/conf复制出cluster.conf:cp cluster.conf.example cluster.conf
  2. cluster.conf内容如下,在文件最下方修改即可(这里我用本机真实ip地址或者127.0.0.1,在后面均可正常启动,但还是推荐使用本机真实ip地址,如果使用127.0.0.1,在nacos页面的集群管理当中会出现两个节点,一个是127.0.0.1,一个是真实ip的!):vi cluster.conf 改完后 :wq保存cluster.conf配置

在这里插入图片描述

第四步:由于用的一台机器,而startup.sh并没有传入端口号的参数,所以手动加一个

编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口(如果本身就是三台机器,可以跳过这一步)

  • /opt/nacos/nacos/bin:目录下有startup.sh,平时单机版的启动,都是./startup.sh即可。
  • 集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。命令:./startup.sh -t 3333 表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。

一共需要修改两个地方,如下:vi startup.sh

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

修改后:-Dserver.port=${PORT} 一定不要放错地方了,放到"$JAVA"后面

在这里插入图片描述

第五步:copy两个nacos

由于我们没有多台机器,只有一台,那我们一台机器启动多个nacos,在低版本当中支持一个nacos安装包多个启动,但是2.0以后版本是不支持的,不然会报错:Fail to init node, please see the logs to find the reason.,所以一切配置好之后直接copy两个文件: cp -r /opt/nacos/nacos /opt/nacos/nacos2

在这里插入图片描述

第六步:启动执行

sh /opt/nacos/nacos/bin/startup.sh -t 3333
sh /opt/nacos/nacos1/bin/startup.sh -t 4444
sh /opt/nacos/nacos2/bin/startup.sh -t 5555 
  1. 查看启动日志:tail -f /opt/nacos/nacos/logs/start.out
  2. 出现报错(没有出现报错的话忽略这一步):
    在这里插入图片描述
    • (1)查看哪个安装包包含该库:yum provides libstdc++.so.6
      在这里插入图片描述

    • (2)安装:yum install libstdc+±4.8.5-44.el7.i686

    • (3)停止nacos:ps -ef | grep nacos然后再kill -9 进程id 这时候再启动就不报错了!

四、调整Nginx的配置

在实际开发当中是可以使用Nginx集群的,当然我这里用的是单机Nginx

  1. 修改配置文件:vi /usr/local/nginx/conf/nginx.conf
  2. 在nginx.conf的http块加如下配置:
upstream cluster {
     server 127.0.0.1:3333;
     server 127.0.0.1:4444;
     server 127.0.0.1:5555;
 }

server {
     listen       1111;
     server_name  localhost;
     #charset koi8-r;
     #access_log  logs/host.access.log  main;
     location / {
         #root   html;
         #index  index.html index.htm;
         proxy_pass http://cluster;
	 }
}
  1. cd /usr/local/nginx/sbin
  2. 让配置生效:./nginx -s reload

防火墙相关设置:

  1. 查看是否开启防火墙:systemctl status firewalld
  2. 如果开启了,需要开放1111端口: firewall-cmd --zone=public --add-port=1111/tcp --permanent
  3. 重启防火墙:systemctl restart firewalld.service
  4. 查看已经开放的端口号:firewall-cmd --list-all

如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估:systemctl stop firewalld.service

五、测试访问

http://192.168.1.104:1111/nacos

在这里插入图片描述

新建一个配置测试:

在这里插入图片描述

查看数据库:

在这里插入图片描述

微服务注册:

server:
  port: 9002

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        #配置Nacos地址
        #server-addr: localhost:8848
        # 换成nginx的1111端口,做集群
        server-addr: 192.168.111.144:1111


management:
  endpoints:
    web:
      exposure:
        include: '*'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux环境搭建nacos集群详解 的相关文章

  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • Logrotate - nginx 日志不在 docker 容器内旋转

    我有一个运行 nginx 的 docker 容器 它正在将日志写入 var log nginxLogrotate 安装在 docker 容器中 并且 nginx 的 logrotate 配置文件已正确设置 尽管如此 logrotate 仍不
  • 阻止 ingress-nginx 负载均衡器上的特定路径

    我有许多指向入口控制器 IP 的域 我想阻止所有域 站点的 特定路径 有没有办法做到这一点 我可以用nginx ingress kubernetes io configuration snippet 对于每个站点 但正在寻找同时处理所有站点
  • 大多数 Linux 系统头文件与 C++ 兼容吗?

    大多数 Linux 系统头文件 API C 兼容吗 今天我试图做这样的事情 include
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • sendfile64 只复制约2GB

    我需要使用 sendfile64 复制大约 16GB 的文件 到目前为止我所取得的成就是 include
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • Nginx docker容器代理传递到另一个端口

    我想在 docker 容器中运行 Nginx 它监听端口 80 并且当 url 以 word 开头时 我希望它 proxy pass 到端口 8080api 我有一些网络应用程序侦听端口 8080 这在没有 docker 的情况下对我来说一
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp

随机推荐

  • 5.1广度优先遍历的递归与迭代实现;

    队列先进先出的性质 符合 广度优先遍历时 一层一层的遍历逻辑 lc102 102 二叉树的层序遍历 107 二叉树的层次遍历II 199 二叉树的右视图 637 二叉树的层平均值 429 N叉树的层序遍历 515 在每个树行中找最大值 11
  • 谭铁牛:人工智能 找风口不如找关口

    不过我们不能光打打嘴炮 如何克服困难和挑战 让人工智能帮到你的工作 你的事业呢 让我们将李开复的演讲内容 再结合一个实例 来给大家解释一下 现在 假设你是一个程序员 虽然哥也是一媒体人 但黑起自己的行业来是丝毫不会手软的 假设你现在是一家媒
  • Python库

    库名称简介 Chardet字符编码探测器 可以自动检测文本 网页 xml的编码 colorama主要用来给文本添加各种颜色 并且非常简单易用 Prettytable主要用于在终端或浏览器端构建格式化的输出 difflib Python 标准
  • openwrt添加自己的应用程序(SDK下编译模块)出现的问题

    openwrt 版本 15 05 CC 最近在openwrt里面想编写一个串口的读写程序 没想到会出现以下问题 1 编译的时候 以下为网友遇到的问题 Package helloworld is missing dependencies fo
  • GetProcAddress()方法返回NULL值的问题

    使用动态加载的方式使用动态库 loadlibrary 成功加载动态库 之后使用GetProcAddress 方法得到函数指针却返回空值 使用GetLastError 方法得到错误代码127 出现此错误的原因一般是要加载的函数名称与动态库中函
  • 外部中断原理

    外部中断 当CPU正在按主程序运行时 外部发生了紧急事件 向CPU发送中断请求来优先处理紧急事件 当CPU处理完紧急事件后再继续从主程序断开的地方运行程序 发出中断请求的源称为中断源 不同的中断源具有不同的优先级别 当CPU同时接收到多个中
  • C++实现WebSocket简单服务器

    参考链接 链接1 链接2 链接3 WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单 允许服务端主动向客户端推送数据 在WebSocket
  • javaday09面向对象---简单谈

    Java day09 面向对象 一 成员变量和局部变量的区别 局部变量是没有默认值的 还有一个是 4 内存的位置不同 5 生命周期不同 二 内存图 形参为引用类型时 继续执行 调用function 压栈执行 以前说的是数组是引用类型 现在要
  • Boost建模与仿真 1MW设计

    这里讲一下BOOST电路从建模到系统实现 为了方便DSP移植性 所以采用离散仿真加s function C代码编写的程序 Boost 电路设计 主要仿真功率为1MW的Boost电路 主回路拓扑 Boost硬件参数选型 电容C 50000uf
  • Error: Cannot find module ‘@/views/xxx‘ at webpackEmptyContext

    从开源平台上面 clone 一个vue 项目时 登陆后 一直报找不到相对应的 module 搜了很多 后面终于解决 export const loadView view gt return gt import views view 改成如下
  • (Java)leetcode-85 Maximal Rectangle(最大矩形)

    题目描述 给定一个仅包含 0 和 1 的二维二进制矩阵 找出只包含 1 的最大矩形 并返回其面积 示例 输入 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 输出 6 思路整理自windliang的题解 思路
  • 深入理解数据结构——堆栈应用(背包体积)

    include
  • 2023年天津市逆向re3.exe解析(超详细)

    2023年天津市逆向re3 exe解析 1 拖进IDA里进行分析 2 动态调试 过程省略了 3 解密加密算法 4 输入FLAG 回显成功 1 拖进IDA里进行分析 打开后是这么一个程序 直接找到main函数f5反编译即可 这里要注意程序第一
  • 修改sql2000服务器ip地址,SQL Server 2000故障转移群集如何更改ip地址

    直接在群集管理器的sql server ip address属性中更改后 本机连接没有问题 但其他机器和应用程序使用ip地址或服务器名都连不上 从微软网站上查到 正确方法应该是 Change the IP addresses of SQL
  • 【深度学习】如果在loss.backward()之前不使用optimizer.zero_grad()会发生什么事情

    在使用optimizer step 更新模型参数之前 我们需要使用optimizer zero grad 清除之前计算的梯度信息 这是因为PyTorch默认会累加梯度 如果不清除的话 会导致梯度信息累积 使得模型参数更新不准确 因此 我们需
  • C++学习笔记-宏(define),类型定义符(typedef),Using,内联函数(inline),指针常量和常量指针的区别与联系

    宏 define 类型定义符 typedef 内联函数 inline 的区别与联系 宏 define define 程序编译的四个阶段 条件编译 tydedef typedef和 define之间的区别 指针常量和常量指针 using 内联
  • Crontab计划任务

    Crontab计划任务 原文地址 https blog csdn net u012852374 article details 53892880 Crontab定义 Crontab是一个用于设置周期性被执行的任务的工具 被周期性执行的任务我
  • git commit压缩

    第一步 通过命令 git log 查看提交记录 第二步 执行变基git rebase i HEAD
  • 大文件上传并进行md5校验过程中遇到的问题,复制InputStream导致内存溢出

    最近因为一个项目需求 需要支持上传文件 并且在上传的过程中通过流式的方式生成md5校验码 然后好需要利用这个输入流来生成本地预览文件 而InputStrream是只能读一次的 并不能重复读 所以在这里就需要进行流的复制 解释一下 fileU
  • linux环境搭建nacos集群详解

    目录 一 集群部署说明 二 环境准备 三 搭建Nacos集群 四 调整Nginx的配置 五 测试访问 一 集群部署说明 官网集群部署 https nacos io zh cn docs cluster mode quick start ht