CentOS7 部署 Nacos 集群

柔情似水 2024-07-17 ⋅ 16 阅读

介绍

Nacos 是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。在微服务架构中,Nacos 可以实现服务注册与发现、配置管理、流量管理等功能,为开发者提供了高效便捷的服务管理解决方案。

本文将介绍如何在 CentOS 7 上部署 Nacos 集群,确保系统稳定和高可用性。

环境准备

在开始之前,确保您已准备好以下环境:

  • 一台具备 CentOS 7 操作系统的服务器,最好是多台用于部署集群。
  • JDK 1.8 以上版本已安装并配置好。
  • root 权限或者 sudo 权限。

安装步骤

1. 下载 Nacos

在 Nacos 的官方 GitHub 仓库中下载 Nacos 的最新版本,并解压:

$ wget https://github.com/alibaba/nacos/releases/download/${VERSION}/nacos-server-${VERSION}.tar.gz
$ tar -zxvf nacos-server-${VERSION}.tar.gz

2. 修改配置文件

进入解压后的 Nacos 目录,修改 conf/application.properties 文件,按照需要配置以下参数:

server.port=8848
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

3. 创建数据库

在 MySQL 数据库中创建一个名为 nacos 的数据库,并执行以下 SQL 脚本创建相关数据表:

CREATE DATABASE IF NOT EXISTS nacos DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

USE nacos;

DROP TABLE IF EXISTS `config_info`;

CREATE TABLE `config_info` (
  `data_id` varchar(256) COLLATE utf8_bin NOT NULL COMMENT 'data id',
  `group_id` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'group id',
  `content` longtext COLLATE utf8_bin NOT NULL COMMENT 'content',
  `md5` varchar(32) COLLATE utf8_bin NOT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL COMMENT 'created time',
  `gmt_modified` datetime NOT NULL COMMENT 'modified time',
  PRIMARY KEY (`data_id`,`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='configuration information';

INSERT INTO `config_info` VALUES ('nacos-config', 'DEFAULT_GROUP', 'config info for nacos', '', NOW(), NOW());

DROP TABLE IF EXISTS `config_info_beta`;

CREATE TABLE `config_info_beta` LIKE `config_info`;

DROP TABLE IF EXISTS `config_info_tag`;

CREATE TABLE `config_info_tag` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增 ID',
  `tag_name` varchar(32) COLLATE utf8_bin NOT NULL,
  `config_id` bigint(20) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `config_id_tag_name` (`tag_name`,`config_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='configuration tag';

DROP TABLE IF EXISTS `group_capacity`;

CREATE TABLE `group_capacity` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增 ID',
  `group_id` varchar(128) COLLATE utf8_bin NOT NULL,
  `quota` int(11) NOT NULL,
  `usage` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='quota of each group';

INSERT INTO `group_capacity` VALUES (1, 'SEATA_GROUP', -1, 0);

DROP TABLE IF EXISTS `switches`;

CREATE TABLE `switches` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增 ID',
  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '-1:close;1:open',
  `entry_id` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'entry id',
  `entry_desc` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'entry desc',
  PRIMARY KEY (`id`),
  UNIQUE KEY `entry_id` (`entry_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='switch of function';

INSERT INTO `switches` VALUES (1, 1, 'dumpTaskInterval', 'flush disk interval'),
  (2, 1, 'heartbeatLostTimeout', 'Universal configuration of Heartbeat loss determination in the server list'),
  (3, 1, 'isolationTimeoutMillis', 'Push message isolation time(s)'),
  (4, 1, 'isolationMergeRate', 'Push message hold frequency'),
  (5, 1, 'nacos.core.exception.push.delay.time', 'The delay time for push exception'),
  (6, 1, 'nacos.core.cache.task.interval', 'The timing task of cache refresh'),
  (7, 1, 'nacos.core.http.client.request.timeout', 'Request timeout of HTTP client'),
  (8, 1, 'nacos.core.http.client.max.retry', 'The maximum number of retries of HTTP client'),
  (9, 1, 'nacos.core.http.client.port', 'HTTP client TIMEOUT reading port'),

  (10, 1, 'nacos.core.switch.persist', 'Whether to persist the switched item'),
  (11, 1, 'nacos.metaspace.server.port', 'The port of the MetaSpace service'),
  (12, -1, 'send.time', 'Force sending timestamp'),
  (13, 1, 'snapshot.writeDelayMillis', 'snapshot write Delayed write time interval of log'),

  (14, 1, 'skipHealthCheckFields', 'Configuration replication parameter filtration'),
  (15, 1, 'skipReadConfigField', 'Use the specified configuration publishing address'),
  (16, -1, 'start.time', 'Stop publishing timestamp');

4. 配置集群

在 Nacos 目录下的 conf/cluster.conf 文件中配置集群节点 IP 和端口,例如:

192.168.1.1:8848
192.168.1.2:8848
192.168.1.3:8848

5. 启动 Nacos

执行以下命令分别在不同的服务器上启动 Nacos 节点:

$ sh bin/startup.sh -m standalone

6. 验证

在浏览器中访问其中一个 Nacos 节点的管理页面:http://IP:8848/nacos,使用默认的用户名和密码 nacos/nacos 登录。

持续集成与持续部署

为了实现持续集成与持续部署,可以使用 Jenkins、GitLab CI/CD 等工具和流程,将 Nacos 的安装和部署流程自动化。

下面是一个使用 Jenkins 的示例流程:

  1. 安装 Jenkins,并配置好 GitLab 的 Webhooks。
  2. 新建一个 Jenkins 项目,并关联 GitLab 仓库。
  3. 在 Jenkins 项目配置中,设置触发器为 GitLab Webhooks。
  4. 配置构建步骤,包括下载 Nacos、修改配置文件、创建数据库、启动 Nacos 等。
  5. 将该 Jenkins 项目配置为多分支流水线。
  6. 提交代码到 GitLab 仓库,并触发 Jenkins 构建流程。

通过以上设置,每当有新的代码提交到 GitLab 仓库时,Jenkins 将自动构建和部署 Nacos 项目。

结论

通过本文,我们学习了在 CentOS 7 上部署 Nacos 集群的步骤,并进一步了解了持续集成和持续部署的实践。

希望这篇文章可以帮助您顺利部署 Nacos 集群,并提供可靠的服务注册与发现、配置管理功能。

如有任何问题,请随时在评论中提问。


全部评论: 0

    我有话说: