Nacos集群和持久化

Nacos集群和持久化

1. 什么是Nacos集群和持久化

Nacos集群

Nacos集群是指多个Nacos节点协同工作,以提供高可用性和性能的服务发现、配置管理和动态DNS等功能。Nacos集群的节点之间可以相互通信和协作,以确保数据的一致性和可靠性。Nacos集群的优点包括:

  • 提高可用性:当某个节点宕机或不可用时,其它节点可以接替它的工作,确保服务不中断。

  • 提高性能:多个节点可以共同处理请求,以提高系统的吞吐量和响应速度。

  • 提高伸缩性:可以根据需要动态添加或删除节点,以适应不同的负载和流量。

Nacos集群的部署方式可以选择单机、集群、Docker容器等。不同的部署方式有不同的优缺点和适用场景,需要根据实际情况进行选择和优化。

Nacos持久化

Nacos持久化是指将Nacos的数据存储在磁盘或数据库等持久化存储介质中,以确保数据的安全性和可恢复性。Nacos支持多种持久化方式,包括文件系统、MySQL、PostgreSQL、Oracle等数据库等。不同的持久化方式有不同的优缺点和适用场景,需要根据实际情况进行选择和优化。

使用持久化可以避免Nacos节点宕机或重新启动时数据丢失的问题。例如,在使用数据库进行持久化时,Nacos会将数据存储在指定的数据库中,并在需要时从数据库中读取数据。这样即使Nacos节点宕机或重新启动,数据也不会丢失。此外,使用持久化还可以避免内存溢出等问题,因为数据可以存储在磁盘或数据库中,而不是仅存储在内存中。

需要注意的是,不同的持久化方式有不同的性能和可靠性。例如,使用文件系统进行持久化可能会遇到文件锁、文件系统故障等问题;使用数据库进行持久化可能会遇到数据库故障、数据库性能等问题。因此,需要根据实际情况进行选择和优化。

总之,Nacos集群和持久化都是非常重要的,可以提高系统的可用性、性能和可靠性。在进行部署和配置时,需要仔细考虑各种因素,并根据实际情况进行选择和优化。

Nacos默认有自带嵌入式数据库derby,但是如果做集群模式的话,就不能使用自己的数据库不然每个节点一个数据库,那么数据就不统一了,需要使用外部的mysql

1.2. 持久化

1.2.1. 切换数据库

1.2.1.1. 备份数据

在切换数据库之前,首先需要备份当前使用的数据库中的Nacos数据,以防止数据丢失。备份的方法根据所使用的数据库不同而有所不同。例如,如果使用MySQL进行持久化,可以使用mysqldump命令备份数据库,命令如下:

mysqldump -u root -p --databases nacos > nacos.sql

其中,root是MySQL数据库的用户名,nacos是要备份的数据库名,nacos.sql是备份文件的名称。

1.2.1.2. 安装新的数据库

根据需要切换到的新的数据库类型和版本,安装对应的数据库,并创建新的数据库实例和相应的用户权限。例如,如果要将Nacos的数据存储方式从MySQL切换到PostgreSQL,可以安装PostgreSQL,并创建新的数据库实例和用户权限。可以使用如下命令连接到PostgreSQL:

psql -h localhost -U postgres -d nacos

其中,localhost是数据库所在的主机名,postgres是数据库的用户名,nacos是要连接的数据库名。

1.2.1.3. 初始化Nacos数据表

使用新的数据库实例登录到数据库中,并执行Nacos提供的初始化脚本,创建Nacos所需的数据表。Nacos提供了各种数据库类型的初始化脚本,可以在Nacos官网上下载对应的脚本。以PostgreSQL为例,可以使用如下命令执行初始化脚本:

psql -h localhost -U postgres -d nacos < ${nacos_home}/conf/nacos-mysql.sql

其中,localhost是数据库所在的主机名,postgres是数据库的用户名,nacos是要连接的数据库名,${nacos_home}是Nacos的安装目录,nacos-mysql.sql是初始化脚本的文件名.

1.2.1.4. 配置Nacos连接新的数据库

修改Nacos的配置文件,将原来连接旧数据库的配置修改为连接新数据库的配置。配置文件的位置和格式因Nacos版本和部署方式而有所不同,可以在Nacos官网上查看相应的文档。以单机模式为例,可以编辑${nacos_home}/conf/application.properties文件,将原来连接MySQL的配置修改为连接PostgreSQL的配置,如下所示:

# MySQL
# spring.datasource.platform=mysql
# spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# spring.datasource.url=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# spring.datasource.username=root
# spring.datasource.password=root

# PostgreSQL
spring.datasource.platform=postgresql
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/nacos?stringtype=unspecified
spring.datasource.username=postgres
spring.datasource.password=postgres

其中,以#号开头的行是原来连接MySQL的配置,去掉#号后并修改为连接PostgreSQL的配置。

1.2.1.5. 启动Nacos并验证

完成以上步骤后,重新启动Nacos,使其连接到新的数据库,并验证数据是否正确迁移。可以使用如下命令启动Nacos:

sh ${nacos_home}/bin/startup.sh -m standalone

其中,${nacos_home}是Nacos的安装目录。

启动完成后,可以访问Nacos的Web界面,并检查配置信息、服务列表、命名空间等是否正确。如果存在之前已经注册的服务实例,也需要检查这些服务实例是否仍然可用。

1.2.1.6. 数据回滚

如果切换数据库后发现数据有误或无法正常工作,可以回滚到之前备份的数据库。回滚的方法与备份相反,可以使用如下命令恢复MySQL数据库:

mysql -u root -p nacos < nacos.sql

其中,root是MySQL数据库的用户名,nacos是要恢复的数据库名,nacos.sql是备份文件的名称。

完成回滚后,可以重新启动Nacos,并检查数据是否已经恢复到原来的状态。

1.2.1.7. 测试

重启nacos测试nacos所有写到嵌入式数据库的数据是否都写到了mysql:

![image-20210110154140054](D:\下载-内网通\第六阶段\Spring Coloud Alibaba\01.ApringCloud概述&注册中心和配置中心\csdn\Nacos集群和持久化.assets\image-20210110154140054.png)

1.2.1.8. 注意事项

如果需要切换Nacos的数据库,还有以下一些需要注意的地方:

  • 版本兼容性

Nacos的不同版本对数据库的兼容性也不同,需要根据Nacos版本选择合适的数据库类型和版本。可以在Nacos官网上查看相应版本的文档,了解支持的数据库类型和版本。

  • 数据库连接参数

在切换到新的数据库后,需要根据新的数据库类型和版本修改连接参数。例如,不同的数据库有不同的驱动类名、连接URL和用户密码等。可以查阅Nacos官网的文档,获取新的数据库连接参数。

  • 数据库字符集

Nacos使用的数据库需要支持UTF-8字符集,否则可能会出现乱码等问题。在创建新的数据库实例时,需要指定UTF-8字符集。例如,对于MySQL数据库,可以在创建数据库时指定:

CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • 数据库权限

在连接新的数据库时,需要确保Nacos的用户拥有足够的权限,以便创建数据表和执行其他数据库操作。可以在创建新的数据库实例时为Nacos的用户授予相应的权限。例如,在MySQL中,可以使用如下命令授予权限:

GRANT ALL PRIVILEGES ON nacos.* TO 'nacos'@'%' IDENTIFIED BY 'nacos';

其中,nacos是数据库名,nacos是用户名和密码。注意,在生产环境中,需要根据实际情况设置更为安全的用户和密码。

  • 数据迁移时间

在切换数据库时,需要预留足够的时间进行数据迁移。数据迁移的时间取决于数据量的大小和网络带宽等因素。可以先在测试环境中进行数据迁移和测试,确保数据迁移的可靠性和正确性

1.3. Nacos集群

1.3.1. 部署架构图:

1.3.2. 安装和配置 MySQL 数据库

  • 安装 MySQL 数据库。

请根据你所使用的操作系统,在 MySQL 官网上下载对应版本的 MySQL 数据库软件。下载完成后,按照软件提供的安装指引进行安装。安装完成后,启动 MySQL 服务。

  • 创建一个新的数据库。

打开 MySQL 客户端,输入以下命令:

CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

其中,nacos 为数据库名称。执行完毕后,会创建一个名为 nacos 的数据库。

  • 创建一个新的 MySQL 用户,并为该用户授权访问 nacos 数据库。

输入以下命令:

CREATE USER 'nacos'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nacos.* TO 'nacos'@'%';
FLUSH PRIVILEGES;

其中,nacos 为 MySQL 用户名,password 为密码。

  • 修改 MySQL 的字符集为 UTF-8。

输入以下命令:

ALTER DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

1.3.3. 下载和配置 Nacos 服务器

  • 下载 Nacos 的二进制文件。

请前往 Nacos 的 官方 GitHub 仓库 下载最新版本的二进制文件。

下载完成后,解压文件,得到一个名为 nacos 的目录。

  • 进入 Nacos 的配置目录(conf),修改 application.properties 文件。

application.properties 文件是 Nacos 的主要配置文件。在该文件中,我们需要修改以下属性:

# 数据库连接信息
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://ip1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=password

# 集群配置信息
server.port=8848
server.contextPath=/nacos
server.tomcat.max-threads=500
server.tomcat.accept-count=1000
server.connection-timeout=30000
nacos.core.auth.enabled=false
nacos.name=${spring.application.name}
nacos.namespace=

# 日志配置信息
logging.config=classpath:logback.xml

其中,ip1 为 MySQL 数据库所在服务器的 IP 地址,password 为 MySQL 用户的密码。

具体的修改步骤如下:

  • 将 db.url.0 的值中的 ip1 改为 MySQL 数据库所在服务器的 IP 地址。

  • 将 db.password 的值改为 MySQL 用户的密码。

  • 如果需要更改 Nacos 的端口号或者上下文路径,可以修改 server.port 和 server.contextPath 的值。

  • 如果需要更改日志配置,可以修改 logging.config 的值。

修改 cluster.conf 文件,指定 Nacos 集群中所有节点的 IP 地址,在 nacos/conf 目录下,可以找到 cluster.conf 文件。在该文件中,我们需要添加 Nacos 集群中所有节点的 IP 地址和端口号,每行一个节点,如下所示:

ip1:8848
ip2:8848
ip3:8848

其中,ip1、ip2、ip3 等为 Nacos 集群中节点的 IP 地址。

在完成了数据库和 Nacos 服务器的配置后,我们就可以启动 Nacos 服务器了。

  • 进入 Nacos 的 bin 目录,执行以下命令启动 Nacos 服务器:

sh startup.sh -m standalone

其中,-m standalone 表示以单机模式启动 Nacos 服务器。

  • 查看启动日志。

启动 Nacos 服务器后,可以在控制台或者 nacos/logs 目录下查看启动日志,确保 Nacos 服务器已经成功启动,并且已经连接到 MySQL 数据库。

  • 在其他节点上重复以上步骤,在相应节点上启动 Nacos 服务器,并将其添加到集群中。

启动 Nacos 服务器的步骤与第三步中的步骤相同。只需要将数据库连接信息、集群配置信息、日志配置信息等修改为相应节点的配置即可。另外,需要确保集群中所有节点的 cluster.conf 文件都已经包含了所有节点的 IP 地址和端口号。

1.3.4. 测试 Nacos 集群

在完成了 Nacos 集群的搭建后,我们需要进行一些测试,确保 Nacos 集群已经正常工作。

  • 在浏览器中访问 Nacos 管理界面。

在浏览器中输入 http://ip1:8848/nacos,其中 ip1 为 Nacos 集群中任意节点的 IP 地址,8848 为端口号。如果能够正常访问 Nacos 管理界面,则说明 Nacos 集群已经成功启动。

  • 在 Nacos 管理界面中创建一个新的服务。

在 Nacos 管理界面中,选择 服务管理,然后点击 创建服务。输入服务名称和服务描述,并选择适当的服务类型和命名空间,最后点击 创建 按钮。

  • 在 Nacos 管理界面中查看服务列表。

在 Nacos 管理界面中,选择 服务管理,可以看到刚刚创建的服务已经出现在服务列表中。

  • 在其他节点上重复以上步骤,在相应节点上创建相同的服务。

在创建服务时,需要确保服务名称、服务类型、命名空间等信息与第一个节点中创建的服务完全一致。

  • 在 Nacos 管理界面中查看服务列表。

在 Nacos 管理界面中,选择 服务管理,可以看到在所有节点上创建的服务都已经出现在服务列表中。这表明 Nacos 集群已经正常工作,并且不同节点之间可以进行服务信息的同步和共享。

  • 在浏览器中输入其他节点的 IP 地址和端口号,访问 Nacos 管理界面,检查是否能够正常访问。

例如,在浏览器中输入 http://ip2:8848/nacos,其中 ip2 为集群中另一个节点的 IP 地址,8848 为端口号。如果能够正常访问 Nacos 管理界面,则说明 Nacos 集群中的不同节点之间可以进行互相通信。

  • 测试服务注册和发现功能。

在 Nacos 管理界面中,选择 服务管理,可以看到所有已经注册的服务。选择一个服务,可以看到该服务的详细信息。

1.4. 配置代理服务

1.4.1. 安装nginx

安装Nginx的步骤通常包括以下几个步骤:

  • 安装nginx的依赖库

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
  • 下载nginx

wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
  • 解压安装包

tar -zxvf nginx-1.12.0.tar.gz
  • 配置nginx安装包

cd nginx-1.12.0

./configure --prefix=/usr/local/nginx

注意:./configure配置nginx安装到/usr/java/nginx目录下

  • 编译并安装

make && make install

1.4.2. 配置nginx代理nacos

  • 打开Nginx的配置文件,通常位于/etc/nginx/nginx.conf。在http块内添加以下内容:

upstream nacos_servers {
    server <NACOS_SERVER_IP>:<NACOS_SERVER_PORT> weight=1;
    server <NACOS_SERVER_IP>:<NACOS_SERVER_PORT> weight=1;
    ...
}

这里需要将<NACOS_SERVER_IP>和<NACOS_SERVER_PORT>替换为您的Nacos服务器的IP地址和端口号。如果您有多个Nacos服务器,可以在upstream块内添加多个server行。

  • 在同一http块中,添加一个server块作为Nacos的反向代理:

server {
    listen       80;
    server_name  nacos.example.com; # 修改为您的域名或IP地址

    location / {
        proxy_pass http://nacos_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

这里需要将server_name修改为您的域名或IP地址。proxy_pass指令将所有请求代理到上游的Nacos服务器,而其余指令将请求头中的Host,X-Real-IP和X-Forwarded-For字段设置为正确的值。

  • 保存并关闭Nginx配置文件,然后重新加载Nginx服务以使更改生效:

systemctl reload nginx

现在可以在浏览器地址栏输入http://nacos.example.com来访问Nacos控制台。

如果出现下图则表示配置成功

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值