目录
以上是官方提供的三种部署方式:单机模式对于企业来讲,仅可用于测试环境或者开发环境,不可用于生产环境;对于中小型企业来讲,生产环境选择集群模式已经足够,无需选择多集群模式,除非是做机房灾备,可以在两个机房部署两个集群。
单机模式的部署方式在前面的文章中已经介绍过,在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:
/******************************************/ /* 数据库全名 = 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 '2010-05-05 00:00:00' comment '创建时间', `gmt_modified` datetime not null default '2010-05-05 00:00:00' comment '修改时间', `src_user` text comment 'source user', `src_ip` varchar(20) 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 '2010-05-05 00:00:00' comment '创建时间', `gmt_modified` datetime not null default '2010-05-05 00:00:00' comment '修改时间', `src_user` text comment 'source user', `src_ip` varchar(20) 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 '2010-05-05 00:00:00' comment '创建时间', `gmt_modified` datetime not null default '2010-05-05 00:00:00' comment '修改时间', `src_user` text comment 'source user', `src_ip` varchar(20) 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 '2010-05-05 00:00:00' comment '创建时间', `gmt_modified` datetime not null default '2010-05-05 00:00:00' 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 '2010-05-05 00:00:00', `gmt_modified` datetime not null default '2010-05-05 00:00:00', `src_user` text, `src_ip` varchar(20) 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 '2010-05-05 00:00:00' comment '创建时间', `gmt_modified` datetime not null default '2010-05-05 00:00:00' 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 ); insert into users (username, password, enabled) values ('nacos', '$2a$10$euwpzhzz32djn7jexm34moeyirddfazm2kuwj7veojhhzkdrxfvuu', true); insert into roles (username, role) values ('nacos', 'role_admin');
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=password
从 github 上下载源码方式
unzip nacos-source.zip cd nacos/ mvn -prelease-nacos clean install -u cd nacos/distribution/target/nacos-server-0.8.0/nacos/bin
下载编译后压缩包方式:
unzip nacos-server-1.1.0.zip 或者 tar -xvf nacos-server-1.1.0.tar.gz cd nacos/bin
在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf.example,请将名称修改为:cluster.conf,每行配置成ip:port。(请配置3个或3个以上节点)
#it is ip #example 192.168.0.1 192.168.0.2 192.168.0.3
生产使用建议至少主备模式,或者采用高可用数据库。
初始化语句和上面单机版保持一致。
# spring server.contextpath=/nacos server.servlet.contextpath=/nacos server.port=8848 nacos.cmdb.dumptaskinterval=3600 nacos.cmdb.eventtaskinterval=10 nacos.cmdb.labeltaskinterval=300 nacos.cmdb.loaddataatstart=false # metrics for prometheus #management.endpoints.web.exposure.include=* # metrics for elastic search management.metrics.export.elastic.enabled=false #management.metrics.export.elastic.host=http://localhost:9200 # metrics for influx management.metrics.export.influx.enabled=false #management.metrics.export.influx.db=springboot #management.metrics.export.influx.uri=http://localhost:8086 #management.metrics.export.influx.auto-create-db=true #management.metrics.export.influx.consistency=one #management.metrics.export.influx.compressed=true server.tomcat.accesslog.enabled=true server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %d %{user-agent}i # default current work dir server.tomcat.basedir= ## spring security config ### turn off security #spring.security.enabled=false #management.security=false #security.basic.enabled=false #nacos.security.ignore.urls=/** 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/**,/actuator/**,/v1/console/server/** # nacos.naming.distro.taskdispatchthreadcount=1 # nacos.naming.distro.taskdispatchperiod=200 # nacos.naming.distro.batchsynckeycount=1000 # nacos.naming.distro.initdataratio=0.9 # nacos.naming.distro.syncretrydelay=5000 # nacos.naming.data.warmup=true # nacos.naming.expireinstance=true 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=password
启动命令(在没有参数模式,是集群模式):
sh startup.sh
先讲讲看网上的一些做法哈,修改application.yml的配置文件:
spring.cloud.nacos.config.server-addr=192.168.0.1:8848,192.168.0.2:8848,192.168.0.3:8848
这么写行不行能,我认为是可以的,但是有一点,就是如果nacos换了ip或者整体要做迁移,那么所有使用这个nacos的微服务的配置文件中的ip全都要进行更换,还需要重启,这对于整个微服务架构来讲耦合会非常大,违背了服务拆分的原则。
接下来就说我的方案了:
spring.cloud.nacos.config.server-addr=http://nacom.com:8848
这里我们使用域名去反向代理后面的nacos服务,如果后面nacos服务出现任何问题,我们只需要修改这个反向代理层即可,经过测试,这里的反向代理可以使用nginx,包括后面如果需要做扩容或者迁移,都不会影响到目前的服务集群。
多集群模式我们这里不做过多讨论,目前暂无实践经验。
如对本文有疑问, 点击进行留言回复!!
Spring Cloud Alibaba系列,nacos作为服务配置中心
网友评论