Nacos篇五 - Nacos集群(Linux下standalone模式和cluster模式)

Nacos支持三种部署模式

  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。

注:本文已Linux CentOS7系统为讲述如何部署单机模式(standalone)和集群模式(cluster);(虚拟机使用VMware)

老规矩环境准备

请确保是在环境中安装使用:

  1. 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
  2. 64 bit JDK 1.8+;下载.配置
  3. Maven 3.2.x+;下载.配置
  4. 集群需要依赖mysql,单机可不必
  5. 3个或3个以上Nacos节点才能构成集群。

1、单机模式

下载解压等步骤省略

1.1、Linux/Unix/Mac

sh startup.sh -m standalone

Linux下Nacos Server便开始运行。

1.2、支持mysql

在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:

  • 1.安装数据库,版本要求:5.6.5+
  • 2.初始化mysql数据库
  • 3.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
 
  1. # spring

  2.  
  3. server.contextPath=/nacos

  4. server.servlet.contextPath=/nacos

  5. server.port=8848

  6.  
  7. nacos.cmdb.dumpTaskInterval=3600

  8. nacos.cmdb.eventTaskInterval=10

  9. nacos.cmdb.labelTaskInterval=300

  10. nacos.cmdb.loadDataAtStart=false

  11.  
  12. db.num=1

  13. db.url.0=jdbc:mysql://10.51.10.128:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

  14. db.user=root

  15. db.password=123456

注:

  1. 这个的application.properties指nacos的解压目录nacos/的conf目录下的application.properties文件
  2. 这里的db具体配置根据自身情况而变

再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql

1.3、访问UI查看是否部署成功

在浏览器输入:http://10.51.10.128:8848/nacos/index.html

2、集群模式

2.1、配置集群配置文件

在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)

首先我们进入conf目录下,默认只有一个cluster.conf.example文件,我们需要自行复制一份,修改名称为cluster.conf

 
  1. cd /usr/local/nacos/config

  2. cp cluster.conf.example cluster.conf

然后使用vi编辑器 打开cluster.config,按a/i/o 键可进入插入模式,输入以下内容

 
  1. #ip:port

  2. 10.51.10.128:8848

  3. 10.51.10.129:8848

  4. 10.51.10.130:8848

然后按ESC键返回到命令模式,再按shif+:进入末行模式,输入wq敲回车(保存并退出)。

2.2、初始化mysql

没有可视化界面的Linux我们不便操作,所以对mysql的操作,我在windows下使用navicat连接到之前在linux中安装的mysql再进行操作

注:需要对linux进行联网和mysql远程连接授权,再放行我们所需的端口(图方便的伙伴在练习的时候可直接关闭防火墙)

新建一个名为nacos_config的数据库,在裤子执行下面的sql脚本文件。

.sql源文件

 
  1. /******************************************/

  2. /* 数据库全名 = nacos_config */

  3. /* 表名称 = config_info */

  4. /******************************************/

  5. CREATE TABLE `config_info` (

  6. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',

  7. `data_id` varchar(255) NOT NULL COMMENT 'data_id',

  8. `group_id` varchar(255) DEFAULT NULL,

  9. `content` longtext NOT NULL COMMENT 'content',

  10. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',

  11. `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',

  12. `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',

  13. `src_user` text COMMENT 'source user',

  14. `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',

  15. `app_name` varchar(128) DEFAULT NULL,

  16. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',

  17. `c_desc` varchar(256) DEFAULT NULL,

  18. `c_use` varchar(64) DEFAULT NULL,

  19. `effect` varchar(64) DEFAULT NULL,

  20. `type` varchar(64) DEFAULT NULL,

  21. `c_schema` text,

  22. PRIMARY KEY (`id`),

  23. UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)

  24. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

  25.  
  26. /******************************************/

  27. /* 数据库全名 = nacos_config */

  28. /* 表名称 = config_info_aggr */

  29. /******************************************/

  30. CREATE TABLE `config_info_aggr` (

  31. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',

  32. `data_id` varchar(255) NOT NULL COMMENT 'data_id',

  33. `group_id` varchar(255) NOT NULL COMMENT 'group_id',

  34. `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',

  35. `content` longtext NOT NULL COMMENT '内容',

  36. `gmt_modified` datetime NOT NULL COMMENT '修改时间',

  37. `app_name` varchar(128) DEFAULT NULL,

  38. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',

  39. PRIMARY KEY (`id`),

  40. UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)

  41. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';

  42.  
  43.  
  44. /******************************************/

  45. /* 数据库全名 = nacos_config */

  46. /* 表名称 = config_info_beta */

  47. /******************************************/

  48. CREATE TABLE `config_info_beta` (

  49. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',

  50. `data_id` varchar(255) NOT NULL COMMENT 'data_id',

  51. `group_id` varchar(128) NOT NULL COMMENT 'group_id',

  52. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',

  53. `content` longtext NOT NULL COMMENT 'content',

  54. `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',

  55. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',

  56. `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',

  57. `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',

  58. `src_user` text COMMENT 'source user',

  59. `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',

  60. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',

  61. PRIMARY KEY (`id`),

  62. UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)

  63. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

  64.  
  65. /******************************************/

  66. /* 数据库全名 = nacos_config */

  67. /* 表名称 = config_info_tag */

  68. /******************************************/

  69. CREATE TABLE `config_info_tag` (

  70. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',

  71. `data_id` varchar(255) NOT NULL COMMENT 'data_id',

  72. `group_id` varchar(128) NOT NULL COMMENT 'group_id',

  73. `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',

  74. `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',

  75. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',

  76. `content` longtext NOT NULL COMMENT 'content',

  77. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',

  78. `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',

  79. `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',

  80. `src_user` text COMMENT 'source user',

  81. `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',

  82. PRIMARY KEY (`id`),

  83. UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)

  84. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

  85.  
  86. /******************************************/

  87. /* 数据库全名 = nacos_config */

  88. /* 表名称 = config_tags_relation */

  89. /******************************************/

  90. CREATE TABLE `config_tags_relation` (

  91. `id` bigint(20) NOT NULL COMMENT 'id',

  92. `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',

  93. `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',

  94. `data_id` varchar(255) NOT NULL COMMENT 'data_id',

  95. `group_id` varchar(128) NOT NULL COMMENT 'group_id',

  96. `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',

  97. `nid` bigint(20) NOT NULL AUTO_INCREMENT,

  98. PRIMARY KEY (`nid`),

  99. UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),

  100. KEY `idx_tenant_id` (`tenant_id`)

  101. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

  102.  
  103. /******************************************/

  104. /* 数据库全名 = nacos_config */

  105. /* 表名称 = group_capacity */

  106. /******************************************/

  107. CREATE TABLE `group_capacity` (

  108. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',

  109. `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',

  110. `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',

  111. `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',

  112. `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',

  113. `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',

  114. `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',

  115. `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',

  116. `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',

  117. `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',

  118. PRIMARY KEY (`id`),

  119. UNIQUE KEY `uk_group_id` (`group_id`)

  120. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

  121.  
  122. /******************************************/

  123. /* 数据库全名 = nacos_config */

  124. /* 表名称 = his_config_info */

  125. /******************************************/

  126. CREATE TABLE `his_config_info` (

  127. `id` bigint(64) unsigned NOT NULL,

  128. `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

  129. `data_id` varchar(255) NOT NULL,

  130. `group_id` varchar(128) NOT NULL,

  131. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',

  132. `content` longtext NOT NULL,

  133. `md5` varchar(32) DEFAULT NULL,

  134. `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',

  135. `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',

  136. `src_user` text,

  137. `src_ip` varchar(20) DEFAULT NULL,

  138. `op_type` char(10) DEFAULT NULL,

  139. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',

  140. PRIMARY KEY (`nid`),

  141. KEY `idx_gmt_create` (`gmt_create`),

  142. KEY `idx_gmt_modified` (`gmt_modified`),

  143. KEY `idx_did` (`data_id`)

  144. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';

  145.  
  146.  
  147. /******************************************/

  148. /* 数据库全名 = nacos_config */

  149. /* 表名称 = tenant_capacity */

  150. /******************************************/

  151. CREATE TABLE `tenant_capacity` (

  152. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',

  153. `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',

  154. `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',

  155. `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',

  156. `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',

  157. `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',

  158. `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',

  159. `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',

  160. `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',

  161. `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',

  162. PRIMARY KEY (`id`),

  163. UNIQUE KEY `uk_tenant_id` (`tenant_id`)

  164. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';

  165.  
  166.  
  167. CREATE TABLE `tenant_info` (

  168. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',

  169. `kp` varchar(128) NOT NULL COMMENT 'kp',

  170. `tenant_id` varchar(128) default '' COMMENT 'tenant_id',

  171. `tenant_name` varchar(128) default '' COMMENT 'tenant_name',

  172. `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',

  173. `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',

  174. `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',

  175. `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',

  176. PRIMARY KEY (`id`),

  177. UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),

  178. KEY `idx_tenant_id` (`tenant_id`)

  179. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

  180.  
  181. CREATE TABLE users (

  182. username varchar(50) NOT NULL PRIMARY KEY,

  183. password varchar(500) NOT NULL,

  184. enabled boolean NOT NULL

  185. );

  186.  
  187. CREATE TABLE roles (

  188. username varchar(50) NOT NULL,

  189. role varchar(50) NOT NULL

  190. );

  191.  
  192. INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);

  193.  
  194. INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');

附上navicat图:

2.3、配置application.properties

这里的配置文件路径同1.3

 
  1. # spring

  2.  
  3. server.contextPath=/nacos

  4. server.servlet.contextPath=/nacos

  5. server.port=8848

  6.  
  7. nacos.cmdb.dumpTaskInterval=3600

  8. nacos.cmdb.eventTaskInterval=10

  9. nacos.cmdb.labelTaskInterval=300

  10. nacos.cmdb.loadDataAtStart=false

  11.  
  12.  
  13. # metrics for prometheus

  14. #management.endpoints.web.exposure.include=*

  15.  
  16. # metrics for elastic search

  17. management.metrics.export.elastic.enabled=false

  18. #management.metrics.export.elastic.host=http://localhost:9200

  19.  
  20. # metrics for influx

  21. management.metrics.export.influx.enabled=false

  22. #management.metrics.export.influx.db=springboot

  23. #management.metrics.export.influx.uri=http://localhost:8086

  24. #management.metrics.export.influx.auto-create-db=true

  25. #management.metrics.export.influx.consistency=one

  26. #management.metrics.export.influx.compressed=true

  27.  
  28. server.tomcat.accesslog.enabled=true

  29. server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D

  30. # default current work dir

  31. #server.tomcat.basedir=

  32.  
  33. db.num=1

  34. db.url.0=jdbc:mysql://10.51.10.128:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

  35. db.user=root

  36. db.password=123456

  37.  
  38. ## spring security config

  39. ### turn off security

  40. #spring.security.enabled=false

  41. #management.security=false

  42. #security.basic.enabled=false

  43. #nacos.security.ignore.urls=/**

  44.  
  45. nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health,/v1/cs/**,/v1/ns/**,/v1/cmdb/**

此时我们的一台linux上的nacos server就配置完成了,剩余两台linux的配置和上述一样,三台linux都连接同一mysql,cluster.conf内容一样

2.4、启动服务

三台linux机都输入以下命令启动nacos server服务

sh startup.sh

注:不加后缀,及使用cluster模式启动nacos server,通过启动脚本我们也能看出

 
  1. #===========================================================================================

  2. # JVM Configuration

  3. #===========================================================================================

  4. if [[ "${MODE}" == "standalone" ]]; then

  5. JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"

  6. JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"

  7. else

  8. JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m"

  9. JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"

  10. JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"

  11.  
  12. fi

若出现内存不足的问题,可适当将-server后的jvm内存分配参数调小,系统默认的是:

-server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m

JVM深入解析,和参数调优可参看我的另外一篇文章:JVM深入解析、性能调优

2.5、检验是否正常启动

一般方式有两种:

2.5.1、通过查看日志文件

可查看/conf/nacos.log(详细日志)或/conf/start.out(启动记录)的输出内容看有误抱错,是否启动成功

start.out输出:

 
  1. 2019-01-20 21:18:25,381 INFO Nacos is starting...

  2.  
  3. 0

  4. 2019-01-20 21:18:25,796 INFO Nacos Log files: /usr/local/nacos/logs/

  5.  
  6. 2019-01-20 21:18:25,796 INFO Nacos Conf files: /usr/local/nacos/conf/

  7.  
  8. 2019-01-20 21:18:25,796 INFO Nacos Data files: /usr/local/nacos/data/

  9.  
  10. 2019-01-20 21:18:25,797 INFO Nacos started successfully in cluster mode.

nacos.log输出:

 
  1. 2019-01-20 21:18:25,381 INFO Nacos is starting...

  2.  
  3. 2019-01-20 21:18:25,796 INFO Started Nacos in 20.035 seconds (JVM running for 21.66)

  4.  
  5. 2019-01-20 21:18:25,796 INFO Nacos Log files: /usr/local/nacos/logs/

  6.  
  7. 2019-01-20 21:18:25,796 INFO Nacos Conf files: /usr/local/nacos/conf/

  8.  
  9. 2019-01-20 21:18:25,796 INFO Nacos Data files: /usr/local/nacos/data/

  10.  
  11. 2019-01-20 21:18:25,797 INFO Nacos started successfully in cluster mode.

2.5.2、使用登入Nacos Server的可视化界面

在windows中用浏览器分别访问http://10.51.10.128:8848/nacos/index.htmlhttp://10.51.10.129:8848/nacos/index.htmlhttp://10.51.10.130:8848/nacos/index.html

2.6、启动服务提供方和消费方

项目见:Nacos篇三 - 服务提供方和消费者

只需对上述两个项目的application.properties做局部修改:

spring.cloud.nacos.config.server-addr=10.51.10.128:8848,10.51.10.129:8848,10.51.10.130:8848

2.7、查看Nacos server的管理Web

IP为10.51.10.129和10.51.10.130就不做截图展示(懒)

2.8、消费方消费服务

输入:http://localhost:1929/hi

至此Nacos Server集群大功告成!

 

手编不易,转载参考请注明来源。

欢迎大家点赞、留言

 

Nacos系列文章:

  1. Nacos篇一 - 基本介绍
  2. Nacos篇二 - 搭建Server
  3. Nacos篇三 - 服务提供方和消费者
  4. Nacos篇四 - 配置中心config
  5. Nacos篇五 - 部署模式(单机、集群)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值