1. {CoreOS in anger Shaun Domingo - @sdomsta Head of Tech and
Operations @ Ninefold
2. The inevitable recap
3. Why CoreOS? Built-in clustering Few binaries No packaging
system Dependent on containers for managing software and apps Light
weight, fat-free Automatic updates
4. A single, distributed init system Encourages small,
ephemeral units / services Schedules units into the cluster based
on declared conflicts in systemd unit files Fault tolerant Can be
managed locally or remotely by fleetctl CoreOS building blocks
systemd fleet etcd
8. mkdir ~/coreos; cd ~/coreos git clone
https://github.com/coreos/coreos- vagrant.git 1b: Clone the coreos-
vagrant repo
9. cd coreos-vagrant cp config.rb.sample config.rb vim
config.rb change $num_instances: $num_instances=3 change
$update_channel: $update_channel=beta Change $forwarded_ports:
$forwarded_ports = {8000 => 8888} 1c: modify your config.rb Well
use this later Youll get 3 CoreOS VMs alpha if you like bleeding
edge, stable if you want to stay sane.
10. Visit https://discovery.etcd.io/new?size=3 (youll need a
new one every time you destroy a cluster) Copy the entire URL
provided in the body of the response 1d: get yourself a discovery
token
12. The $private_ipv4 and $public_ipv4 substitutio n variables
are fully supported in cloud-config on Vagrant. They will map to
the first statically defined private and public networks defined in
the Vagrantfile. A note on $private_ipv4 and $public_ipv4
substitution variables
13. Examine the vagrant file
14. vagrant up vagrant status 1f: magic
15. ACHIEVEMENT UNLOCKED!
16. Exercise 2: Get talking to your cluster
17. https://github.com/coreos/fleet/releases Unzip, add the
binary to your path (.bashrc / .bash_profile / .zshrc)
PATH=$PATH:/path/to/fleetctl Restart your terminal 2a: Download
fleetctl
18. cd /path/to/coreos-vagrant eval $(ssh-agent) # Add the
correct vagrant .ssh identity vagrant ssh-config | sed -n
"s/IdentityFile//gp" | uniq | xargs ssh-add 2b: start your engines
Ensure ssh-agent is running NOTE: Youll need to rerun these steps
each time you blow away your vagrant CoreOS cluster.
19. export FLEETCTL_TUNNEL="127.0.0.1:$(vagrant ssh- config |
grep -i 'port' | awk '{print $2; exit}')" # remove your fleet known
hosts rm ~/.fleetctl/known_hosts 2c: Prepare for takeoff NOTE:
Youll need to rerun these steps each time you blow away your
vagrant CoreOS cluster.
20. fleetctl list-machines 2d: go go go
21. Need to tweak? Do it all in the comfort of 127.0.0.1.
22. Exercise 3: Web Scale
23. Containers, microservices => stateless Containers =>
spin them up quick Load balancing => how does it work?
Considerations at scale
24. When we start a unit, auto-add it to the web cluster When
we destroy a unit, auto-remove it from the web cluster When a
container is flakey, dont use it Spin up lots of my units without a
hassle Desired
25. +----------------------------+ | | | Web server / RP | | |
+-------------+--------------+ | +-------------+--------------+ | |
| App server | | | +-------------+--------------+ |
+-------------+--------------+ | | | Database | | |
+----------------------------+ Standard 3-tier architecture
26. +----------------------------+ | | | Web server / RP | | |
+-------------+--------------+ | +-------------+--------------+ | |
| App server | | | +-------------+--------------+ |
+-------------+--------------+ | | | Database | | |
+----------------------------+ just wont work here. Needs to scale,
be fault tolerant, have speed and be nearby.
27. +----------------------------+ | | | Web server / RP | | |
+-------------+--------------+ | +-------------+--------------+ | |
| App server | | | +-------------+--------------+ |
+-------------+--------------+ | | | Database | | |
+----------------------------+ just wont work here. Needs to be
stateless, needs to focus on dynamic workloads.
28. +----------------------------+ | | | Web server / RP | | |
+-------------+--------------+ | +-------------+--------------+ | |
| App server | | | +-------------+--------------+ |
+-------------+--------------+ | | | Database | | |
+----------------------------+ just wont work here. Needs to handle
caching, should really be a CDN, should be great at delivering
static content.
29. CDN is a must S3 for asset sync Cache as much as you can
varnish, CloudFront Load balancing Web server as a RP App server /
runtime Database as a service Key/value store e.g. redis, cache as
much as you can To achieve true web scale
30. Tonights example: Wordpress at (localhost) scale A
traditional app, not written with containers and true scale in
mind. Yet it is still incredibly popular as a blogging and web
platform worldwide. Localhost scale