Spring Cloud Alibaba(7)---docker-compose搭建nacos1.4.0集群

本文详细介绍了如何使用 Docker Compose 在多机环境下搭建 Nacos 1.4.0 集群,包括项目概述、配置文件详解、服务器部署及测试步骤。通过对比官方方法,强调了配置文件的调整,如内存设置和数据库兼容性,并提供了集群验证和微服务配置的相关信息。

有关Nacos之前写过四篇文章。

 

Spring Cloud Alibaba(3)---Nacos概述

Spring Cloud Alibaba(4)---Nacos(注册中心)

Spring Cloud Alibaba(5)---Nacos(配置中心)

Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

一、项目概述

1、技术选型

项目总体技术选型

CentOS 7.6 + Nacos 1.4.0 + MYSQL 8.0.22 + docker-compose 1.24.1 + docker 1.13.1

2、服务器配置

因为自己只有两台阿里云服务器,所以这里Nacos集群数就两个。Mysql主从之前就搭建好了,这里就不描述搭建的过程。

3、流程图

有关 微服务和Nginx集群 也不再这篇讲述。这篇就是搭建好Nacos集群。

4、集群方式

其实集群的方式有两种,一种是单机集群,一种是多机集群

单机集群: 在同一台服务器上,启动多个Nacos,组成集群。他们的Ip地址是一样的,只是端口号不一样(192.168.1.1:8848,192.168.1.1:8849,192.168.1.1:8850)
多机集群: 在不同服务器上,每台服务器启动一个nacos,组成集群。他们的Ip地址是不一样的,但端口号可以一样(192.168.1.1:8848,192.168.1.2:8848,192.168.1.3:8848)

我们这边采用的是第二种方式(多机集群),其实第一种可以理解成伪集群,第二种才是真集群。

5、和官方docker-compose搭建nacos集群差异

其实官方对 docker-compose搭建nacos集群 有提供项目拿来即用。官方地址:Nacos Docker

如果你只想在一台服务器上部署集群,那么跟着上面的教程,非常方便的就可以搭建单机集群,甚至mysql和nginx 官方提供的 docker-compose.yaml 都一并构建好了。

我这边和官方提供的主要区别在于

1、我们这边是多机集群,所以每台服务器上都需要一个 docker-compose.yaml,而且每台服务器只会启动一个nacos。
2、有关mysqlnginx 我这边是不需要通过 docker-compose.yaml生成对于容器,而是独立出来重新搭建,在docker-compose
### Seata Server 与 Nacos 的兼容性及集成方法 Seata Server 支持与 Nacos 的集成,用于实现配置中心和注册中心的功能。Nacos 可以作为 Seata 的配置中心来管理全局事务配置,同时也可以作为服务注册中心来管理 Seata Server 的服务发现。以下详细说明 Seata Server 与 Nacos 的兼容性及集成方法。 #### 兼容性要求 Seata Server 与 Nacos 的兼容性主要取决于版本匹配。通常情况下,Seata 的较新版本(如 1.4.0 及以上)均支持 Nacos 1.x 版本。例如,Seata 1.4.0 及以上版本兼容 Nacos 1.4.1 或更高版本[^3]。需要注意的是,若使用 MySQL 作为持久化存储,应确保 MySQL 驱动版本与 Seata 兼容,尤其是 MySQL 8.x 的支持情况[^4]。 #### 集成方法 ##### 1. 配置 Nacos 作为注册中心 在 `registry.conf` 文件中配置 Nacos 作为注册中心,确保 Seata Server 能够注册到 Nacos 并被其他服务发现。 ```properties registry { type = "nacos" nacos { application = "seata-server" serverAddr = "127.0.0.1:8848" group = "DEFAULT_GROUP" namespace = "" cluster = "default" username = "" password = "" } } ``` 上述配置中,`serverAddr` 指向 Nacos 服务的地址,`group` 表示 Nacos 中的组名,`namespace` 用于多租户隔离(可为空),`cluster` 表示 Seata Server 所属的集群名称[^4]。 ##### 2. 配置 Nacos 作为配置中心 在 `config.conf` 文件中配置 Nacos 作为配置中心,确保 Seata Server 能够从 Nacos 获取配置。 ```properties config { type = "nacos" nacos { serverAddr = "127.0.0.1:8848" namespace = "" group = "SEATA_GROUP" username = "" password = "" dataId = "seataServer.properties" } } ``` 上述配置中,`dataId` 指定 Nacos 中存储 Seata 配置的文件名,`group` 表示配置文件所属的组[^4]。 ##### 3. 导入配置到 Nacos 使用 `nacos-config.sh` 脚本将 `config.txt` 中的配置导入到 Nacos 中。`config.txt` 文件可以从 Seata 的 GitHub 仓库中获取。 ```bash ./nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP ``` 该命令将 `config.txt` 中的所有配置项导入到 Nacos 中,并按需分组。可以指定 `-t` 参数来指定命名空间 ID[^1]。 ##### 4. 服务端配置与启动 在部署 Seata Server 时,可以通过 Docker 或直接运行 JAR 文件的方式启动。若使用 Docker 部署,可以在 `docker-compose.yml` 文件中配置环境变量和挂载的配置文件。 ```yaml version: "3.1" services: seata-server: image: seataio/seata-server:1.6.1 ports: - "7091:7091" - "8091:8091" environment: - STORE_MODE=db - SEATA_IP=192.168.0.100 - SEATA_PORT=8091 volumes: - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime" - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone" - "./seata-server/resources:/seata-server/resources" ``` 上述配置中,`STORE_MODE` 设置为 `db` 表示使用数据库作为存储模式,`SEATA_IP` 和 `SEATA_PORT` 用于指定 Seata Server 的注册地址[^2]。 ##### 5. 客户端集成 在 Spring Boot 应用中集成 Seata 客户端时,需要在 `pom.xml` 中引入 Seata 和 Nacos 的依赖。 ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> </dependency> ``` 在 `application.yml` 中配置 Seata 的相关属性。 ```yaml seata: tx-service-group: default_tx_group service: vgroup-mapping: default_tx_group: default registry: type: nacos nacos: namespace: ba144b64-05c1-4fee-972f-81fd0498a236 group: SEATA_GROUP application: seata-server ``` 在业务方法上添加 `@GlobalTransactional` 注解,以启用全局事务管理。 ```java @GlobalTransactional public void businessMethod() { // 业务逻辑 } ``` 上述配置中,`tx-service-group` 指定事务逻辑分组名称,`vgroup-mapping` 配置逻辑分组与集群的映射关系[^3]。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值