搭建过程所需文件:JDK8、Niginx1.20.1、nacos2.0.2
一、安装JDK8
nacos的运行需要JDK环境的支持,此处安装的是JDK8
1.1、下载JDK8
JDK8下载
点击压缩包版本jdk-8u291-linux-x64.tar.gz
进行下载
Oracle帐号:2696671285@qq.com
Oracle密码:Oracle123
1.2、上传压缩包到服务器
下载完成后,通过scp
命令将压缩包上传到服务器
scp D:\software\jdk-8u291-linux-x64.tar.gz root@36.137.197.165:/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
编辑完成后保存退出,然后执行命令source /etc/profile
使配置生效。
1.4、测试是否配置成功
执行java -version
,出现类似下面的内容则代表成功安装JDK并配置了环境变量。
二、安装Nginx
2.1、安装所需插件
2.1.1、GCC
1、执行gcc -v
若出现类似提示则需要安装gcc
若出现类似如下提示则无需安装:
2、执行yum -y install gcc
命令进行安装GCC
没有报错则代表安装成功,此时执行gcc -v
命令可查看到相应版本号。
2.1.2、pcre、pcre-devel
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式。
执行yum install -y pcre pcre-devel
命令进行安装。
2.1.3、zlib
zlib库提供了很多种压缩和解压缩方式,nginx需要使用zlib对http包的内容进行gzip。
执行yum install -y zlib zlib-devel
命令进行安装。
2.1.4、openssl
openSSL是web安全相关的插件。
执行yum install -y openssl openssl-devel
命令进行安装。
2.2、Nginx的下载
2.3、上传Nginx压缩包到服务器
下载完成后,通过scp
命令将压缩包上传到服务器
scp D:\software\nginx-1.20.1.tar.gz root@36.137.197.165:/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、切换到解压后的目录下
2、执行命令./configure
3、执行命令
make
4、执行命令make install
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
3.2、上传压缩包到服务器
下载完成后,通过scp
命令将压缩包上传到服务器
scp D:\software\nacos-server-2.0.2.tar.gz root@36.137.197.165:/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
修改配置
修改前
修改后
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
脚本
/*
* 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
命令修改配置文件
初始文件
修改后
192.168.0.7
为上一步获取的内网ip,8840
、8850
、8860
为之后三个nacos服务运行的端口。
4、修改配置文件application.properties
将运行端口设置为8840,该服务将作为第一个节点。
5、修改运行内存(非必须,服务器内存充足可略过)
切换到bin
目录下
执行命令vim startup.sh
修改启动程序,将集群模式下的堆内存与栈内存大小修改为128m。
修改前
修改后
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/conf
、nacos-8860/conf
目录下,将其application.properties
配置文件中的server.port修改为8850
、8860
3.5、启动三个nacos服务
1、分别进入/nacos/nacos-8840/bin
、/nacos/nacos-8850/bin
、/nacos/nacos-8860/bin
目录下,执行命令./startup.sh
启动nacos服务。
2、检查nacos是否启动成功
执行netstat
命令检查对于端口。
出现三个处于LISTEN
状态的进程则代表三个nacos服务都启动成功了,接下来只需要配置一层nginx反向代理。
3.7、配置nginx
1、切换到nginx的conf
目录下
2、执行命令vim nginx.conf
修改配置文件
修改前
修改后
3、切换到sbin
目录下,并执行命令./nginx -c /usr/local/nginx/conf/nginx.conf
指定配置文件启动nginx服务器
3.8、访问测试
访问nginx服务器监听的8848
端口,负载均衡访问运行在8840
、8850
、8860
的nacos集群。
输入默认用户名密码nacos进行登录,并查看nacos集群节点。
四、nacos1.x与nacos2.x集群搭建的注意事项(大坑)
因为这个改动,在一台机器上部署nacos集群时,不能将运行端口设置为连续端口,比如8841
、8842
、8843
,否则会发生端口冲突。
运行在8841
端口nacos服务实际上会占用8841
、8941
、8942
三个端口;
运行在8842
端口nacos服务实际上会占用8842
、8942
、8943
三个端口;
运行在8843
端口nacos服务实际上会占用8843
、8943
、8944
三个端口;