Download - Google Compute Engine Starter Guide

Transcript
Page 1: Google Compute Engine Starter Guide

Google Compute Engine

[email protected] 2014Q1

Page 2: Google Compute Engine Starter Guide

Prepare

● google cloud project● google-cloud-sdk with gcutil● ssh tool

Reference:https://sites.google.com/a/mitac.com.tw/google-cloud-platform/google-compute-engine/gce---sdk-install-and-auth

Page 3: Google Compute Engine Starter Guide

● GCE architecture ● GCE web UI to GCE CLI tool

○ Create, Snapshot, Create from Disk or Snapshot● Network & FW

○ 3-tier network implements● Instance option - start script

○ Using start script build a auto scale service

Today’s Objective

Page 4: Google Compute Engine Starter Guide

Compute Engine Architecture

Network

Firewall

Instances

IP(Static, Dynamic)

L3 Load Balancing

Page 5: Google Compute Engine Starter Guide

Something about GCE

● Billing: 1 Minute Increments, Minimum 10 Minutes● Security:

○ ISO 27001:2005 Certification for GCE, GAE, and GCS ● Location:

○ Region○ Zone

Page 6: Google Compute Engine Starter Guide

About the Instances

● Persistent Disk● Network block storage● Max of 16 disks/instance● Created independently of instance● 1 Virtual CPU is a Hyperthread on Processor● Current processor is 2.6 GHz Intel Sandy Bridge Xeon● No GPU or SSD Options

Page 7: Google Compute Engine Starter Guide

About utility - web ui, gcutil, restful

Page 8: Google Compute Engine Starter Guide

Compute Engine Web UI

Page 9: Google Compute Engine Starter Guide

From Web UI to CLI to RESTful

Page 10: Google Compute Engine Starter Guide

gcutil - Get HELP

➔ gcutil --help➔ gcutil help listinstances

◆ ex: gcutil listinstances --columns=all --format=json➔ https://developers.google.com/compute/docs/gcutil/tips

Page 11: Google Compute Engine Starter Guide

RESTful APIs

https://developers.google.com/apis-explorer/#p/compute/v1/

Page 12: Google Compute Engine Starter Guide

Connect to GCE machine

➔ gcutil ssh [instance id]➔ ssh [username]@[instance-ip] -i [path-to-google-ssh-key]

Page 13: Google Compute Engine Starter Guide

Windows connect GCE

● Prepare ssh private key for project metadata [Ref]

[username]:ssh-rsa [private keys value]

Page 14: Google Compute Engine Starter Guide

Network & Firewall & Instance Scripts

Page 15: Google Compute Engine Starter Guide

Sample of create N-Tier

● Security purpose● Permission control● Management purpose● Tiers

○ admin: VPN, management purpose

○ frontend: web server, for public connect

○ db: storing data, sensitive areahttp://gappsnews.blogspot.tw/search?q=n-tier

Page 16: Google Compute Engine Starter Guide

# service portgcutil addfirewall --allowed_tag_sources=frontend --network=my-network --allowed=tcp:80,tcp:443 myfw-service-port

# ap to dbgcutil addfirewall --allowed_tag_sources=frontend --target_tags=db --network=my-network --allowed=tcp:5984 myfw-couchdb-port

# admin zonegcutil addfirewall --allowed_ip_sources=0.0.0.0/8 --network=my-network --allowed=tcp:22 myfw-admin-ssh

gcutil addfirewall --allowed_tag_sources=admin --target_tags=frontend,db --network=my-network --allowed=tcp:22 myfw-manage-zone

Sample of create N-Tier - Network ACLs

Page 17: Google Compute Engine Starter Guide

Sample of create N-Tier - VPN & Web servergcutil --project="my-project" addinstance "my-gateway" \

--tags="admin" --zone="us-central1-b" --machine_type="g1-small" \

--network="my-network" --external_ip_address="ephemeral" \

--can_ip_forward="true" \

--image="https://www.googleapis.com/compute/v1/projects/.../global/images/..." \

--persistent_boot_disk="true"

gcutil --project="my-project" addinstance "my-web-01" \

--tags="frontend" --zone="us-central1-b" --machine_type="n1-standard-1" \

--network="my-network" --external_ip_address="ephemeral" \

--can_ip_forward="true" \

--image="https://www.googleapis.com/compute/v1/projects/.../global/images/..." \

--persistent_boot_disk="true"

Page 18: Google Compute Engine Starter Guide

Instance option - Start Script$ cat -> install-couchdb.sh << EOF

sudo apt-get update -y

sudo apt-get install gcc openssl couchdb -y

EOF

$ gcutil --service_version="v1" \

--project="my-project" addinstance "my-couchdb-01" \

--tags="db" --zone="us-central1-b" --machine_type="n1-highmem-2" \

--network="my-network" --external_ip_address="ephemeral" \

--can_ip_forward="true" \

--image="https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-6-v20131120" \

--persistent_boot_disk="true"

--metadata_from_file=startup-script:install-couchdb.sh

Page 19: Google Compute Engine Starter Guide

Share your project

● Is Owner: resource management, project permission● Can Edit: resource management● Can View: resource view

Page 20: Google Compute Engine Starter Guide

● Add persistent disk● Create image● Bring your own kernel (brief)

Advance operations

Page 21: Google Compute Engine Starter Guide

Add a Persistent Disk...

➔ gcutil adddisk --zone=us-central1-a testdisk➔ gcutil ssh [instance name]➔ sudo mkdir /mnt/pd0➔ sudo /usr/share/google/safe_format_and_mount \

-m "mkfs.ext4 -F" /dev/disk/by-id/[disk-id] /mnt/pd0

Page 22: Google Compute Engine Starter Guide

Create a Image...

➔ sudo gcimagebundle -d /dev/sda -o /tmp/ \ --log_file=/tmp/abc.log

➔ gsutil cp /tmp/308...439.image.tar.gz \ gs://arecord-customise-images

➔ gcutil addimage test-image \ gs://arecord-customise-images/308...439.image.tar.gz

Page 23: Google Compute Engine Starter Guide

Porting recommendation

● Install LAMPsudo yum -y install httpd php php-mysql mysql mysql-serversudo yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt

● FW configure (GCE default enabled the iptables)sudo vi /etc/sysconfig/iptables⇒ Add your port… like 80, 443...

● SELinux setting (GCE default enable the SELinux)sudo vi /etc/sysconfig/selinux⇒ SELINUX=disabled

● Setup boot level servicessudo chkconfig --level 23456 mysqld onsudo chkconfig --level 23456 httpd on

Page 24: Google Compute Engine Starter Guide

Porting recommendation

● Mount persistence disk when boot$ sudo vi /etc/fstabUUID=a8cf...aaf98 / ext4 defaults,barrier=0 1 1

tmpfs /dev/shm tmpfs defaults 0 0devpts /dev/pts devpts gid=5,mode=620 0 0sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/sdb /mnt/pd0 ext4 defaults 1 1

Page 25: Google Compute Engine Starter Guide

Bring Your Own Image

● Any common Linux distro● Must support some specific kernel settings (e.g.,

specific PCI and ISA bridge, vCPU settings, SCSI settings)

● Must have Python 2.6 or higher & sshd● Must contain some Google packages (startup script

support, google-daemon, gcimagebundle)● Should have other settings configured (e.g. DHCP,

SSH, firewall)

Page 26: Google Compute Engine Starter Guide