OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All...

40
OpenStack Cinder as an SDS API Sean McGinnis Huawei

Transcript of OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All...

Page 1: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1

OpenStack Cinder as an SDS API

Sean McGinnisHuawei

Page 2: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 2

Cinder in OpenStack

Page 3: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 3

What is Cinder

Block storage management API Abstraction layer of many types of storage

Page 4: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 4

What Cinder is Not

Not a storage provider Not in the IO path Not a general purpose storage manager

Page 5: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 5

Cinder ModelStorage Backend Storage Backend

Storage Pool Storage Pool

Page 6: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 6

Cinder ModelStorage Backend

Glance Image

Volume Type

Page 7: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 7

Cinder as Part of OpenStack

Page 8: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 8

Cinder Standalone

Page 9: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 9

Cinder Standalone - noauth

auth_strategy = noauth

Page 10: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 10

Flexible Deployment Bare metal or VM Containers Manually with system packages Deployment toolsAnsiblePuppetHelm

Page 11: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 11

Cinder References

https://docs.openstack.org/cinder/latest/install/

https://www.youtube.com/watch?v=YmeGEBVuSNc

https://thenewstack.io/deploying-cinder-stand-alone-storage-service/

https://github.com/openstack/cinder/blob/master/contrib/block-

box/README.md

https://gorka.eguileor.com/standalone-cinder/

Page 12: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 12

Interface – Horizon

Page 13: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 13

Interface – Command Line

Page 14: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 14

Interface – REST API

https://developer.openstack.org/api-ref/block-storage/

Page 15: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 15

Typical Usage Point and click management via Horizon Interactive CLI – OpenStackClient or CinderClient Programmatic using REST API or SDK

OpenStackSDK Gophercloud Etc…

Integration with config management tools

Page 16: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 16

Scenario #1

Production data remains untouched Need to run local tests against real data Create volume from snapshot of data

Page 17: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 17

Scenario #1 - Setup

Services usedCinder, Keystone (optional)

PlatformWindows, SQL Server, PowerShell

ExampleDirect REST API usage

Page 18: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 18

Scenario #1 - Script

Full script:https://github.com/stmcginnis/presentations/blob/master/Vancouver2018/CinderSDS/assets/powershell.ps1

Useful cmdlets Invoke-WebRequest Invoke-RestMethod New-IscsiTargetPortal Connect-IscsiTarget

Page 19: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 19

Scenario #1 - Authentication

$result = Invoke-WebRequest -Headers $headers -Method Post -Body @”{"auth": { "identity": {

"methods": ["password"],"password":

{ "user": { "name": "$($creds.UserName)","domain": {"id": "default"},"password": "$($creds.GetNetworkCredential().password)"}}},

"scope": { "project": { "domain": {"name": "Default"}, "name": "admin"}}}}"@ -Uri http://192.168.1.230:5000/v3/auth/tokens

$os_token = $result.Headers['X-Subject-Token']$headers.Add('X-Auth-Token', $os_token)

Page 20: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 20

Scenario #1 – Find Volume

$result = Invoke-RestMethod -Headers $headers -Uri `“http://192.168.1.230:8776/v3/$project_id/volumes”

foreach($vol in $result.volumes) {if ($vol.name -eq "Demo-Vol") {

$src_vol = $vol.idbreak

}}

Page 21: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 21

Scenario #1 – Create Snapshot

$result = Invoke-RestMethod -Headers $headers -Method Post -Body @”{"snapshot": {

"name": "demo-snap","description": "Demo snapshot for testing","volume_id": "$src_vol","force": "True”

}}"@ -Uri “http://192.168.1.230:8776/v3/$project_id/snapshots”

$snapshot = $result.snapshot

Page 22: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 22

Scenario #1 – Create Volume

$result = Invoke-RestMethod -Headers $headers -Method Post -Body @”{"volume": {

"snapshot_id": "$($snapshot.id)”}

}"@ -Uri "http://192.168.1.230:8776/v3/$project_id/volume”

$volume = $result.volumes

Page 23: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 23

Senario #1 – Use Volumeforeach ($target in $connection_info.target_iqns) {$connections += Get-IscsiTarget -NodeAddress $target |

Connect-IscsiTarget -AuthenticationType ONEWAYCHAP `-ChapSecret $connection_info.auth_password `-ChapUsername $connection_info.auth_username

}

foreach ($connection in $connections) {$disk = Get-Disk –iSCSISession $connectionSet-Disk -Number $disk.Number -IsOffline $FalseSet-Disk -Number $disk.Number -IsReadonly $False}

$volume = Get-Volume -FileSystemLabel "SQLData”$mdf = "$($volume.DriveLetter)\Data\MyDB.mdf”$ldf = "$($volume.DriveLetter)\Data\MyDB.ldf”Invoke-Sqlcmd @"USE [master]CREATE DATABASE [MyDB] ON (FILENAME = '$mdf'), (FILENAME = '$ldf') FOR ATTACH"@ -QueryTimeout 3600 -ServerInstance 'Local-Instance'

Page 24: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 24

Scenario #1 - References

https://docs.microsoft.com/powershell/module/microsoft.powershell.utility/invoke-restmethod

https://developer.openstack.org/api-ref/block-storage/

Page 25: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 25

Scenario #2

Managing system configurations Need to include standard storage configuration Ansible playbook configures volumes through

Cinder

Page 26: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 26

Scenario #2 – Setup

Services usedCinder, Keystone

PlatformAny Ansible supported environment

ExampleConfiguration management using Ansible

Page 27: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 27

Scenario #2 – Cinder task

- name: create data volumehosts: localhosttasks:- name: Create 100g volume

os_volume:state: presentcloud: test-labsize: 100display_name: {{ ansible_hostname }} Data Vol

Page 28: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 28

Scenario #2 – clouds.yaml

clouds:test-lab:region_name: test_labauth:username: ‘autovonbot’password: password1project_name: ‘IT’auth_url: 'http://192.168.1.230/identity/'

Page 29: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 29

Scenario #2 - Sidebar

connection = openstack.connect(cloud='test-lab')

volume = connection.create_volume(10, name='New Boot Vol', image=image_id, wait=True)

Page 30: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 30

Scenario #2 – Cinder task

- name: create data volumehosts: localhosttasks:- name: Create 100g volume

os_volume:state: presentcloud: test-labsize: 100display_name: {{ ansible_hostname }} Data Vol

Page 31: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 31

Scenario #2 – Storage Configuration- parted:

device: /dev/sdbnumber: 1state: present

- filesystem:fstype: ext4dev: /dev/sdb1

- mount:path: /datasrc: UUID=c3f48145-fa3b-4bbe-a700-a2a179ec9077fstype: ext4state: present

Page 32: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 32

Scenario #2 - References

http://docs.ansible.com/ansible/latest/modules/os_volume_module.html

https://www.ansible.com/

https://docs.openstack.org/openstacksdk/

Page 33: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 33

Scenario #3

Local script scheduled to run periodically Check for volume space consumption If low, automatically extend volume

Page 34: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 34

Scenario #3 - Setup

Services usedCinder, Keystone

PlatformBaremetal or VM

ExampleScripted CLI usage

Page 35: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 35

Scenario #3 - Script

stats=`df -H /SanVol | tail -1`

size=`echo $stats | awk '{print $2}' | sed -e "s/G//"`used=`echo $stats | awk '{print $5}' | sed -e "s/\%//”`

if [ $used -gt 90 ]; then# Need to extend the volumeopenstack volume extend MyDataVol $(($size + 10))

# Resize the local volumediskutil cs resizeStack \

d3eaf95e-e2e0-4410-9c96-6f093f91407a $(($size +10))fi

Page 36: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 36

Scenario #3 - Script

stats=`df -H /SanVol | tail -1`

size=`echo $stats | awk '{print $2}' | sed -e "s/G//"`used=`echo $stats | awk '{print $5}' | sed -e "s/\%//”`

if [ $used -gt 90 ]; then# Need to extend the volumeopenstack volume extend MyDataVol $(($size + 10))

# Resize the local volumediskutil cs resizeStack \

d3eaf95e-e2e0-4410-9c96-6f093f91407a $(($size +10))fi

Page 37: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 37

Scenario #3 - Script

stats=`df -H /SanVol | tail -1`

size=`echo $stats | awk '{print $2}' | sed -e "s/G//"`used=`echo $stats | awk '{print $5}' | sed -e "s/\%//”`

if [ $used -gt 90 ]; then# Need to extend the volumeopenstack volume extend MyDataVol $(($size + 10))

# Resize the local volumediskutil cs resizeStack \

d3eaf95e-e2e0-4410-9c96-6f093f91407a $(($size +10))fi

Page 38: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 38

Scenario #3 - Script

stats=`df -H /SanVol | tail -1`

size=`echo $stats | awk '{print $2}' | sed -e "s/G//"`used=`echo $stats | awk '{print $5}' | sed -e "s/\%//”`

if [ $used -gt 90 ]; then# Need to extend the volumeopenstack volume extend MyDataVol $(($size + 10))

# Resize the local volumediskutil cs resizeStack \

d3eaf95e-e2e0-4410-9c96-6f093f91407a $(($size +10))fi

Page 39: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 39

Scenario #3 – References

https://docs.openstack.org/python-openstackclient/

Page 40: OpenStack Cinder as an SDS API - SNIA · 2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 1 OpenStack Cinder as an SDS API Sean McGinnis Huawei

2018 Storage Developer Conference. © 2018 Huawei. All Rights Reserved. 40

Thank You

Please share your experiences and use cases!@SeanTMcGinnis