1 Laatst bewerkt door blacksun (18 Jun 2014 19:30:28)

Onderwerp: Bouw van een Cloud Lab omgeving voor thuis.

Omdat er de laatste flink wat nieuwe ontwikkelingen zijn heb ik besloten om mijn thuislab omgeving
wat uit te breiden.

Na afweging heb ik besloten om een Opencloud omgeving op te zetten.
Met minstens wat smaken Linux, MacOSX en Windows 8 virtual machines.
Verder moet de nieuwe setup energiezuinig en stil zijn.
( Aan de hand van mijn enthousiasme zal ik dan dit topic uitbreiden. )

Hardware: 2 physieke machines + storage

  • 2x Intel Core i5 3470T - 2.9 GHz 3MB Cache 2.9GHZ

  • 2x Lian Li PC-Q16 - - minitowermodel - mini ITX 300

  • 2x Scythe Kozuti SCKZT-1000 1.5U Low Profile (nog niet binnen)

  • 2x Gigabyte GA-Z77N-WIFI - Moederbord - mini ITX (met 2 Gigabit links)

  • 4x Corsair Vengeance - Geheugen - 16 GB : 4 x 8 GB

  • 2x Samsung 250 GB SSD's

Storage

  • 1x QNAP TS-239 Pro II+ Turbo NAS (ISCSI support + 2Gigabit links) (van zolder)

  • 2x 2x Seagate Barracuda 7200 Sata 600 (van zolder)

Remote management
Voor 365 euro kun je deze KVM over IP oplossingen aanschaffen.
Ideaal om vanaf werk je servers te beheren

  • 2x Lantronix SpiderDuo (USB)

Software

  • Openstack, Centos 6.5, CFEngine/Puppet/Foreman , Spacewalk

Uitleg en eisen
Op server1 is cloud controller (met alle services) geinstalleerd met compute server.
ip 192.168.1.17

Op server2 is  een extra "compute" server.
ip 192.168.1.18

Bouw
De bouw was vrijwel vlekkeloos verlopen. Het viel mij op dat je beter de stock coolers kunt gebruiken.
Bovenstaande koelers zijn iets te groot waardoor je de PCI-Express slot niet meer kunt gebruiken.
Ook zou ik bovenstaande moederborden inwisselen voor LGA1150 in plaats van Ivy Bridge LGA1155.
  * Bios: zet op beide de fans op silent
  * zet direct IO en alles met virtualisation aan.

Voorbereiding
Na het installeren van CentOS 6.5 zorg je dat het volgende in orde is op beide machines:
  * schakel SELinux uit, installeer ntp, schakel NetworkManager uit:

yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
yum install -y openstack-packstack
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
yum -y install ntp
chkconfig network on
chkconfig NetworkManager off
chkconfig bluetooth off
chkconfig iptables on
chkconfig ntpd on
chkconfig sshd on
yum remove -y PackageKit
yum install -y mariadb-galera-server
yum install -y system-config-network openvswitch

Maak je netwerk verder op orde (op beide machines)
Met system-config-network kun je eenvoudig je netwerk configureren.
Mijn thuisnetwerk ziet er als volgt uit:
  * 192.168.1.192 tm 192.168.1.223 wordt straks door openstack gebruikt
  * gateway 192.168.1.1 (  internet router )
  * domein example.local 
  * qnap01 192.168.1.3  NAS storage en DNS server (ik heb BIND geinstalleerd)

# /etc/hosts op server1
192.168.1.17 server1.example.local server1
# /etc/hosts op server2
192.168.1.18 server2.example.local server2

Door bovenstaande instellingen in /etc/hosts kunnen de machines elkaar vinden.

We gaan nu een bridge br-ex installeren om onze fysieke netwerk met het virtuele netwerk te koppelen.
Dit doen we met de volgende instellingen op server1. (Op server2 doe je hetzelfde met 192.168.1.18 )

# /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE="br-ex"
BOOTPROTO="none"
IPADDR="192.168.1.17"
NETMASK="255.255.255.0"
DNS1="192.168.1.3"
BROADCAST="192.168.1.255"
GATEWAY="192.168.1.1"
NM_CONTROLLED="no"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT=no
ONBOOT="yes"
TYPE="OVSBridge"
DEVICETYPE="ovs"

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT="yes"
TYPE="OVSPort"
DEVICETYPE="ovs"
OVS_BRIDGE=br-ex
NM_CONTROLLED=no
IPV6INIT=no

Installeer Openstack
Bron: https://cunninghamshane.com/my-all-in-o … t-at-home/
Bron: openstack.redhat.com/Main_Page
Om een oude versie van openstack te deinstalleren gebruik ik het volgende uninstall.sh script:

# Warning! Dangerous step! Destroys VMs
for x in $(virsh list --all | grep instance- | awk '{print $2}') ; do
    virsh destroy $x ;
    virsh undefine $x ;
done ;

# Warning! Dangerous step! Removes lots of packages, including many
# which may be unrelated to RDO.
yum remove -y nrpe "*nagios*" puppet ntp ntp-perl ntpdate "*openstack*" \
"*nova*" "*keystone*" "*glance*" "*cinder*" "*swift*" \
mysql mysql-server httpd "*memcache*" scsi-target-utils \
iscsi-initiator-utils perl-DBI perl-DBD-MySQL ;

ps -ef | grep -i repli | grep swift | awk '{print $2}' | xargs kill ;

# Warning! Dangerous step! Deletes local application data
rm -rf /etc/nagios /etc/yum.repos.d/packstack_* /root/.my.cnf \
/var/lib/mysql/ /var/lib/glance /var/lib/nova /etc/nova /etc/swift \
/srv/node/device*/* /var/lib/cinder/ /etc/rsync.d/frag* \
/var/cache/swift /var/log/keystone ;

umount /srv/node/device* ;
killall -9 dnsmasq tgtd httpd ;
setenforce 1 ;
vgremove -f cinder-volumes ;
losetup -a | sed -e 's/:.*//g' | xargs losetup -d ;
find /etc/pki/tls -name "ssl_ps*" | xargs rm -rf ;
for x in $(df | grep "/lib/" | sed -e 's/.* //g') ; do
    umount $x ;
done

Het volgende install.sh script installeert Openstack Havana van RDO.
Zie http://openstack.redhat.com/Quickstart . Ik schakel ook de demo omgeving uit.

packstack install --os-ceilometer-install=n --install-hosts=192.168.1.17,192.168.1.18 --novanetwork-privif=lo --os-swift-install=y --nagios-install=n --provision-demo=n --provision-all-in-one-ovs-bridge=n

Als alles goed gaat zie je het volgende

 * A new answerfile was created in: /root/packstack-answers-20140608-160406.txt
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.1.17. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to [url]http://192.168.1.17/dashboard[/url] .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20140608-160406-Zmw4H5/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20140608-160406-Zmw4H5/manifests

Surf naar je dashboard en probeer in te loggen!
Log daarna uit, want we moeten het virtuele netwerk nog configureren.


Neutron: Virtuele Netwerken
Een cruciaal component waar we virtuele netwerken kunnen maken is Neutron.
In Neutron maken we hieronder 2 virtuele netwerken, private en public.

. keystonerc_admin
# Bron: http://www.liquidstate.net/blog/technology/openstack-havana-home-lab-on-centos6-with-external-networking/
PUBLIC_NETWORK_ID=`neutron net-list | grep public | awk '{ print $2 }'`
PRIVATE_SUBNET_ID=`neutron subnet-list | grep private | awk '{ print $2}'`
ADMIN_TENANT_ID=`keystone tenant-list | grep admin | awk '{ print $2}'`
ROUTER_ID=`neutron router-list | grep router | awk '{ print $2}'`

neutron router-create router
neutron net-create private
neutron subnet-create private 10.0.0.0/24 --name private_subnet --dns-nameserver 8.8.8.8
neutron router-interface-add router private_subnet

neutron net-create public --router:external=True
neutron subnet-create public 192.168.1.0/24 --name public_subnet --enable_dhcp=False --allocation-pool start=192.168.1.192,end=192.168.1.223 --gateway=192.168.1.1

neutron router-gateway-set router $PUBLIC_NETWORK_ID
neutron router-interface-add $ROUTER_ID $PRIVATE_SUBNET_ID

neutron security-group-rule-create --protocol icmp --direction ingress default
neutron security-group-rule-create --protocol tcp --port-range-min 22 --port-range-max 22 --direction ingress default
neutron security-group-list

for i in /etc/neutron/*.ini
do
    sed -i "s/^[# ]*ovs_use_veth.*$/ovs_use_veth = True/g" $i
done

sed -i \
    -e "s/^[# ]*enable_isolated_metadata.*$/enable_isolated_metadata = True/g" \
    -e "s/^[# ]*enable_metadata_network.*$/enable_metadata_network = True/g"  \
    /etc/neutron/dhcp_agent.ini

Maak 2 floating ip om je virtual machines aan te hangen:

neutron floatingip-create public
neutron floatingip-create public

Storage
Openstack configureert automatisch je stoage in de vorm van iSCSI storage. Er is zijn ook andere types backend mogelijk: NFS/GlusterFS/Fiber etc.
Om virtual machines (instances) te kunnen starten hebben we eerst wat images nodig. Deze importeren we in Openstack Glance als volgt:

glance image-create --name cirros --is-public true --disk-format qcow2 --container-format bare --copy-from [url]https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img[/url]
glance image-create --name centos65 --is-public true --disk-format qcow2 --container-format bare --copy-from [url]http://repos.fedorapeople.org/repos/openstack/guest-images/centos-6.5-20140117.0.x86_64.qcow2[/url]
nova image-list

[root@server1 ~(keystone_admin)]# glance image-list
+--------------------------------------+----------+-------------+------------------+-----------+--------+
| ID                                   | Name     | Disk Format | Container Format | Size      | Status |
+--------------------------------------+----------+-------------+------------------+-----------+--------+
| 45aa9edb-3992-44ab-8073-4fda8e9a009d | centos65 | qcow2       | bare             | 344457216 | active |
+--------------------------------------+----------+-------------+------------------+-----------+--------+

[root@server1 ~(keystone_admin)]# nova image-list
+--------------------------------------+----------+--------+--------+
| ID                                   | Name     | Status | Server |
+--------------------------------------+----------+--------+--------+
| 45aa9edb-3992-44ab-8073-4fda8e9a009d | centos65 | ACTIVE |        |
+--------------------------------------+----------+--------+--------+


[root@server1 ~(keystone_admin)]# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+

[root@server1 ~(keystone_admin)]# neutron net-list
+--------------------------------------+---------+-----------------------------------------------------+
| id                                   | name    | subnets                                             |
+--------------------------------------+---------+-----------------------------------------------------+
| dea68a17-f65f-4406-8a93-20401b3c630d | public  | 2af35021-e421-45f9-bbb1-8a254222a66b 192.168.1.0/24 |
| c9ba9d57-12e1-44d5-baca-aea000dff199 | private | 23a35b62-1c4b-47f7-8862-24314da64e7e 10.0.0.0/24    |

+--------------------------------------+---------+-----------------------------------------------------+
[root@server1 ~(keystone_admin)]# neutron net-external-list
+--------------------------------------+--------+-----------------------------------------------------+
| id                                   | name   | subnets                                             |
+--------------------------------------+--------+-----------------------------------------------------+
| dea68a17-f65f-4406-8a93-20401b3c630d | public | 2af35021-e421-45f9-bbb1-8a254222a66b 192.168.1.0/24 |
+--------------------------------------+--------+-----------------------------------------------------+


Virtual machines aanmaken
Als laatste zijn we eindelijk in staat om een vm aan te maken in Openstack.
Onderstaand commando creeert een VM genaamd vm1 met 4GB memory, 20GB disk:

[root@server1 ~(keystone_admin)]# nova boot --flavor 3 --block-device source=image,id=9ed82292-2079-4196-87fc-abff5c40abc5,dest=volume,size=20,shutdown=preserve,bootindex=0 --nic net-id=c9ba9d57-12e1-44d5-baca-aea000dff199 --nic net-id=dea68a17-f65f-4406-8a93-20401b3c630d vm1
+--------------------------------------+-------------------------------------------------+
| Property                             | Value                                           |
+--------------------------------------+-------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                          |
| OS-EXT-AZ:availability_zone          | nova                                            |
| OS-EXT-SRV-ATTR:host                 | -                                               |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                               |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000005                               |
| OS-EXT-STS:power_state               | 0                                               |
| OS-EXT-STS:task_state                | scheduling                                      |
| OS-EXT-STS:vm_state                  | building                                        |
| OS-SRV-USG:launched_at               | -                                               |
| OS-SRV-USG:terminated_at             | -                                               |
| accessIPv4                           |                                                 |
| accessIPv6                           |                                                 |
| adminPass                            | MfKuAvM3i8eP                                    |
| config_drive                         |                                                 |
| created                              | 2014-06-15T22:08:52Z                            |
| flavor                               | m1.medium (3)                                   |
| hostId                               |                                                 |
| id                                   | 39b2c465-61d0-4453-a171-bca78b66f961            |
| image                                | Attempt to boot from volume - no image supplied |
| key_name                             | -                                               |
| metadata                             | {}                                              |
| name                                 | vm1                                             |
| os-extended-volumes:volumes_attached | []                                              |
| progress                             | 0                                               |
| security_groups                      | default                                         |
| status                               | BUILD                                           |
| tenant_id                            | cb39a0c3decf44a0ba748a75e1fe8218                |
| updated                              | 2014-06-15T22:08:52Z                            |
| user_id                              | 20c0c4e084804b70a98fd3984502c14f                |
+--------------------------------------+-------------------------------------------------+
[root@server1 ~(keystone_admin)]# nova list
+--------------------------------------+------+--------+----------------------+-------------+----------------------------------------+
| ID                                   | Name | Status | Task State           | Power State | Networks                               |
+--------------------------------------+------+--------+----------------------+-------------+----------------------------------------+
| 39b2c465-61d0-4453-a171-bca78b66f961 | vm1  | BUILD  | block_device_mapping | NOSTATE     | public=192.168.1.200; private=10.0.0.6 |
+--------------------------------------+------+--------+----------------------+-------------+----------------------------------------+

Gefeliciteerd! Je hebt een cloud omgeving met 1 virtual machine smile

[root@server1 ~(keystone_admin)]# nova list
+--------------------------------------+------+--------+------------+-------------+----------------------------------------+
| ID                                   | Name | Status | Task State | Power State | Networks                               |
+--------------------------------------+------+--------+------------+-------------+----------------------------------------+
| 39b2c465-61d0-4453-a171-bca78b66f961 | vm1  | ACTIVE | -          | Running     | public=192.168.1.200; private=10.0.0.6 |
+--------------------------------------+------+--------+------------+-------------+----------------------------------------+

Mocht je alle openstack services snel willen herstarten; dan kan dat met het volgende 

cd /etc/init.d && for service in openstack-*; do service $service restart; done

Laat configuratie files zien zonder commentaar:

cat /etc/cinder/cinder.conf | grep -v ^$ | grep -v ^#

Handy commands 

#list services
nova-manage service list 

Ervaringen
Openstack is erg "cool" en cloud operating systems hebben naar mening de toekomst.
Het klassieke systeembeheer zal steeds meer verdwijnen naar DEV-OPS achtige richtingen.
Ik vond Openstack zelf echter nog niet volwassen genoeg voor grote bedrijven en productie toepassingen.
Storage backends bijv Ceph toevoegen is ook niet echt makkelijk.
Sommige van bovenstaande acties kun je ook in de Openstack webinterface  uitvoeren, maar lang niet alles.
Vaak kom ik tegen problemen aan die zeer lastig zijn op te lossen, waaronder soms kritieke bugs die de stabiliteit van je hele omgeving aantasten.
Toch is het heel leerzaam om een dergelijke omgeving thuis op te bouwen.
Bij iedere release wordt Openstack weer een stukje beter en de ontwikkeling gaat razend snel!

OSX , Fedora 22 en CentOS 7

2 Laatst bewerkt door 5Tgff##2699Jbv!!rrOn (23 Jun 2013 19:14:46)

Re: Bouw van een Cloud Lab omgeving voor thuis.

Ben benieuwd naar je ervaringen over Openstack

3

Re: Bouw van een Cloud Lab omgeving voor thuis.

Dit gaat een mooie topic worden met jaloersmakende budgetten & configuraties, maarre ......

"ik wil graag een schijf kopen"  "O, voor uw thuisnetwerk?" "Nee, voor mijn private-cloud"     <zucht>
(of is dit voor je C.V., dan is het goed smile )

“Legacy system, you say? Would that be the system that runs the applications that keep your factories humming, your trucks rolling, and your customer invoices flowing? You know, the applications that make you money and keep your business alive? You mean that legacy system?”
  - Robert Catterall

Re: Bouw van een Cloud Lab omgeving voor thuis.

haha ik snap je punt; velen worden al misselijk bij het horen van buzzwords als cloud.
Desalniettemin zal ik proberen om er een leuk stukje van te maken.

OSX , Fedora 22 en CentOS 7

5

Re: Bouw van een Cloud Lab omgeving voor thuis.

En verder...? wink

Dit was 't.
Ik vertrek naar mijn huis in Spanje.
Veel plezier nog hier.