Nacos快速入门(二):Nacos集群安装部署

2023-11-14

1、集群部署架构图

官方提供了三种部署架构:

  • http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。

  • http://VIP:port/openAPI 挂载VIP模式,直连vip即可,下面挂server真实ip,可读性不好。

  • http://nacos.com:port/openAPI 域名 + VIP模式,可读性好,而且换ip方便,推荐模式

nacos-cluster-model.jpeg

2、集群环境搭建

2.1、环境准备

Nacos需要3个或3个以上节点才能构成集群,现准备以下三台linux机器:

  • 10.25.84.163
  • 10.25.84.164
  • 10.25.84.165

每台机器需配置JDK1.8+版本

2.2、下载安装

下载地址:https://github.com/alibaba/nacos/releases

本文版本:截止当前时间稳定版本1.1.4

2.3、解压

tar -xvf nacos-server-$version.tar.gz

解压后文件目录结构:

.
├── bin
│   ├── shutdown.cmd
│   ├── shutdown.sh
│   ├── startup.cmd
│   └── startup.sh
├── conf
│   ├── application.properties
│   ├── application.properties.example
│   ├── cluster.conf.example
│   ├── nacos-logback.xml
│   ├── nacos-mysql.sql
│   └── schema.sql
├── LICENSE
├── NOTICE
└── target
    └── nacos-server.jar

2.4、配置集群配置文件

集群配置文件为nacos的解压目录nacos/conf下的cluster.conf,但我们解压出来的目录下只有cluster.conf.example文件,这是个示例,我们修改下文件名可直接用

mv cluster.conf.example cluster.conf

编辑cluster.conf,每行配置ip:port

# ip:port
10.25.84.163:8848
10.25.84.164:8848
10.25.84.165:8848

2.5、配置MySQL数据库

nacos为什么要配置MySQL?

Nacos的单节点,即standalone模式下,数据默认存储到内嵌的数据库derby中。如果是集群环境,nacos数据存储没有使用分布式算法解决一致性性问题,而是采用比较常规的集中化存储,而且目前支持MySQL。从部署和硬件投入,相比consul、zookeeper、etcd这些采用分布式一致性算法的中间件就稍显不足了。

理解后,我们开始配置:

第一步:初始化MySQL数据库

新建一个数据库,库名自定义,如nacos,执行nacos/conf目录下的nacos-mysql.sql脚本,初始化表结构

nacos-mysql.png

第二步:application.properties添加数据库配置

编辑nacos/conf目录下的application.properties文件,添加mysql配置

db.num=1
db.url.0=jdbc:mysql://IP:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=password

注:生产使用建议至少主备模式,或者采用高可用数据库。

2.6、启动服务器

执行nacos/bin目录下的启动脚本startup.sh,启动其中一台,如10.25.84.165

[root@localhost bin]# ./startup.sh
/usr/local/java/jdk1.8.0_25/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Djava.ext.dirs=/usr/local/java/jdk1.8.0_25/jre/lib/ext:/usr/local/java/jdk1.8.0_25/lib/ext:/root/nacos/plugins/cmdb:/root/nacos/plugins/mysql -Xloggc:/root/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dnacos.home=/root/nacos -Dloader.path=/root/nacos/plugins/health -jar /root/nacos/target/nacos-server.jar  --spring.config.location=classpath:/,classpath:/config/,file:./,file:./config/,file:/root/nacos/conf/ --logging.config=/root/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
nacos is starting with cluster
nacos is starting,you can check the /root/nacos/logs/start.out

查看启动日志:

[root@localhost nacos]# more ./logs/start.out 
/usr/local/java/jdk1.8.0_25/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapD
umpPath=/root/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Djava.ext.dirs=/usr/local/java/jdk1.8.0_25/jre/lib/ext:/usr/local/java/jdk1.8.0_25/lib/ext:/root/nacos/plugins/cmdb:/root/n
acos/plugins/mysql -Xloggc:/root/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -
XX:GCLogFileSize=100M -Dnacos.home=/root/nacos -Dloader.path=/root/nacos/plugins/health -jar /root/nacos/target/nacos-server.jar  --spring.config.location=classpath:/,classpath:/config/,fi
le:./,file:./config/,file:/root/nacos/conf/ --logging.config=/root/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288

         ,--.
       ,--.'|
   ,--,:  : |                                           Nacos 1.1.4
,`--.'`|  ' :                       ,---.               Running in cluster mode, All function modules
|   :  :  | |                      '   ,'\   .--.--.    Port: 8848
:   |   \ | :  ,--.--.     ,---.  /   /   | /  /    '   Pid: 2771
|   : '  '; | /       \   /     \.   ; ,. :|  :  /`./   Console: http://10.25.84.163:8848/nacos/index.html
'   ' ;.    ;.--.  .-. | /    / ''   | |: :|  :  ;_
|   | | \   | \__\/: . ..    ' / '   | .; : \  \    `.      https://nacos.io
'   : |  ; .' ," .--.; |'   ; :__|   :    |  `----.   \
|   | '`--'  /  /  ,.  |'   | '.'|\   \  /  /  /`--'  /
'   : |     ;  :   .'   \   :    : `----'  '--'.     /
;   |.'     |  ,     .-./\   \  /            `--'---'
'---'        `--`---'     `----'

2020-03-03 17:59:25,257 INFO The server IP list of Nacos is [10.25.84.163:8848, 10.25.84.164:8848, 10.25.84.165:8848]

2020-03-03 17:59:26,275 INFO Nacos is starting...

可以看到nacos已经成功启动

登录nacos控制台,地址:http://10.25.84.165:8848/naocs

nacos-login.png

默认用户名/密码为:nacos/nacos,登录进去查看集群节点

nacos-CANDIDATE.png
此时只有一个节点,状态是CANDIDATE,即候选中,我们依次把剩下的两台机器上的nacos服务启动

nacos-cluster.png

此时,集群节点已全部启动,可以看到主节点已经选举出来

2.7、关闭服务器

我们现在来把主节点,即10.25.84.164节点服务关闭

[root@localhost nacos]# ./bin/shutdown.sh
The nacosServer(16341) is running...
Send shutdown request to nacosServer(16341) OK

再次查看集群节点,此时会重新选取主节点,如下10.25.84.163节点被选取为主节点

nacos-shutdown.png

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

Nacos快速入门(二):Nacos集群安装部署 的相关文章

  • C语言程序设计三大基本结构之选择结构

    目录 前言 由于作者水平有限 文章难免存在谬误之处 敬请读者斧正 俚语成篇 恳望指教 文章目录 关系运算符与关系表达式 逻辑运算符与逻辑表达式 if语句 switch语句 if语句的嵌套 switch语句的使用 引言 一 关系运算符与关系表
  • Centos 8 使用 yum 报错 Error: Cannot prepare internal mirrorlist: No URLs in mirrorlist

    目录 问题场景 原因 解决方案 使用官方镜像 不推荐 更换为阿里云镜像 更换为 Centos 7 更换为 Rocky Linux 推荐 参考链接 Centos 官方文章 CentOS Linux EOL 阿里云 Centos 源 Rocky
  • Transformers-Bert家族系列算法汇总

    Transformers 提供 API 和工具 可轻松下载和训练最先进的预训练模型 使用预训练模型可以降低计算成本 碳足迹 并节省从头开始训练模型所需的时间和资源 这些模型支持不同形式的常见任务 例如 自然语言处理 文本分类 命名实体识别
  • 数据结构基础问题

    如何判断链表是否闭环 在数据结构中 判断链表是否存在闭环 Cycle 可以使用快慢指针的方法来实现 以下是判断链表是否闭环的常见做法 使用两个指针 快指针和慢指针 同时遍历链表 开始时它们都指向链表的头节点 慢指针每次向前移动一个节点 而快
  • 618前夜,电商物流「涌向」B2B战场

    随着终端交易场景的增长红利消失殆尽 电商平台需要在产业侧寻找到新的企业支点 这里的背景布不再是熟悉的电商战场 而是红海重重的B2B场域 作者 斗斗 编辑 皮爷 出品 产业家 电商平台开始在B端寻找新的交易环节 随着人口红利逐渐消失 电商平台
  • Pytest单元测试框架 —— Pytest+Allure+Jenkins的应用

    一 简介 pytest allure jenkins进行接口测试 生成测试报告 结合jenkins进行集成 pytest是python的一种单元测试框架 与python自带的unittest测试框架类似 但是比unittest框架使用起来更

随机推荐