Nacos集群环境搭建

1 篇文章 0 订阅
一、软件下载nacos-server-1.4.1.tar.gz

下载地址:https://github-releases.githubusercontent.com/137451403/e86c1e80-571d-11eb-9c3b-749b45cafe90?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210803%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210803T022625Z&X-Amz-Expires=300&X-Amz-Signature=2e904eaf6be533aebfee94c998d3e8cabec5486fb5d946771b0756f4d22a0b9e&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=137451403&response-content-disposition=attachment%3B filename%3Dnacos-server-1.4.1.tar.gz&response-content-type=application%2Foctet-stream

说明:我们安装环境为centos7.7,nacos的版本与springboot、seata的版本有兼容性问题,所以在选择nacos时,这点得注意,我们选择的是1.4.1版本,对应springboot的2.3.5.RELEASE、seata的1.4.0版本,下面把相关的maven版本列出来,以便大家在选择版本可以避免很多坑

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xx.xx.xx</groupId>
  <artifactId>xx-xx</artifactId>
  <packaging>pom</packaging>
  <version>1.0</version>
  <modules>
  </modules>
  <name>xx-xx</name>
  <url>http://www.example.com</url>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <seataversion>2.3.5.RELEASE</version>
    <relativePath/>
  </parent>
  <propertie>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <swagger-version>2.6.1</swagger-version>
    <swagger-version>2.6.1</swagger-version>
    <seata-version>1.4.0</seata-version>
    <spring.cloud.version>Hoxton.SR9</spring.cloud.version>
    <spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      <version>${spring.cloud.alibaba.version}</version>
    </dependency>
     <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
       <version>${spring.cloud.alibaba.version}</version>
    </dependency>
    <!-- Dubbo Spring Cloud Starter -->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-dubbo</artifactId>
      <version>${spring.cloud.alibaba.version}</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
      <version>${spring.cloud.alibaba.version}</version>
      <exclusions>
        <exclusion>
          <groupId>io.seata</groupId>
          <artifactId>seata-spring-boot-starter</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.seata</groupId>
      <artifactId>seata-spring-boot-starter</artifactId>
      <version>${seata-version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
    </dependency>
    <!--jwt-->
    <dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.7.0</version>
    </dependency>
    <dependency>
      <groupId>com.auth0</groupId>
      <artifactId>java-jwt</artifactId>
      <version>3.4.0</version>
    </dependency>
    <!--jwt-->
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring.cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${spring.cloud.alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.11</version>
      </dependency>
      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${swagger-version}</version>
      </dependency>
      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${swagger-version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>swagger-bootstrap-ui</artifactId>
        <version>1.9.6</version>
      </dependency>

      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.2</version>
      </dependency>
      <dependency>
        <groupId>com.github.penggle</groupId>
        <artifactId>kaptcha</artifactId>
        <version>2.3.2</version>
      </dependency>
      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.0.3</version>
      </dependency>
      <dependency>
        <groupId>org.jgroups</groupId>
        <artifactId>jgroups</artifactId>
        <version>3.6.2.Final</version>
      </dependency>
      <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>7.9.1</version>
      </dependency>
      <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>7.9.1</version>
      </dependency>
      <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-client</artifactId>
        <version>7.9.1</version>
      </dependency>
      <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>7.9.1</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.paho</groupId>
        <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
        <version>1.2.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.3</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.51</version>
      </dependency>
     <!-- <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.1.0</version>
      </dependency>-->
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-data</artifactId>
        <version>4.1.0.RELEASE</version>
      </dependency>

      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.18</version>
      </dependency>
      <!--quartz-->
      <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.3</version>
      </dependency>
      <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz-jobs</artifactId>
        <version>2.2.3</version>
      </dependency>

      <dependency>
        <groupId>com.alipay.sdk</groupId>
        <artifactId>alipay-sdk-java</artifactId>
        <version>3.7.4.ALL</version>
      </dependency>
      <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>4.1.4</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
      </dependency>
      <!-- logstash依赖包-->
      <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>4.11</version>
      </dependency>
      <dependency>
        <groupId>p6spy</groupId>
        <artifactId>p6spy</artifactId>
        <version>3.8.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>4.5.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-common</artifactId>
        <version>4.5.0</version>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.3</version>
      </dependency>
      <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.3.0</version>
      </dependency>

      <dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth2</artifactId>
        <!-- 指明版本,解决redis存储出现的问题:java.lang.NoSuchMethodError: org.springframework.data.redis.connection.RedisConnection.set([B[B)V问题 -->
        <version>2.3.3.RELEASE</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-spring-context -->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.2.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>2.1.2.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>com.nimbusds</groupId>
        <artifactId>nimbus-jose-jwt</artifactId>
        <version>8.16</version>
      </dependency>
      <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.3.5</version>
      </dependency>
      <dependency>
        <groupId>com.github.tobato</groupId>
        <artifactId>fastdfs-client</artifactId>
        <version>1.27.2</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <repositories>
    <repository>
      <id>spring-milestones</id>
      <name>Spring Milestones</name>
      <url>https://repo.spring.io/milestone</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
二、集群安装

1、我们nacos持久化的数据放在mysql5.7数据库,所以先建mysql数据,请自建(我们用的tidb,使用是一样的)

数据库名:nacos
用户名:nacos
密码:nacos123456

2、将nacos-server-1.4.1.tar.gz压缩里面的conf/nacos-mysql.sql,导入到数据库,如下图所示
在这里插入图片描述
3、配置文件cluster.conf修改,将nacos-server-1.4.1.tar.gz上传至服务器/data目录

cd /data
tar xvf nacos-server-1.4.1.tar.gz
cd /data/nacos-1.4.1/conf
cp cluster.conf.example cluster.conf
vi cluster.conf

关键配置如下(server01、server02、server03为服务器hostname,请自行配置):

#2021-07-21T16:07:45.066
server01:8848
server01:8848
server01:8848

4、配置文件application.properties修改

vi application.properties

关键配置如下

server.port=8848
nacos.inetutils.ip-address=server01
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://server01:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos123456
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

说明:三台服务不同配置点为
nacos.inetutils.ip-address,修改为对应服务器的ip即可

5、启动

cd /data/nacos-1.4.1/bin
sh startup.sh

6、验证,浏览器打开地址:http://你的ip:8848/nacos/ 用户名密码默认:nacos/nacos (之前配置的数据库中users表中)
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
概述: Nacos是一个开源的分布式服务发现、配置管理和服务管理平台,支持多种语言和多种部署模式。本文将介绍如何建一个Nacos集群。 环境: - 操作系统:CentOS 7.6 - Nacos版本:1.4.1 - JDK版本:1.8 步骤: 1. 下载Nacos: 进入Nacos的官网(https://github.com/alibaba/nacos/releases),选择需要的版本进行下载。 下载完成后,将压缩包解压到服务器的/opt目录下。 2. 配置数据库: Nacos支持多种数据库,本文使用MySQL作为示例。 创建一个名为nacos的数据库,并创建一个名为nacos_config的表。 CREATE DATABASE nacos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE nacos; CREATE TABLE `nacos_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `data_id` varchar(256) CHARACTER SET utf8mb4 NOT NULL, `group_id` varchar(128) CHARACTER SET utf8mb4 NOT NULL, `content` longtext CHARACTER SET utf8mb4 NOT NULL, `md5` varchar(32) CHARACTER SET utf8mb4 DEFAULT NULL, `gmt_create` datetime NOT NULL, `gmt_modified` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_data_id_group_id` (`data_id`,`group_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 3. 修改配置文件: 进入Nacos的conf目录,将nacos-mysql.sql改名为nacos-mysql.sql.tmp。 将nacos-mysql.sql.tmp文件复制一份,改名为nacos-mysql.sql。 修改nacos-mysql.sql文件,将其中的${db_user}、${db_password}和${db_name}替换为自己的MySQL数据库用户名、密码和数据库名。 执行以下命令创建数据表: mysql -h127.0.0.1 -uroot -p < nacos-mysql.sql 进入Nacos的conf目录,修改application.properties文件,将其中的以下配置项修改为自己的配置: spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=123456 4. 启动Nacos: 进入Nacos的bin目录,执行以下命令启动Nacos: sh startup.sh -m standalone Nacos将在默认端口8848启动,可以通过浏览器访问http://127.0.0.1:8848/nacos/查看是否成功启动。 5. 配置集群: 将Nacos的conf目录下的cluster.conf.example文件复制为cluster.conf。 修改cluster.conf文件,将其中的IP地址改为自己的服务器IP地址,多个IP地址以逗号分隔。 例如: 192.168.1.101:8848 192.168.1.102:8848 192.168.1.103:8848 将修改后的cluster.conf文件分别复制到其他Nacos服务器的conf目录下。 6. 启动集群: 在其他Nacos服务器上执行步骤4和5,启动Nacos集群。 执行以下命令查看集群状态: curl -X GET "http://127.0.0.1:8848/nacos/v1/ns/operator/raft/peer?pretty=true" 如果返回的结果中包含多个节点的IP地址,则说明集群建成功。 7. 测试: 在Nacos控制台上添加一个配置,例如: Data ID:test Group:DEFAULT_GROUP Content:hello world 然后在其他Nacos服务器上查看该配置是否同步过来。 执行以下命令从其他Nacos服务器获取该配置: curl -X GET "http://192.168.1.103:8848/nacos/v1/cs/configs?dataId=test&group=DEFAULT_GROUP&tenant=&show=all" 如果返回的结果中包含hello world,则说明配置同步成功。 总结: 通过以上步骤,我们成功建了一个Nacos集群Nacos集群可以提高服务发现、配置管理和服务管理的可靠性和性能,并且可以支持更多的应用场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值