搭建nacos集群

搭建docker-compose

前提必须先安装docker
https://blog.csdn.net/sha1024/article/details/126137299?spm=1001.2014.3001.5502

下载

国内镜像源

# 下载路径是【/usr/local/bin/】下载完之后可以看下【/usr/local/bin】这个目录有没有【docker-compose】文件
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

安装mysql

新建文件夹和目录

mkdir /home/wusha/mysql/conf /home/wusha/mysql/logs /home/wusha/mysql/data 

新建compose.yml编排文件

version: '2'
services:
    mysql:
      container_name: mysql
      restart: always
      image: mysql:5.7
      ports:
        - "3306:3306"
      volumes:
      #挂载路径,前面是服务器地址,后面是容器内部地址,./为docker-compose.yml文件的相对路径
        - ./home/wusha/mysql/conf/my.cnf:/etc/my.cnf
        - ./home/wusha/mysql/logs:/logs
        - ./home/wusha/mysql/data:/var/lib/mysql
      command: [
            'mysqld',
            '--innodb-buffer-pool-size=80M',
            '--character-set-server=utf8mb4',
            '--collation-server=utf8mb4_unicode_ci',
            '--default-time-zone=+8:00',
            '--lower-case-table-names=1'
          ]
      #environment它主要是用来配置容器中程序所需要配置的一些参数
      environment:
        #数据库名字
        MYSQL_DATABASE: 'weroom'
        #数据库密码
        MYSQL_ROOT_PASSWORD: weroom123.
volumes:
    config:
    data:
    logs:

启动compose.ym文件

image.png

docker-compsoe up -d 

测试一下连接

搭建nacos集群_第1张图片

初始化nacos库

初始化一下脚本

 create database nacos_config; #创建数据库
/******************************************/

/*   数据库全名 = 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');

启动nacos集群

编写docker-compose.yml文件

master节点

version: '2'
services:
    docker-nacos-server:
      image: nacos/nacos-server:2.0.2
      container_name: nacos-server-master
      ports:
        - "8848:8848"
        - "9555:9555"
        - "9848:9848"
        - "9849:9849"
      networks: 
        - nacos_net
      restart: on-failure
      privileged: true
      environment:
        - TZ=Asia/Shanghai
        - MODE=cluster
 		#内网ip
        - PREFER_HOST_MODE=192.168.0.1
        - SPRING_DATASOURCE_PLATFORM=mysql
        - NACOS_SERVER_IP=192.168.0.1
		#两台nacos宿主机ip地址加端口
        - NACOS_SERVERS=192.168.0.1:8848 192.168.0.2:8848
		#mysql宿主机ip加端口 以及用户名密码
        - MYSQL_SERVICE_HOST=192.168.0.3
        - MYSQL_SERVICE_PORT=3306
        - MYSQL_SERVICE_DB_NAME=nacos_config
        - MYSQL_SERVICE_USER=root
        - MYSQL_SERVICE_PASSWORD=weroom123.
        - JVM_XMS=256m
        - JVM_XMX=256m
        - JVM_XMN=256m
networks:
  nacos_net:
    driver: bridge

node节点1

version: '2'
services:
  docker-nacos-server:
    image: nacos/nacos-server:2.0.2
    container_name: nacos-server-node
    ports:
      - "8848:8848"
      - "9555:9555"
      - "9848:9848"
      - "9849:9849"
    networks: 
      - redis_nacos_net
    restart: on-failure
    privileged: true
    environment:
      - TZ=Asia/Shanghai
      - MODE=cluster
      - PREFER_HOST_MODE=192.168.0.2
      - SPRING_DATASOURCE_PLATFORM=mysql
      - NACOS_SERVER_IP=192.168.0.2
      - NACOS_SERVERS=192.168.0.1:8848 192.168.0.2:8848
      - MYSQL_SERVICE_HOST=192.168.0.3
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_DB_NAME=nacos_config
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=weroom123.
      - JVM_XMS=256m
      - JVM_XMX=256m
      - JVM_XMN=256m
networks:
  redis_nacos_net:
    driver: bridge
volumes:
    config:
    data:
    logs:

dokcer-compse常用命令

查看各自编排好的容器
image.png

docker-compose命令格式

docker-compose [-f ...] [options] [COMMAND] [ARGS...]

选项如下:

-f,–file FILE      指定Compose模板文件,默认为docker-compose.yml,可以多次指定。
-p,–project-name  NAME指定项目名称,默认将使用所在目录名称作为项目名。
-x-network-driver    使用Docker的可拔插网络后端特性(需要Docker 1.9+版本)
-x-network-driver    DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9+版本)
-verbose         出更多调试信息
-v,–version       打印版本并退出

docker-compose up

docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]

选项包括:

-d                             在后台运行服务容器
–no-color                  不使用颜色来区分不同的服务的控制输出
–no-deps                  不启动服务所链接的容器
–force-recreate         强制重新创建容器,不能与–no-recreate同时使用
–no-recreate             如果容器已经存在,则不重新创建,不能与–force-recreate同时使用
–no-build                  不自动构建缺失的服务镜像
–build                       在启动容器前构建服务镜像
–abort-on-container-exit      停止所有容器,如果任何一个容器被停止,不能与-d同时使用
-t, –timeout TIMEOUT          停止容器时候的超时(默认为10秒)
–remove-orphans                 删除服务中没有在compose文件中定义的容器
–scale SERVICE=NUM          设置服务运行容器的个数,将覆盖在compose中通过scale指定的参数

示例:
#启动所有服务

docker-compose up

#在后台所有启动服务

docker-compose up -d

#-f 指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定。

docker-compose -f docker-compose.yml up -d

docker-compose ps

示例:
#列出项目中目前的所有容器

docker-compose ps

docker-compose stop

docker-compose stop [options] [SERVICE...]

选项包括:

-t, –timeout            TIMEOUT 停止容器时候的超时(默认为10秒)

示例
#停止正在运行的容器,可以通过docker-compose start 再次启动

docker-compose stop

docker-compose -h

#查看帮助

docker-compose -h

docker-compose down

#停止和删除容器、网络、卷、镜像。

docker-compose down [options]

选项包括:

–rmi type                 删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像
-v, –volumes            删除已经在compose文件中定义的和匿名的附在容器上的数据卷
–remove-orphans     删除服务中没有在compose中定义的容器

示例:
#停用移除所有容器以及网络相关

docker-compose down

docker-compose logs

#查看服务容器的输出。默认情况下,docker-compose将对不同的服务输出使用不同的颜色来区分。可以通过–no-color来关闭颜色

docker-compose logs [options] [SERVICE...]

docker-compose build

#构建(重新构建)项目中的服务容器

docker-compose build [options] [--build-arg key=val...] [SERVICE...]

选项包括:

–compress             通过gzip压缩构建上下环境
–force-rm              删除构建过程中的临时容器
–no-cache             构建镜像过程中不使用缓存
–pull                      始终尝试通过拉取操作来获取更新版本的镜像
-m, –memory MEM 为构建的容器设置内存大小
–build-arg key=val  为服务设置build-time变量

服务容器一旦构建后,将会带上一个标记名。可以随时在项目目录下运行docker-compose build来重新构建服务

docker-compose pull

#拉取服务依赖的镜像

docker-compose pull [options] [SERVICE...]

选项包括:

–ignore-pull-failures   忽略拉取镜像过程中的错误
–parallel                    多个镜像同时拉取
–quiet                       拉取镜像过程中不打印进度信息

docker-compose restart

#重启项目中的服务

docker-compose restart [options] [SERVICE...]

选项包括:

-t, –timeout TIMEOUT        指定重启前停止容器的超时(默认为10秒)

docker-compose rm

#删除所有(停止状态的)服务容器,推荐先执行docker-compose stop命令来停止容器

docker-compose rm

选项包括:

–f, –force,强制直接删除,包括非停止状态的容器
-v,删除容器所挂载的数据卷

docker-compose start

#启动已经存在的服务容器

docker-compose start

docker-compose run

#在指定服务上执行一个命令

docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

示例
#在指定容器上执行一个ping命令

docker-compose run ubuntu ping

docker-compose scale

#设置指定服务运行的容器个数,通过service=num的参数来设置数量

docker-compose scale web=3 db=2

docker-compose pause

#暂停一个服务容器

docker-compose pause [SERVICE...]

docker-compose kill

示例
#支持通过-s参数来指定发送的信号,例如通过如下指令发送SIGINT信号:

docker-compose kill

dokcer-compose config

#验证并查看compose文件配置

docker-compose config [options]

选项包括:

–resolve-image-digests       将镜像标签标记为摘要
-q, –quiet                          只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息
–services                           打印服务名,一行一个
–volumes                           打印数据卷名,一行一个

docker-compose create

#为服务创建容器

docker-compose create [options] [SERVICE...]

选项包括:

–force-recreate:              重新创建容器,即使配置和镜像没有改变,不兼容–no-recreate参数
–no-recreate:                  如果容器已经存在,不需要重新创建,不兼容–force-recreate参数
–no-build:                       不创建镜像,即使缺失
–build:                            创建容器前,生成镜像

docker-compose exec

docker-compose exec [options] SERVICE COMMAND [ARGS...]

选项包括:

-d                                    分离模式,后台运行命令。
–privileged                        获取特权。
–user USER                      指定运行的用户。
-T                                    禁用分配TTY,默认docker-compose exec分配TTY。
–index=index                     当一个服务拥有多个容器时,可通过该参数登陆到该服务下的任何服务,例如:docker-compose exec –index=1 web /bin/bash ,web服务中包含多个容器

docker-compose port

#显示某个容器端口所映射的公共端口

docker-compose port [options] SERVICE PRIVATE_PORT

选项包括:

–protocol=proto                指定端口协议,TCP(默认值)或者UDP
–index=index                    如果同意服务存在多个容器,指定命令对象容器的序号(默认为1)

docker-compose push

#推送服务依的镜像

docker-compose push [options] [SERVICE...]

选项包括:

–ignore-push-failures      忽略推送镜像过程中的错误

docker-compose stop

#显示各个容器运行的进程情况

docker-compose stop [options] [SERVICE...]

docker-compose unpause

#恢复处于暂停状态中的服务

docker-compose unpause [SERVICE...]

docker-compose version

#打印版本信息

docker-compose version

启动nacos

image.png
宿主机加ip可以进行方向nacos启动地址

查看效果

集群访问成功
搭建nacos集群_第2张图片
可以看到每个 节点上面多有一个服务实例
搭建nacos集群_第3张图片

你可能感兴趣的:(docker,java,nacos,微服务,集群)