likes
comments
collection
share

二、Linux 搭建 Nacos 集群架构以及持久化

作者站长头像
站长
· 阅读数 11

前言

上篇已经介绍了 Nacos 在 Windows 的安装及 Nacos 的注册中心、配置管理的基本使用。如果是个人本地环境使用 Windows 的单机模式已经足够了,但如果是公司环境,那肯定是在 Linux 环境部署集群模式,确保高可用;并且还需要保证信息的持久化。

环境准备

  • Linux
  • >= JDK 1.8
  • Nacos Linux 版本安装包

1、下载 Liunx 版本的 nacos-server, 下载地址:https://github.com/alibaba/nacos/releases/tag/2.1.1 ,如果下载慢,可以使用 github 的国内镜像加速地址:https://kgithub.com/alibaba/nacos/releases/tag/2.1.1

二、Linux 搭建 Nacos 集群架构以及持久化

2、使用命令进行解压:tar -zxvf nacos-server-2.1.1.tar.gz -C /opt/soft/

3、解压之后进行启动 Nacos,步骤如下:

cd /opt/soft/nacos/bin/
# 启动
sh startup.sh -m standalone

# 关闭防火墙
systemctl stop firewalld

# 或者开放 8848 端口
 # 1、打开防火墙
systemctl start firewalld
# 2、检查是否开放
firewall-cmd --query-port=8848/tcp

# 3、打开 8848 端口
firewall-cmd --add-port=8848/tcp --permanent
# 4、重启防火墙:
systemctl restart firewalld

4、浏览器访问

二、Linux 搭建 Nacos 集群架构以及持久化

注意:如果是使用IDEA开发工具进行远程访问,需要额外放开:9848、9849(根据主端口8848进行偏移)。 Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。

端口与主端口的偏移量描述
98481000客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
98491001服务端gRPC请求服务端端口,用于服务间同步等
7848-1000Jraft请求服务端端口,用于处理服务端间的Raft相关请求

二、Linux 搭建 Nacos 集群架构以及持久化

[root@cxyxj ~]# firewall-cmd --add-port=9848/tcp --permanent
success
[root@cxyxj ~]# firewall-cmd --add-port=9849/tcp --permanent
success
[root@cxyxj ~]# systemctl restart firewalld

集群部署

Nacos 支持三种部署模式

  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。

1、集成MySQL存储

默认情况下 Nacos 使用嵌入式数据库 derby 实现数据的存储。所以,如果启动多个默认配置下的 Nacos 节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos 采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。具体的操作步骤如下:

  • 1、需要安装版本为 5.6.5+ 的数据库。
  • 2、创建名为 nacos_config 的数据库,前往 nacos\conf\ 目录下找到 nacos-mysql.sql 文件,执行sql脚本。

二、Linux 搭建 Nacos 集群架构以及持久化

创建 nacos_config 数据库,执行 nacos-mysql.sql 文件结果如下:

二、Linux 搭建 Nacos 集群架构以及持久化

  • 3、修改 conf/application.properties 文件,增加 mysql 数据源配置。
# 指定数据源
spring.datasource.platform=mysql

### 指定 DB 实例数
db.num=1

### DB连接信息
db.url.0=jdbc:mysql://192.168.xxx.xx:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

重新启动 Nacos,可以看到是个全新的空记录界面。

  • 4、新建配置

二、Linux 搭建 Nacos 集群架构以及持久化

  • 5、从数据库中查看配置信息

二、Linux 搭建 Nacos 集群架构以及持久化

2、配置集群配置文件

将 Node-1 导出为镜像,搭建三个 Linux 系统,每个系统中搭建一个 Nacos 服务。

二、Linux 搭建 Nacos 集群架构以及持久化

  • 1、将 Node-1 虚拟机关机
  • 选中 Node-1 虚拟机,单击“文件”选项,然后在弹出的下拉框中单击“导出为OVF”这一项,如下图所示:

二、Linux 搭建 Nacos 集群架构以及持久化

  • 需要选择OVF模板的保存目录,默认文件名是.ovf,无需更改,只需单击“保存”按钮即可,如下图所示:

二、Linux 搭建 Nacos 集群架构以及持久化

  • 等待导出完成即可。

二、Linux 搭建 Nacos 集群架构以及持久化

  • 导出完成后会在目录下生成四个文件,如下图:

二、Linux 搭建 Nacos 集群架构以及持久化

  • 在VMWare软件界面中选择“文件”——“打开”:

二、Linux 搭建 Nacos 集群架构以及持久化

  • 选择之前导出的.ova文件,点击“打开”:

二、Linux 搭建 Nacos 集群架构以及持久化

  • 设置新虚拟机的名称以及存储位置

二、Linux 搭建 Nacos 集群架构以及持久化 注意:不同的虚拟机需要放在不同的文件夹下,否则会出现同时只能打开一台虚拟机的情况。

  • 导入成功后,重复上述步骤,创建 Node-3 虚拟机,最终结果如下图:

二、Linux 搭建 Nacos 集群架构以及持久化

3 个或 3 个以上 Nacos 节点才能构成集群,所以需要三个 Nacos 服务程序。

  • 1、在每个 Nacos 服务中, 前往 nacos\conf\ 目录下找到 cluster.conf.example 文件,对其进行 copy,并修改文件名为 cluster.conf
[root@cxyxj conf]# cp cluster.conf.example  cluster.conf
  • 2、修改 cluster.conf 文件内容,请每行配置成 ip:port
192.168.91.128:8848
192.168.16.129:8848
192.168.16.130:8848

注意,这个IP不能写 127.0.0.1 或者 localhost。请将Linux虚拟机的IP修改为静态IP。

  • 3、集群模式启动
    cd /usr/local/java/nacos/bin
    # 使用外置数据源
    sh startup.sh
  • 4、分别将三个节点启动成功,结果如下:

    • 192.168.91.128:8848

二、Linux 搭建 Nacos 集群架构以及持久化

  • 192.168.91.129:8848

二、Linux 搭建 Nacos 集群架构以及持久化

  • 192.168.91.130:8848

二、Linux 搭建 Nacos 集群架构以及持久化

注意

本文采用的 MySQL 为单机,虽然也够用,如果公司资源足够,生产使用建议至少主备模式。

额外

设置 Nacos 开机自启动

[root@cxyxj bin]# vim /usr/lib/systemd/system/nacos.service

该文件是不存在的,所以需要创建该文件。在文件中编写以下内容:

[Unit]
Description=nacos
After=network.target

[Service]
Type=forking
LimitNOFILE=infinity
Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_321"
ExecStart=/usr/local/java/nacos/bin/startup.sh
ExecReload=/usr/local/java/nacos/bin/shutdown.sh
ExecStop=/usr/local/java/nacos/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • Environment:指定 JDK 位置

  • ExecStart 有如下几种写法:

    • 单机模式:ExecStart=/opt/nacos/bin/startup.sh -m standalone

    • 集群模式内置数据源:ExecStart=/opt/nacos/bin/startup.sh -p embedded

    • 集群模式外置数据源:ExecStart=/opt/nacos/bin/startup.sh

修改 Nacos 服务 bin目录下的 startup.sh 文件内容, 将下面3条注释掉,保留第一条,并修改 jdk 路径。

二、Linux 搭建 Nacos 集群架构以及持久化

修改完之后,对服务操作的相关命令如下:

启动服务:systemctl start nacos.service

关闭服务:systemctl stop nacos.service

重启服务:systemctl restart nacos.service

显示服务的状态:systemctl status nacos.service

开机时启用服务:systemctl enable nacos.service

开机时禁用服务:systemctl disable nacos.service

查看服务是否开机启动:systemctl is-enabled nacos.service

查看已启动的服务列表:systemctl list-unit-files|grep enabled

查看启动失败的服务列表:systemctl --failed

重启测试:reboot

转载自:https://juejin.cn/post/7352704880282468379
评论
请登录