跳到主要内容

Nacos、Seata和Sentinel部署

流程概览

image-20220615172436760

前置工作

需要您部署好mysql、redis、elaticsearch、rabbitmq 这些基础设施。详情参考:基础设施部署

nacos配置文件准备

nacos的安装

参见:Nacos支持三种部署模式

基于docker部署文档:Nacos安装文档

nacos配置文件导入

tip

我们已经准备好了seata和javashop在nacos中的配置包,需要导入到nacos,然后在修改相应的配置项

请下载下面的两个文件包导入到nacos中:

javashop-nacos配置文件包

seata-nacos配置文件包

注意:

  • seata的group是: SEATA_GROUP
  • javashop的group是:DEFAULT_GROUP

seata的安装与配置

Seata服务端配置

在启动seata server之前我们需要配置好seata相关参数,我们可以选择使用数据库来持久化,相应的配置文件为:

groupdataid说明
SEATA_GROUPstore.mode根据情况选择:redis、db

创建seata所用的数据库,并导入如下sql:

seata.sql

然后修改如下配置:

dataid说明可选值
store.db.datasourcedb模式数据源类型dbcp、druid、hikari;无默认值,store.mode=db时必须指定。
store.db.dbTypedb模式数据库类型mysql、oracle、db2、sqlserver、sybaee、h2、sqlite、access、postgresql、oceanbase;无默认值,store.mode=db时必须指定。
store.db.driverClassNamedb模式数据库驱动
store.db.urldb模式数据库url
store.db.userdb模式数据库账户
store.db.passworddb模式数据库密码

Seata服务启动

经过上述配置文件的修改,我们已经做好了seata的启动工作。

默认使用docker,非docker版

创建配置文件,执行

cd /opt/data
mkdir seata-config
vi registry.conf

粘贴如下内容(注意修改那nacos连接地址):

registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "192.168.2.186:8848"
group = "SEATA_GROUP"
namespace = "public"
cluster = "default"
username = "nacos"
password = "nacos"
}
}

config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "192.168.2.186:8848"
namespace = "public"
group = "SEATA_GROUP"
username = "nacos"
password = "nacos"
}
}

执行创建命令(注意修改SEATA_IP为服务器内网ip)

docker run --rm -d --name seata-server \
-p 8091:8091 \
-e SEATA_IP=192.168.2.186 \
-e SEATA_PORT=8091 \
-e SERVER_NODE=1 \
-e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
-v /opt/data/seata-config:/root/seata-config \
registry.cn-beijing.aliyuncs.com/javashop-k8s-images/seata:1.3.0

验证,查看nacos中的服务列表:

image3

修改seata-client端的配置

javashop已经集成了seata client,相关的配置在DEFAULT_GROUP.seata-client.yaml中,关键配置为registry.server-addr,需要修改成nacos的地址

image4

其他配置参数意义请参考:

Seata 参数配置

集群版参考:

Seata 集群版

sentinel控制台

第一步:安装

docker run --rm -d -p 8081:8080 --name=sentinel registry.cn-beijing.aliyuncs.com/javashop-k8s-images/sentinel-dashboard:1.8.0

参考:

非docker参考sentinel控制台

第二步:修改sentinel控制台地址

Javashop已经集成了sentinel的客户端,需要我们在配置中心修改相应的地址,配置文件位置为:DEFAULT_GROUP.sentinel.yaml,我们需要修改spring.cloud.sentinel中相应的参数:

注:修改sentinel控制台地址,用上面命令端口应该是8081,ip为所在服务器IP地址

​ 修改nacos地址

image5

sentinel规则配置

在sentinel.yaml中指定了nacos作为配置规则数据源,规则的dataid规则为:

${spring.application.name}-{rule-type}-rules

如需指定某服务的sentinel规则,需要新建相应的配置。

配置文件修改

Javashop数据库参数配置

Javashop每个服务的数据库需要单独配置,配置文件位置见下表:

groupdataid说明
DEFAULT_GROUPsystem-service.yaml系统服务数据库
DEFAULT_GROUPtrade-service.yaml交易服务数据库
DEFAULT_GROUPstatistics-service.yaml统计服务数据库
DEFAULT_GROUPpromotion-service.yaml促销服务数据库
DEFAULT_GROUPpayment-service.yaml支付服务数据库
DEFAULT_GROUPmember-service.yaml会员服务数据库
DEFAULT_GROUPlive-video-service.yaml直播服务数据库
DEFAULT_GROUPgoods-service.yaml商品服务数据库
DEFAULT_GROUPconsumer.yaml消费者服务数据库
DEFAULT_GROUPdistribution-service.yaml分销服务数据库

分别打开上述配置文件,编辑其中的数据库参数:

image-20220225172108115

其他基础设施的配置

其他基础设施:nacos发现服务、redis、elasticsearch、rabbitmq配置在 DEFAULT_GROUP.common.yaml中:

image

请根据具体情况设置相应参数