Slide 1

Slide 1 text

ϚωʔδυMySQLఏڙʹ޲͚ͨ௅ઓ גࣜձࣾαΠόʔΤʔδΣϯτ CIU Development Div ޙ౻ल৴ CIU Tech Meetup #1 @2023/06/07

Slide 2

Slide 2 text

ޙ౻ल৴ • גࣜձࣾαΠόʔΤʔδΣϯτ 
 ɹɹɹάϧʔϓITਪਐຊ෦ CIU Development Div • 2016೥9݄ த్ೖࣾ (લ৬͸SIer) • ϓϥΠϕʔτΫϥ΢υͷίϯϙʔωϯτ։ൃ • Go, Kubernetes, Linux, Python, DB 


Slide 3

Slide 3 text

1.։ൃͷഎܠ 2.։ൃͷํ਑ 3.ར༻ٕज़ͱΞʔΩςΫνϟ 4.ಈ࡞֓ཁͷઆ໌ 5.·ͱΊ

Slide 4

Slide 4 text

։ൃͷํ਑

Slide 5

Slide 5 text

։ൃͷํ਑ • ίϚϯυ਺ൃͰDBߏஙɺࣗಈνϡʔχϯά • F/O͸ඞਢɺ෮چޙ΋ࣗಈ૊ΈࠐΈ • MySQLͷఏڙ • ֤ϝτϦΫεɺϩάɺόοΫΞοϓ • Ϣʔβ؅ཧ

Slide 6

Slide 6 text

։ൃͷํ਑ • k8sͷOperatorΛ׆༻Ͱ͖Δ͔? 
 ɹɹ👍 એݴతAPIͰ؅ཧͰ͖Δ ɹɹ👍 ։ൃ͕੝ΜͰجຊతʹ͸҆ఆ͍ͯ͠Δ ɹɹ👍 F/Oʹ͍ͭͯ΋໰୊ͳ͘ߦ͏͜ͱ͕Ͱ͖Δ

Slide 7

Slide 7 text

։ൃͷํ਑ • k8sͷOperatorΛ׆༻Ͱ͖Δ͔? 
 ɹɹ🌪 kubernetesʹԿ͔͋ͬͨ࣌ͷಈ࡞୲อ ɹɹ🌪 ݖݶ؅ཧͷෑډ (جຊVM΁ͷΞΫηεෆՄ) ɹɹ🌪 Platformతʹखಈઃఆ͕ඞཁͳՕॴ͕͋Δ

Slide 8

Slide 8 text

։ൃͷํ਑ • MySQLؔ࿈ͷπʔϧΛ׆༻Ͱ͖Δ͔? 
 ɹɹ👍 ؅ཧπʔϧͷOrchestrator͸஌ݟ͕ଟ͍ ɹɹ👍 ϝτϦΫεऔಘͰ͖ΔOSS΋͋Δ

Slide 9

Slide 9 text

։ൃͷํ਑ • MySQLؔ࿈ͷπʔϧΛ׆༻Ͱ͖Δ͔? 
 ɹɹ🌪 MySQL5ܥରԠ͕ඞཁͳͨΊπʔϧ͕ݶఆత ɹɹ🌪 ӡ༻ਓ਺͕গͳ͍ͨΊɺࣗಈ෮چ͍ͤͨ͞

Slide 10

Slide 10 text

طଘOperatorɺπʔϧ͚ͩͰ͸ݫ͍͠ ɹ͍͑͑ɺ࡞ͬͯ͠·͑ɹ

Slide 11

Slide 11 text

։ൃͷํ਑ • ເΛ٧ΊࠐΜͰΈΔ • DB͸VMͱͯ͠ಈ࡞ͤ͞Δ • એݴతAPI͸ੵۃతʹ࢖͍͖͍ͬͯͨ • 5ܥ΋8ܥ΋ԣஅɺڞ௨؅ཧ͕Ͱ͖Δ • Կ͔͋ͬͯ΋جຊతʹ͸ࣗಈ෮چ

Slide 12

Slide 12 text

CDB (Cycloud Database) ͦͷ໊΋

Slide 13

Slide 13 text

ར༻ٕज़ͱ 
 ΞʔΩςΫνϟ

Slide 14

Slide 14 text

ར༻ٕज़ • Kubernetes ؅ཧίϯϙʔωϯτσϓϩΠɹ • Custom Resource / Controllerɹɹ 
 CDBϦιʔεͱͯ͠ఆٛ • MySQL Orchestrator MySQLͷF/Oʹར༻ • OpenStack DBΠϯελϯεͷ࡞੒ • Terraform ίϯτϩʔϥʔ಺Ͱ࣮ߦ

Slide 15

Slide 15 text

ར༻ٕज़ • Kubernetes ؅ཧίϯϙʔωϯτσϓϩΠɹ • Custom Resource / Controllerɹɹ 
 CDBϦιʔεͱͯ͠ఆٛ • MySQL Orchestrator MySQLͷF/Oʹར༻ • OpenStack DBΠϯελϯεͷ࡞੒ • Terraform ίϯτϩʔϥʔ಺Ͱ࣮ߦ

Slide 16

Slide 16 text

Custom Resource / Controller • Custom Resource •Kubernetes APIͷ֦ு •ಛఆͷAPIΦϒδΣΫτͷίϨΫγϣϯΛอ࣋ • Custom Controller •ϦιʔεΛ͋Δ΂͖ঢ়ଶʹಉظ͠؅ཧ • Custom Resourceͱ૊Έ߹ΘͤͯCDBͷػೳΛఏڙ https://github.com/kubernetes-sigs/kubebuilder

Slide 17

Slide 17 text

ར༻ٕज़ • Kubernetes ؅ཧίϯϙʔωϯτσϓϩΠɹ • Custom Resource / Controllerɹɹ 
 CDBϦιʔεͱͯ͠ఆٛ • MySQL Orchestrator MySQLͷF/Oʹར༻ • OpenStack DBΠϯελϯεͷ࡞੒ • Terraform ίϯτϩʔϥʔ಺Ͱ࣮ߦ

Slide 18

Slide 18 text

MySQL Orchestrator • MySQLͷϨϓϦέʔγϣϯঢ়ଶͷ؅ཧ • F/OͷڍಈΛࡉ͔͘ϋϯυϦϯάͰ͖Δ • ίϯϙʔωϯτࣗମ͸RaftΛ࢖ͬͯ৑௕Խ • API΋๛෋ʹ༻ҙ͞Ε͍ͯΔ https://github.com/openark/orchestrator

Slide 19

Slide 19 text

MySQL Orchestrator • MySQLͷϨϓϦέʔγϣϯঢ়ଶͷ؅ཧ • F/OͷڍಈΛࡉ͔͘ϋϯυϦϯάͰ͖Δ • ίϯϙʔωϯτࣗମ͸RaftΛ࢖ͬͯ৑௕Խ • API΋๛෋ʹ༻ҙ͞Ε͍ͯΔ https://github.com/openark/orchestrator

Slide 20

Slide 20 text

ར༻ٕज़ • Kubernetes ؅ཧίϯϙʔωϯτσϓϩΠɹ • Custom Resource / Controllerɹɹ 
 CDBϦιʔεͱͯ͠ఆٛ • MySQL Orchestrator MySQLͷF/Oʹར༻ • OpenStack DBΠϯελϯεͷ࡞੒ • Terraform ίϯτϩʔϥʔ಺Ͱ࣮ߦ

Slide 21

Slide 21 text

OpenStack • Cycloud ͷ IaaSج൫ • όʔδϣϯ͸ Queensʹ৭ʑͱύονద༻ • VM / ϘϦϡʔϜͷ࡞੒࡟আ΍Ξλον/ σλονૢ࡞ • αʔϏεଆͷΤϯδχΞ΋IaaSͱͯ͠࢖͍ͬͯΔج൫ https://github.com/openstack


Slide 22

Slide 22 text

ར༻ٕज़ • Kubernetes ؅ཧίϯϙʔωϯτσϓϩΠɹ • Custom Resource / Controllerɹɹ 
 CDBϦιʔεͱͯ͠ఆٛ • MySQL Orchestrator MySQLͷF/Oʹར༻ • OpenStack DBΠϯελϯεͷ࡞੒ • Terraform ίϯτϩʔϥʔ಺Ͱ࣮ߦ

Slide 23

Slide 23 text

Terraform • IaCͷπʔϧͷ1ͭ • એݴతʹϦιʔεΛ؅ཧ • hclͱ͍͏ݴޠͰهड़͢Δ • ֤Ϋϥ΢υͷϓϩόΠμʔ͕༻ҙ͞Ε͍ͯΔ https://github.com/hashicorp/terraform https://github.com/isaaguilar/terraform-operator

Slide 24

Slide 24 text

͜ͷลΓΛྑ͖͔ͳ૊Έ߹Θͤͯ CDB͸ಈ͍ͯ·͢

Slide 25

Slide 25 text

࡞੒࣌ίϚϯυ

Slide 26

Slide 26 text

࡞੒࣌ίϚϯυ

Slide 27

Slide 27 text

࡞੒࣌ίϚϯυ DNSϨίʔυΛDBͷ 
 ΤϯυϙΠϯτͱͯ͠ར༻

Slide 28

Slide 28 text

࡞੒ϑϩʔ gateway mysql controller܈ instance controller setting controller܈ gRPC ೝূ

Slide 29

Slide 29 text

࡞੒ϑϩʔ gateway mysql controller܈ instance controller setting controller܈ gRPC ೝূ

Slide 30

Slide 30 text

࡞੒ϑϩʔ gateway mysql controller܈ instance controller setting controller܈ gRPC ೝূ

Slide 31

Slide 31 text

࡞੒ϑϩʔ gateway mysql controller instance controller setting controller܈ gRPC ೝূ apiVersion: cdb.cycloud.io/v1 kind: MysqlCon fi g metadata: name: xxxxxxxxx namespace: xxxxxxxxx spec: connect_timeout: 100 engine_version: 8 expire_log_days: 10

Slide 32

Slide 32 text

࡞੒ϑϩʔ gateway mysql controller܈ instance controller setting controller܈ gRPC ೝূ apiVersion: v1 kind: Con fi gMap metadata: name: xxxxxxxxx namespace: xxxxxxxxx data: connect_timeout: "100" expire_log_days: "10"

Slide 33

Slide 33 text

࡞੒ϑϩʔ gateway mysql controller܈ instance controller setting controller gRPC ೝূ apiVersion: cdb.cycloud.io/v1 kind: MySQL metadata: name: xxxxxxxxx namespace: xxxxxxxx spec: fl avor: large replica: 1 storage: kind: xxxxxxxx size_gib: 45

Slide 34

Slide 34 text

࡞੒ϑϩʔ gateway mysql controller܈ instance controller setting controller gRPC ೝূ apiVersion: cdb.cycloud.io/v1 kind: Instance metadata: name: xxxxxxxxx namespace: xxxxxxxx spec: dataVolume: size: 45 volumeType: xxxxx version: 8.0.28 fl avor: xxxxxxxxxx ༷ʑͳIaaSج൫ʹ
 ରԠͰ͖ΔΑ͏ʹந৅Խ

Slide 35

Slide 35 text

࡞੒ϑϩʔ gateway mysql controller܈ instance controller setting controller܈ gRPC ೝূ OpenStack API

Slide 36

Slide 36 text

࡞੒ϑϩʔ gateway mysql controller܈ instance controller setting controller܈ gRPC ೝূ OpenStack API DBࣗମ͸VMͱͯ͠
 OpenStack্ʹߏங

Slide 37

Slide 37 text

CDBͷΧελϜϦιʔεʢΫϥελܥʣ • MySQL • DBΫϥελϦϯάͷͨΊͷϝΠϯϦιʔε • Instance • ΠϯελϯεߏஙͷͨΊͷϦιʔε • Connector • F/OΛ୲౰͢ΔϦιʔε • Orchestrator • MySQL OrchestratorΛ؅ཧ͢ΔϦιʔε

Slide 38

Slide 38 text

CDBͷΧελϜϦιʔεʢઃఆܥʣ • LoggingConfig • MySQLͷϩάؔ࿈ͷอଘઃఆ • LoginRootUser • RootϢʔβͷઃఆ • MetricsConfig • ϝτϦΫεؔ࿈ͷઃఆ • MysqlBackup / MysqlSnapshot • σʔλͷόοΫΞοϓܥͷઃఆ • MysqlConfig • MySQLͷઃఆؔ܎

Slide 39

Slide 39 text

apiVersion: cdb.cycloud.io/v1 kind: MySQL metadata: name: xxxxxxxxx namespace: xxxxxxxx spec: fl avor: large replica: 1 storage: kind: xxxxxxxx size_gib: 45 VMىಈޙ Mysqllet Mysqllet ओͳ΍ΓͱΓ ɹDBઃఆ৘ใͷऔಘ ɹϓϩδΣΫτ৘ใͷऔಘ ɹϓϥΠϚϦɺηΧϯμϦ৘ใͷऔಘ ɹߏஙঢ়گͷใࠂ DNSaaS

Slide 40

Slide 40 text

apiVersion: cdb.cycloud.io/v1 kind: MySQL metadata: name: xxxxxxxxx namespace: xxxxxxxx spec: fl avor: large replica: 1 storage: kind: xxxxxxxx size_gib: 45 VMىಈޙ Mysqllet Mysqllet DNSaaS ɹConnectorϦιʔεΛར༻
 ɹϓϥΠϚϦɺηΧϯμϦ౳Λ൓ө

Slide 41

Slide 41 text

apiVersion: cdb.cycloud.io/v1 kind: MySQL metadata: name: xxxxxxxxx namespace: xxxxxxxx spec: fl avor: large replica: 1 storage: kind: xxxxxxxx size_gib: 45 VMىಈޙ Mysqllet Mysqllet DNSaaS

Slide 42

Slide 42 text

༷ʑͳCustom Resourceɺ 
 Custome ControllerΛར༻ͯ͠DBΛߏங

Slide 43

Slide 43 text

F/O࣌ͷಈ࡞ ϔϧενΣοΫ

Slide 44

Slide 44 text

F/O࣌ͷಈ࡞ ϔϧενΣοΫ

Slide 45

Slide 45 text

F/O࣌ͷಈ࡞ ϔϧενΣοΫ apiVersion: cdb.cycloud.io/v1 kind: Connector metadata: name: xxxxxxxxx namespace: xxxxxxxx spec: owner: meetup rw: dummy.record.hoge.io rw_ip: XXX.XXX.XXX.XXX mysql controller

Slide 46

Slide 46 text

F/O࣌ͷಈ࡞ ϔϧενΣοΫ apiVersion: cdb.cycloud.io/v1 kind: Connector metadata: name: xxxxxxxxx namespace: xxxxxxxx spec: owner: meetup rw: dummy.record.hoge.io rw_ip: XXX.XXX.XXX.XXX mysql controller DNSaaS

Slide 47

Slide 47 text

༷ʑͳCustom Resourceɺ 
 Custom ControllerΛར༻ͯ͠DBͷՄ༻ੑΛ୲อ

Slide 48

Slide 48 text

·ͱΊ • νϡʔχϯά͸ࣗಈͰ͓͢͢ΊઃఆʹͳΔ • DBΤϯδχΞͱڠྗͯ͠஋ͷܾఆ • ΦϯϥΠϯͰ޷Έͷ஋ʹ΋मਖ਼Մೳ • ֤छϝτϦΫεʹ΋ରԠ

Slide 49

Slide 49 text

·ͱΊ • ϚωʔδυMySQLͰ͋ΔCDBͷ঺հ • MySQLΛίϯςφ → VM΁ • DNSͷ੾Γସ͑ͰF/OΛ࣮ݱ • Kubernetes͕མͪͯ + DB΋མͪͳ͍ͱӨڹͳ͠ • MySQL͸೉͍͠

Slide 50

Slide 50 text

͋Γ͕ͱ͏͍͟͝·ͨ͠