从0到1搭建Nacos2.0.2集群(centos7)

文章目录

  • 一、安装JDK8
    • 1.1、下载JDK8
    • 1.2、上传压缩包到服务器
    • 1.3、配置环境变量
    • 1.4、测试是否配置成功
  • 二、安装Nginx
    • 2.1、安装所需插件
      • 2.1.1、GCC
      • 2.1.2、pcre、pcre-devel
      • 2.1.3、zlib
      • 2.1.4、openssl
    • 2.2、Nginx的下载
    • 2.3、上传Nginx压缩包到服务器
    • 2.4、安装Nginx
    • 2.5、测试是否安装成
  • 三、搭建nacos 2.0.2集群
    • 3.1、下载nacos
    • 3.2、上传压缩包到服务器
    • 3.3、修改nacos的持久化方式为mysql
    • 3.4、修改nacos集群配置
    • 3.4、复制出三份nacos启动程序
    • 3.5、启动三个nacos服务
    • 3.7、配置nginx
    • 3.8、访问测试
  • 四、nacos1.x与nacos2.x集群搭建的注意事项(大坑)

搭建过程所需文件:JDK8、Niginx1.20.1、nacos2.0.2

一、安装JDK8

nacos的运行需要JDK环境的支持,此处安装的是JDK8

1.1、下载JDK8

JDK8下载
从0到1搭建Nacos2.0.2集群(centos7)_第1张图片
点击压缩包版本jdk-8u291-linux-x64.tar.gz进行下载
Oracle帐号:[email protected]
Oracle密码:Oracle123

1.2、上传压缩包到服务器

下载完成后,通过scp命令将压缩包上传到服务器
scp D:\software\jdk-8u291-linux-x64.tar.gz [email protected]:/usr/local/java
注意:
1、将D:\software\jdk-8u291-linux-x64.tar.gz修改为jdk压缩包所在位置
2、将root修改为登录服务器的用户名
3、将47.115.9.128修改为服务器ip
4、将/usr/local/java修改为压缩包上传到服务器的位置,文件夹必须存在

上传完成后,切换到压缩包所在位置,执行tar -zxvf jdk-8u291-linux-x64.tar.gz命令解压压缩包。

1.3、配置环境变量

执行vim /etc/profile命令编辑配置文件,将下面的内容插入到相应的位置,注意将/usr/local/java/jdk1.8.0_291修改为自己的jdk路径。

export JAVA_HOME=/usr/local/java/jdk1.8.0_291
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

从0到1搭建Nacos2.0.2集群(centos7)_第2张图片
编辑完成后保存退出,然后执行命令source /etc/profile使配置生效。

1.4、测试是否配置成功

执行java -version,出现类似下面的内容则代表成功安装JDK并配置了环境变量。
在这里插入图片描述

二、安装Nginx

2.1、安装所需插件

2.1.1、GCC

1、执行gcc -v
若出现类似提示则需要安装gcc
在这里插入图片描述
若出现类似如下提示则无需安装:
从0到1搭建Nacos2.0.2集群(centos7)_第3张图片

2、执行yum -y install gcc命令进行安装GCC
从0到1搭建Nacos2.0.2集群(centos7)_第4张图片
没有报错则代表安装成功,此时执行gcc -v命令可查看到相应版本号。

2.1.2、pcre、pcre-devel

pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式。
执行yum install -y pcre pcre-devel命令进行安装。
从0到1搭建Nacos2.0.2集群(centos7)_第5张图片

2.1.3、zlib

zlib库提供了很多种压缩和解压缩方式,nginx需要使用zlib对http包的内容进行gzip。
执行yum install -y zlib zlib-devel命令进行安装。
从0到1搭建Nacos2.0.2集群(centos7)_第6张图片

2.1.4、openssl

openSSL是web安全相关的插件。
执行yum install -y openssl openssl-devel命令进行安装。
从0到1搭建Nacos2.0.2集群(centos7)_第7张图片

2.2、Nginx的下载

下载Nginx1.20.1

2.3、上传Nginx压缩包到服务器

下载完成后,通过scp命令将压缩包上传到服务器
scp D:\software\nginx-1.20.1.tar.gz [email protected]:/usr/local/nginx
在这里插入图片描述
注意:
1、将D:\software\nginx-1.20.1.tar.gz修改为nginx压缩包所在位置
2、将root修改为登录服务器的用户名
3、将36.137.197.165修改为自己的服务器ip
4、将/usr/local/nginx修改为压缩包上传到服务器的位置,文件夹必须存在
上传完成后,切换到压缩包所在位置,执行tar -zxvf nginx-1.20.1.tar.gz命令解压压缩包。

2.4、安装Nginx

1、切换到解压后的目录下
从0到1搭建Nacos2.0.2集群(centos7)_第8张图片
2、执行命令./configure
从0到1搭建Nacos2.0.2集群(centos7)_第9张图片3、执行命令make
从0到1搭建Nacos2.0.2集群(centos7)_第10张图片

4、执行命令make install
从0到1搭建Nacos2.0.2集群(centos7)_第11张图片

2.5、测试是否安装成

切换到/usr/local/nginx/sbin目录下,执行./nginx命令启动nginx。
启动nginx后,执行ps -ef | grep nginx出现以下信息代表nginx已安装成功。
在这里插入图片描述
执行./nginx -s stop可关闭nginx。

三、搭建nacos 2.0.2集群

3.1、下载nacos

下载nacos
从0到1搭建Nacos2.0.2集群(centos7)_第12张图片

3.2、上传压缩包到服务器

下载完成后,通过scp命令将压缩包上传到服务器
scp D:\software\nacos-server-2.0.2.tar.gz [email protected]:/nacos
注意:
1、将D:\software\nacos-server-2.0.2.tar.gz修改为nacos压缩包所在位置
2、将root修改为登录服务器的用户名
3、将36.137.197.165修改为自己的服务器ip
4、将/nacos修改为压缩包上传到服务器的位置,文件夹必须存在

上传完成后,切换到压缩包所在位置,执行tar -zxvf nacos-server-2.0.2.tar.gz命令解压压缩包。

3.3、修改nacos的持久化方式为mysql

1、进入到解压后的文件夹下的conf目录,执行命令vim application.properties修改配置
修改前
从0到1搭建Nacos2.0.2集群(centos7)_第13张图片
修改后

从0到1搭建Nacos2.0.2集群(centos7)_第14张图片

spring.datasource.platform=mysql
# 不是Mysql8的话,不需要驱动配置
jdbc.DriverClassName=com.mysql.cj.jdbc.Driver
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user.0=person
db.password.0=Zyq666360

2、创建nacos_config数据库,并执行nacos提供的nacos-mysql.sql脚本
mysql.sql

/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(50) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
	`username` varchar(50) NOT NULL PRIMARY KEY,
	`password` varchar(500) NOT NULL,
	`enabled` boolean NOT NULL
);

CREATE TABLE `roles` (
	`username` varchar(50) NOT NULL,
	`role` varchar(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

3.4、修改nacos集群配置

1、进入到解压后的文件夹下的conf目录,执行cp cluster.conf.example cluster.conf命令,复制出一份用于配置集群节点的配置文件cluster.conf
在这里插入图片描述2、执行命令hostname -i获取内网ip
在这里插入图片描述
3、执行vim cluster.conf命令修改配置文件
初始文件
从0到1搭建Nacos2.0.2集群(centos7)_第15张图片
修改后
从0到1搭建Nacos2.0.2集群(centos7)_第16张图片
192.168.0.7为上一步获取的内网ip,884088508860为之后三个nacos服务运行的端口。

4、修改配置文件application.properties
将运行端口设置为8840,该服务将作为第一个节点。
从0到1搭建Nacos2.0.2集群(centos7)_第17张图片
5、修改运行内存(非必须,服务器内存充足可略过)
切换到bin目录下
在这里插入图片描述
执行命令vim startup.sh修改启动程序,将集群模式下的堆内存与栈内存大小修改为128m。
修改前
从0到1搭建Nacos2.0.2集群(centos7)_第18张图片
修改后
从0到1搭建Nacos2.0.2集群(centos7)_第19张图片

3.4、复制出三份nacos启动程序

1、切换到解压出nacos压缩包的目录
在这里插入图片描述
2、执行mv nacos nacos-8840命令,将/nacos目录下的nacos目录重命名为nacos-8840

3、执行cp nacos-8840 nacos-8850命令,复制出第二份nacos启动程序nacos-8850

4、执行cp nacos-8840 nacos-8860命令,复制出第三份nacos启动程序nacos-8860
在这里插入图片描述
5、分别进入nacos-8850/confnacos-8860/conf目录下,将其application.properties配置文件中的server.port修改为88508860
从0到1搭建Nacos2.0.2集群(centos7)_第20张图片

3.5、启动三个nacos服务

1、分别进入/nacos/nacos-8840/bin/nacos/nacos-8850/bin/nacos/nacos-8860/bin目录下,执行命令./startup.sh启动nacos服务。

2、检查nacos是否启动成功
执行netstat命令检查对于端口。
从0到1搭建Nacos2.0.2集群(centos7)_第21张图片
出现三个处于LISTEN状态的进程则代表三个nacos服务都启动成功了,接下来只需要配置一层nginx反向代理。

3.7、配置nginx

1、切换到nginx的conf目录下
在这里插入图片描述
2、执行命令vim nginx.conf修改配置文件
修改前
从0到1搭建Nacos2.0.2集群(centos7)_第22张图片
修改后
从0到1搭建Nacos2.0.2集群(centos7)_第23张图片

3、切换到sbin目录下,并执行命令./nginx -c /usr/local/nginx/conf/nginx.conf指定配置文件启动nginx服务器
在这里插入图片描述

3.8、访问测试

访问nginx服务器监听的8848端口,负载均衡访问运行在884088508860的nacos集群。
从0到1搭建Nacos2.0.2集群(centos7)_第24张图片
输入默认用户名密码nacos进行登录,并查看nacos集群节点。
从0到1搭建Nacos2.0.2集群(centos7)_第25张图片

四、nacos1.x与nacos2.x集群搭建的注意事项(大坑)

从0到1搭建Nacos2.0.2集群(centos7)_第26张图片
因为这个改动,在一台机器上部署nacos集群时,不能将运行端口设置为连续端口,比如884188428843,否则会发生端口冲突。
运行在8841端口nacos服务实际上会占用884189418942三个端口;
运行在8842端口nacos服务实际上会占用884289428943三个端口;
运行在8843端口nacos服务实际上会占用884389438944三个端口;

你可能感兴趣的:(SpringCloud,nginx,linux,nacos,jdk1.8,集群)