栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker-compse nacos集群

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker-compse nacos集群

docker-compse nacos集群
  • docker-compse nacos集群
    • 创建网桥
    • 创建目录
    • 使用内置mysql数据库
      • 编写compose文件
      • 启动服务
      • 测试验证
    • 使用外部mysql数据库
      • 创建数据库
      • 导入nacos脚本数据
      • 编写compose模版文件
      • 启动服务
      • 测试验证

docker-compse nacos集群

Docker镜像官网:https://github.com/nacos-group/nacos-docker
nacos官网:https://github.com/alibaba/nacos
Nacos中文:https://nacos.io/zh-cn/docs/what-is-nacos.html
Nacos官网代码:https://github.com/nacos-group/nacos-docker.git


需要注意:nacos在1.x版本使用参数和以前不同,具体原因参考:https://github.com/nacos-group/nacos-docker/wiki/%E7%A7%BB%E9%99%A4%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%BB%E4%BB%8E%E9%95%9C%E5%83%8F%E9%85%8D%E7%BD%AE

这里以最新版本nacos-2.0.3进行集群测试。

创建网桥

由于使用的是集群模式,可能是多台不同的服务器,默认docker0是不支持扩服务器的容器进行通信,故这里使用自定义网桥,该网桥支持通过域名、ip、服务名等链接,具体网络区别及使用自行百度。

sudo docker network create -d bridge mynet

创建目录

创建数据、日志、配置文件存储目录,编写custom.properties文件内容

for i in $(seq 1 3);
do 
mkdir -p /home/data/nacos${i}/logs/ 
mkdir -p /home/data/nacos${i}/init.d/ 
echo "management.endpoints.web.exposure.include=*" >/home/data/nacos${i}/init.d/custom.properties
done

使用内置mysql数据库 编写compose文件

1、创建 nacos-cluster.yaml
进入/home/data目录下,创建nacos-cluster.yaml文件。

vim nacos-cluster.yaml
version: "3"
services:
  nacos1:
    hostname: nacos1
    container_name: nacos1
    image: nacos/nacos-server:${NACOS_VERSION}
    restart: always
    volumes:
      - /home/data/nacos1:/home/nacos/logs
      - /home/data/nacos1/init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9555:9555"
    env_file:
      - /home/data/nacos-hostname.env
    depends_on:
      - mysql
    networks:
      - mynet
  nacos2:
    hostname: nacos2
    image: nacos/nacos-server:${NACOS_VERSION}
    container_name: nacos2
    restart: always
    volumes:
      - /home/data/nacos2:/home/nacos/logs
      - /home/data/nacos2/init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8849:8848"
      - "9849:9848"
    env_file:
      - /home/data/nacos-hostname.env
    depends_on:
      - mysql
    networks:
      - mynet
  nacos3:
    hostname: nacos3
    image: nacos/nacos-server:${NACOS_VERSION}
    container_name: nacos3
    restart: always
    volumes:
      - /home/data/nacos2:/home/nacos/logs
      - /home/data/nacos2/init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8850:8848"
      - "9850:9848"
    env_file:
      - /home/data/nacos-hostname.env
    depends_on:
      - mysql
    networks:
      - mynet
#数据库
  mysql:
    container_name: mysql
    image: nacos/nacos-mysql:5.7
    env_file:
      - ./mysql.env
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - mynet

networks:
  mynet:
    external: true

2、创建nacos-hostname.env
由于以上nacos使用了配置文件加载环境变量。故需要创建 nacos-hostname.env文件,内容如下:

vim nacos-hostname.env
#nacos dev env
#nacos版本号
NACOS_VERSION=2.0.3
#系统启动方式: 集群/单机,cluster/standalone默认 cluster
MODE=cluster
#支持IP还是域名模式
PREFER_HOST_MODE=hostname
#集群地址	p1:port1空格ip2:port2 空格ip3:port3
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
#数据库连接地址
MYSQL_SERVICE_HOST=mysql
#数据库端口
MYSQL_SERVICE_PORT=3306
#数据库库名
MYSQL_SERVICE_DB_NAME=nacos_config
#数据库用户名,密码
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=root
#数据库数量,默认 :1
MYSQL_DATAbase_NUM=1
#数据库连接参数,default : characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=60000&socketTimeout=300000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
JVM_XMS=512m
JVM_MMS=320m

3、创建.env文件

vim .env
NACOS_VERSION=2.0.3

3、创建mysql.env文件

vim mysql.env
MYSQL_ROOT_PASSWORD=root
MYSQL_DATAbase=nacos_devtest
MYSQL_USER=nacos
MYSQL_PASSWORD=nacos

4、查看创建文件

启动服务
后台启动:sudo docker-compose -f nacos-cluster.yaml up -d

[root@izwz9bpj7oo7xblpos8vfvz data]# 
[root@izwz9bpj7oo7xblpos8vfvz data]# sudo docker-compose -f nacos-cluster.yaml up -d
Starting mysql ... done
Starting nacos1 ... done
Starting nacos3 ... done
Starting nacos2 ... done
[root@izwz9bpj7oo7xblpos8vfvz data]#

查看启动服务:sudo docker ps
[root@izwz9bpj7oo7xblpos8vfvz data]# sudo docker ps
ConTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS         PORTS                                                                    NAMES
b78ba660c3d6   nacos/nacos-server:2.0.3   "bin/docker-startup.…"   27 minutes ago   Up 3 seconds   0.0.0.0:8848->8848/tcp, 0.0.0.0:9555->9555/tcp, 0.0.0.0:9848->9848/tcp   nacos1
606052050d07   nacos/nacos-server:2.0.3   "bin/docker-startup.…"   27 minutes ago   Up 3 seconds   0.0.0.0:8850->8848/tcp, 0.0.0.0:9850->9848/tcp                           nacos3
f552f4bd337f   nacos/nacos-server:2.0.3   "bin/docker-startup.…"   27 minutes ago   Up 3 seconds   0.0.0.0:8849->8848/tcp, 0.0.0.0:9849->9848/tcp                           nacos2
8e157fb8a12f   nacos/nacos-mysql:5.7      "docker-entrypoint.s…"   27 minutes ago   Up 4 seconds   0.0.0.0:3306->3306/tcp, 33060/tcp                                        mysql
[root@izwz9bpj7oo7xblpos8vfvz data]# 

可以看到以上nacos服务全部启动成功,status状态为up,如果状态不为up,在需要排查问题。

测试验证

浏览器访问:http://192.268.0.80:8848/nacos/#/login, 登录账号密码默认为 nacos nacos

查看集群节点:

可以看到启动了3个节点。如果增加服务节点,则只需要在compose配置文件中在增加一个服务即可。

使用外部mysql数据库

在使用外部数据库时,需要先将准备工作处理完成后才能启动nacos,具体如下

创建数据库

1、通过命令行登录已经存在的数据库创建:

docker exec -it 547a4b2c9e3f /bin/bash
mysql -h192.168.0.85 -P3306 -uroot -pDs20Pwd@
show databases;
CREATE DATAbase IF NOT EXISTS nacos_config default charset utf8 COLLATE utf8_general_ci;

2、通过mysql客户端工具(例如navicat、sqlyang等等)
登录mysql客户端,创建nacos_config数据库。

导入nacos脚本数据

数据库脚本下载:https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql






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';





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='增加租户字段';






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';





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';





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';





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容量信息表';





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='多租户改造';






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');

编写compose模版文件

1、创建.env文件

vim .env
NACOS_VERSION=2.0.3

2、创建nacos-hostname.env文件

vim nacos-hostname.env
#nacos dev env
#nacos版本号
NACOS_VERSION=2.0.3
#系统启动方式: 集群/单机,cluster/standalone默认 cluster
MODE=cluster
#支持IP还是域名模式
PREFER_HOST_MODE=hostname
#集群地址	p1:port1空格ip2:port2 空格ip3:port3
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
#数据库连接地址
MYSQL_SERVICE_HOST=mysql
#数据库端口
MYSQL_SERVICE_PORT=3306
#数据库库名
MYSQL_SERVICE_DB_NAME=nacos_config
#数据库用户名,密码
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=root
#数据库数量,默认 :1
MYSQL_DATAbase_NUM=1
#数据库连接参数,default : characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=60000&socketTimeout=300000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
JVM_XMS=512m
JVM_MMS=320m

3、创建nacos-cluster.yml文件

vim  nacos-cluster.yml
version: "3"
services:
  nacos1:
    hostname: nacos1
    container_name: nacos1
    image: nacos/nacos-server:${NACOS_VERSION}
    restart: always
    volumes:
      - /home/data/nacos1:/home/nacos/logs
      - /home/data/nacos1/init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9555:9555"
    env_file:
      - /home/data/nacos-hostname.env
    networks:
      - mynet
  nacos2:
    hostname: nacos2
    image: nacos/nacos-server:${NACOS_VERSION}
    container_name: nacos2
    restart: always
    volumes:
      - /home/data/nacos2:/home/nacos/logs
      - /home/data/nacos2/init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8849:8848"
      - "9849:9848"
    env_file:
      - /home/data/nacos-hostname.env
    networks:
      - mynet
  nacos3:
    hostname: nacos3
    image: nacos/nacos-server:${NACOS_VERSION}
    container_name: nacos3
    restart: always
    volumes:
      - /home/data/nacos2:/home/nacos/logs
      - /home/data/nacos2/init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8850:8848"
      - "9850:9848"
    env_file:
      - /home/data/nacos-hostname.env
    networks:
      - mynet

networks:
  mynet:
    external: true

4、授权
sudo chmod 777 -R /home/data

启动服务
sudo docker-compose -f nacos-cluster.yaml up -d
 sudo docker ps

测试验证

浏览器访问:http://192.268.0.80:8848/nacos/#/login, 登录账号密码默认为 nacos nacos

注意: 如果使用多台不同的机器分别部署ancos进行集群,则需要修改nacos属性配置 NACOS_SERVERS ,将服务名修改为对应机器的ip地址即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675594.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号