A R C H I T E C T U R E O F A C L O U D S E R V I C E U S I N G - - PowerPoint PPT Presentation

a r c h i t e c t u r e o f a c l o u d s e r v i c e u s
SMART_READER_LITE
LIVE PREVIEW

A R C H I T E C T U R E O F A C L O U D S E R V I C E U S I N G - - PowerPoint PPT Presentation

A B R A H A M M A RT I N @ A B R A H A M _ M A RT I N C A R C H I T E C T U R E O F A C L O U D S E R V I C E U S I N G P Y T H O N T E C H N O L O G I E S M A N A G E D W E B S E R V I C E Born to solve a problem around university


slide-1
SLIDE 1

A R C H I T E C T U R E O F A C L O U D S E R V I C E U S I N G P Y T H O N T E C H N O L O G I E S

A B R A H A M M A RT I N @ A B R A H A M _ M A RT I N C

slide-2
SLIDE 2

M A N A G E D W E B S E R V I C E

  • Born to solve a problem around university
  • Servers under desks
  • Security problems
slide-3
SLIDE 3

M A N A G E D W E B S E R V I C E

  • Managed:
  • Software/OS maintained by us
  • Web hosting capabilities (PHP

, CGIs, MySQL…)

  • No backups worries
  • Dedicated resources (v2)
slide-4
SLIDE 4

M A N A G E D W E B S E R V I C E

  • v1
  • Solaris 7, Apache 1.3, PHP 4.3, MySQL 4.1…
  • home-grown system involving chroot and loop back mounts
  • v2
  • Updated Software (Solaris 10, Apache 2, PHP5, MySQL,

perl…)

  • Solaris Zones
slide-5
SLIDE 5

M A N A G E D W E B S E R V I C E

  • v2
  • Database driven (scripts launched)
  • NIS and NFS server
  • Replicated but manual failover
  • ZFS
  • vhosts, aliases…
  • Manual process (or executing scripts) but not available for end

users

slide-6
SLIDE 6

M A N A G E D W E B S E R V I C E

  • v2
  • > 200 users
  • > 400 websites
slide-7
SLIDE 7

M A N A G E D W E B S E R V I C E

  • Falcon
  • Plone based
  • >200 sites
slide-8
SLIDE 8

M A N A G E D W E B S E R V I C E

  • v3
  • Restart
  • Complete Isolation, dedicated VMs
  • No root access
  • Managed and maintained by “us” but still offering

same (and more) options

  • Web panel to delegate users some power
slide-9
SLIDE 9

M A N A G E D W E B S E R V I C E

  • v3
  • Debian 8 (AMP by default)
  • Other apache mods available (e.g. mod_wsgi)
  • List of system packages available to install
  • Authorisation, vhost, dns, tls, backups, password reset,

and power management given to the user

  • Fully automated processes based on a web panel.
slide-10
SLIDE 10
slide-11
SLIDE 11
slide-12
SLIDE 12

M A N A G E D W E B S E R V I C E

  • v3
  • Test server (for testing upgrades, changes, etc)
  • Clone options
slide-13
SLIDE 13

A R C H I T E C T U R E

slide-14
SLIDE 14

V M A R C H I T E C T U R E

  • Dedicated Managed VMs
  • VMWare solution
  • vSphere control panel + APIs
  • ESXi servers
  • External backup server
  • No replicated
slide-15
SLIDE 15

V M A R C H I T E C T U R E

  • Flow
  • Django web panel receives request from authenticated

user

  • A hostname and IPs (4&6) are allocated
  • VM API to create a new VM
  • VM API to install OS (Callback when VM ready)
  • Ansible is executed
slide-16
SLIDE 16

A N S I B L E

  • Application Deployment + Configuration

Management + Continuous Delivery

  • Inventory of targets (dynamic or static)
  • Roles (DB server, Web server, etc)
  • A target can have more than one role
  • Playbook: Targets and roles
slide-17
SLIDE 17

A N S I B L E P L AY B O O K

  • #mwsclients.yml; playbook for MWS client machines
  • hosts: mwsclients

gather_facts: no roles:

  • common
  • mwscommon
  • metrics_service
  • mwsclient
  • For each role:
  • tasks (yaml), templates (jinja2), scripts, handlers, vars
slide-18
SLIDE 18

A N S I B L E R O L E

  • #mwsclient/tasks/main.yml - tasks file for the mwsclient role
  • name: update software

apt: upgrade=dist update_cache=yes tags: upgrades

  • name: install base software

apt: state=present name={{item}} with_items: # Base MWS software

  • openssh-server
  • apache2
  • libapache2-mod-ucam-webauth
  • libapache2-mod-php5
  • mysql-server
  • php5
  • php5-gd
  • php5-mysql
  • php5-mcrypt
  • git

# Software for interactive users

  • screen
  • emacs
  • vim-gtk

tags: base_software

  • name: static network configuration

template: dest=/etc/network/interfaces src=interfaces.j2 notify: reboot

slide-19
SLIDE 19

A N S I B L E H A N D L E R

  • #mwsclient/handlers/main.yml - handlers file for the mwsclient role
  • name: reload Apache

service: name=apache2 state=reloaded

  • name: restart autofs

service: name=autofs state=restarted

  • name: reboot

command: shutdown -r -t 1

slide-20
SLIDE 20

A R C H I T E C T U R E

slide-21
SLIDE 21

M A N A G E D W E B S E R V I C E

  • Authentication
  • Raven (potentially Shibboleth/SAML2)
  • Custom auth backend
  • Webauth
slide-22
SLIDE 22

A R C H I T E C T U R E

slide-23
SLIDE 23

A U T H O R I S AT I O N ( L D A P I S H B A S E D )

slide-24
SLIDE 24

A R C H I T E C T U R E

slide-25
SLIDE 25

A U T H O R I S AT I O N ( L D A P I S H B A S E D )

  • *nix users:
  • User is installed in the VM (Using Ansible)
  • UID (important for shared file storage) taken from

Jackdaw (User central database)

  • Periodic task to refresh installed users (in VMs)

authorised via LDAP groups

  • SSH public key uploaded to the web panel
slide-26
SLIDE 26

A R C H I T E C T U R E

slide-27
SLIDE 27

I P R E G I S T E R A P I

  • Preallocated IP addresses
  • cam.ac.uk domains aliases available for users (API)
  • Service/Host addresses
  • SSHFP records and DNSSEC
slide-28
SLIDE 28

The authenticity of host 'test.dev.mws3.csx.cam.ac.uk (131.111.8.73)' can't be established. RSA key fingerprint is 22:e8:32:e4:bb:07:9c:7d:24:7e:96:c2:11:88:51:2d. Are you sure you want to continue connecting (yes/no)?

slide-29
SLIDE 29

A R C H I T E C T U R E

slide-30
SLIDE 30

C E N T R A L I N V E N T O RY

  • Bes++ (django)
  • JSON file with information about all hosts:
  • Location, IP

, hostname, VM properties

  • Pull consumed
slide-31
SLIDE 31

A P I C O M M U N I C AT I O N T Y P E S

  • REST / non REST HTTPS APIs
  • SSH APIs
  • JSON / non JSON
  • Callbacks
slide-32
SLIDE 32

A S Y N C TA S K S

  • Some API calls
  • Background processes
  • Cron jobs
  • Celery
  • Redis
slide-33
SLIDE 33

@shared_task(base=TaskWithFailure, default_retry_delay=5*60, max_retries=288) # Retry each 5 minutes for 24 hours def foo(param): var

slide-34
SLIDE 34

class TaskWithFailure(Task): abstract = True def on_failure(self, exc, task_id, args, kwargs, einfo): LOGGER.error("An error happened")

slide-35
SLIDE 35

CELERYBEAT_SCHEDULE = { 'cronjob1': { 'task': 'apimws.task1', 'schedule': timedelta(hours=1, minutes=30), 'args': () }, }

slide-36
SLIDE 36

M A N A G E D W E B S E R V I C E

  • More features (all Ansible driven)
  • Change DB root passwd
  • Create vhosts
  • Aliases
  • TLS Certs
  • Install some system packages
  • Backups (Snapshots)
slide-37
SLIDE 37

H I G H AVA I L A B I L I T Y

slide-38
SLIDE 38

V M A R C H I T E C T U R E ( 1 )

slide-39
SLIDE 39

V M A R C H I T E C T U R E ( 2 )

slide-40
SLIDE 40

V M A R C H I T E C T U R E ( 3 )

slide-41
SLIDE 41

V M A R C H I T E C T U R E ( 3 )

slide-42
SLIDE 42

A R C H I T E C T U R E

slide-43
SLIDE 43

M A N A G E D W E B S E R V I C E

  • Deployment of Xen servers
  • Three-node cluster
  • Nodes on different location
  • Live migration
  • Deployed using Ansible
  • Different service (API)
slide-44
SLIDE 44
  • name: django collect static files

sudo: yes sudo_user: www-data django_manage: command=collectstatic app_path={{install_web_dir}}/ settings={{django_name}}.production_settings

  • name: disable apache default site

command: a2dissite default removes=/etc/apache2/sites-enabled/000-default.conf

  • name: enable django site

command: a2ensite {{django_name}} creates=/etc/apache2/sites-enabled/{{django_name}}

  • name: install celeryd config file

template: src=celeryd.j2 dest=/etc/default/celeryd notify: restart celery

slide-45
SLIDE 45
  • #mwsserver/handlers/main.yml - handlers for the mws server
  • name: restart apache

service: name=apache2 state=restarted

  • name: restart celery

service: name={{item}} state=restarted with_items:

  • celeryd
  • celerybeat
slide-46
SLIDE 46

S E C U R I T Y

  • No root passwords, only keys
  • Separation of privileges (different users)
  • pre-generation of host keys
  • userv services
  • TLS certs
slide-47
SLIDE 47
slide-48
SLIDE 48

– M A R K N O T T I N G H A M C H A I R O F T H E I E T F H T T P W O R K I N G G R O U P

“The HTTP/2 specification itself won’t require the use of TLS, even though many (or possibly all) browsers will do so for the new protocol.”

slide-49
SLIDE 49
slide-50
SLIDE 50

M E T R I C S A N D L O G G I N G

  • statsd & collectd
  • cluster AMQP message brokers
  • cluster carbon/graphite (storage)
slide-51
SLIDE 51
slide-52
SLIDE 52

M E T R I C S A N D L O G G I N G

slide-53
SLIDE 53