Friday, February 28, 2014

USB Redirection hack on "Two Node Controller&Compute Neutron GRE+OVS" Fedora 20 Cluster

   I clearly understand that only incomplete  Havana RDO setup allows me to activate spice USB redirection communicating with cloud instances.
There is no dashboard ( Administrative Web Console ) on Cluster. All information
regarding nova instances status, neutron subnets,routers,ports is supposed to be obtained via CLI as well as managing instances, subnets,routers,ports and rules is also supposed to be done via CLI, having  carefully watch sourcing "keystonerc_user"  file to manage in environment of particular user of particular tenant.
   Also I have to mention that  to create new instance I must have in `nova list` no more then four entries. Then I will be able create new one instance for sure.  It has been tested on two  "Two Node Neutron GRE+OVS Systems" It is related with `nova quota-show`  for tenant (10 instances is default ). Having 3 vms on Compute I brought up openstack-nova-compute on Controller and was able to create 2 vms more on Compute and 5 vms on Controller. View https://ask.openstack.org/en/question/11746/openstack-nova-scheduler-service-cannot-any-longer-connect-to-amqp-server-performing-nova-boot-on-fedora-20/



Manual Setup  ( view [2]  http://bderzhavets.blogspot.com/2014/01/setting-up-two-physical-node-openstack.html )
- Controller node: Nova, Keystone, Cinder, Glance, Neutron (using Open vSwitch plugin and GRE tunneling )
 - Compute node: Nova (nova-compute), Neutron (openvswitch-agent)
 
dwf02.localdomain   -  Controller (192.168.1.127)
dwf01.localdomain   -  Compute   (192.168.1.137)
Controller status :-

[root@dfw02 ~(keystone_admin)]$ openstack-status
== Nova services ==
openstack-nova-api:                     active
openstack-nova-cert:                    inactive  (disabled on boot)
openstack-nova-compute:                 inactive  (disabled on boot)
openstack-nova-network:                 inactive  (disabled on boot)
openstack-nova-scheduler:               active
openstack-nova-volume:                  inactive  (disabled on boot)
openstack-nova-conductor:               active
== Glance services ==
openstack-glance-api:                   active
openstack-glance-registry:              active
== Keystone service ==
openstack-keystone:                     active
== neutron services ==
neutron-server:                         active
neutron-dhcp-agent:                     active
neutron-l3-agent:                       active
neutron-metadata-agent:                 active
neutron-lbaas-agent:                    inactive  (disabled on boot)
neutron-openvswitch-agent:              active
neutron-linuxbridge-agent:              inactive  (disabled on boot)
neutron-ryu-agent:                      inactive  (disabled on boot)
neutron-nec-agent:                      inactive  (disabled on boot)
neutron-mlnx-agent:                     inactive  (disabled on boot)
== Cinder services ==
openstack-cinder-api:                   active
openstack-cinder-scheduler:             active
openstack-cinder-volume:                active
== Ceilometer services ==
openstack-ceilometer-api:               inactive  (disabled on boot)
openstack-ceilometer-central:           inactive  (disabled on boot)
openstack-ceilometer-compute:           active
openstack-ceilometer-collector:         inactive  (disabled on boot)
openstack-ceilometer-alarm-notifier:    inactive  (disabled on boot)
openstack-ceilometer-alarm-evaluator:   inactive  (disabled on boot)
== Support services ==
mysqld:                                 inactive  (disabled on boot)
libvirtd:                               active
openvswitch:                            active
dbus:                                   active
tgtd:                                   active
qpidd:                                  active
== Keystone users ==
+----------------------------------+---------+---------+-------+
|                id                |   name  | enabled | email |
+----------------------------------+---------+---------+-------+
| 970ed56ef7bc41d59c54f5ed8a1690dc |  admin  |   True  |       |
| 162021e787c54cac906ab3296a386006 |  boris  |   True  |       |
| 1beeaa4b20454048bf23f7d63a065137 |  cinder |   True  |       |
| 006c2728df9146bd82fab04232444abf |  glance |   True  |       |
| 5922aa93016344d5a5d49c0a2dab458c | neutron |   True  |       |
| af2f251586564b46a4f60cdf5ff6cf4f |   nova  |   True  |       |
+----------------------------------+---------+---------+-------+
== Glance images ==
+--------------------------------------+---------------------------------+-------------+------------------+-------------+--------+
| ID                                   | Name                            | Disk Format | Container Format | Size        | Status |
+--------------------------------------+---------------------------------+-------------+------------------+-------------+--------+
| a6e8ef59-e492-46e2-8147-fd8b1a65ed73 | CentOS 6.5 image                | qcow2       | bare             | 344457216   | active |
| dc992799-7831-4933-b6ee-7b81868f808b | CirrOS31                        | qcow2       | bare             | 13147648    | active |
| 03c9ad20-b0a3-4b71-aa08-2728ecb66210 | Fedora 19 x86_64                | qcow2       | bare             | 237371392   | active |
| de93ee44-4085-4111-b022-a7437da8feac | Fedora 20 image                 | qcow2       | bare             | 214106112   | active |
| e70591fc-6905-4e57-84b7-4ffa7c001864 | Ubuntu Server 13.10             | qcow2       | bare             | 244514816   | active |
| b7d54434-1cc6-4770-82f3-c8619952575c | Ubuntu Trusty Tar 02/23/14      | qcow2       | bare             | 261029888   | active |
| 07071d00-fb85-4b32-a9b4-d515088700d0 | Windows Server 2012 R2 Std Eval | vhd         | bare             | 17182752768 | active |
+--------------------------------------+---------------------------------+-------------+------------------+-------------+--------+
== Nova managed services ==
+----------------+-------------------+----------+---------+-------+----------------------------+-----------------+
| Binary         | Host              | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----------------+-------------------+----------+---------+-------+----------------------------+-----------------+
| nova-scheduler | dfw02.localdomain | internal | enabled | up    | 2014-02-28T06:32:03.000000 | None            |
| nova-conductor | dfw02.localdomain | internal | enabled | up    | 2014-02-28T06:32:03.000000 | None            |
| nova-compute   | dfw01.localdomain | nova     | enabled | up    | 2014-02-28T06:31:59.000000 | None            |
+----------------+-------------------+----------+---------+-------+----------------------------+-----------------+
== Nova networks ==
+--------------------------------------+-------+------+
| ID                                   | Label | Cidr |
+--------------------------------------+-------+------+
| 1eea88bb-4952-4aa4-9148-18b61c22d5b7 | int   | None |
| 426bb226-0ab9-440d-ba14-05634a17fb2b | int1  | None |
| 780ce2f3-2e6e-4881-bbac-857813f9a8e0   | ext   | None |
+--------------------------------------+-------+------+
== Nova instance flavors ==
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 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      |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
== Nova instances ==
+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+

[root@dfw02 ~(keystone_boris)]$ nova list
+--------------------------------------+-----------+-----------+------------+-------------+------------------------------+
| ID                                   | Name      | Status    | Task State | Power State | Networks                     |
+--------------------------------------+-----------+-----------+------------+-------------+------------------------------+
| 5fcd83c3-1d4e-4b11-bfe5-061a03b73174 | UbuntuRSX | SUSPENDED | None       | Shutdown    | int1=40.0.0.5, 192.168.1.120 |
| 7953950c-112c-4c59-b183-5cbd06eabcf6 | VF19WXL   | SUSPENDED | None       | Shutdown    | int1=40.0.0.6, 192.168.1.121 |
| 784e8afc-d41a-4c2e-902a-8e109a40f7db | VF20GLS   | SUSPENDED | None       | Shutdown    | int1=40.0.0.4, 192.168.1.102 |
| 9b156b85-a6a1-4f15-bffa-6fdb124f8cff | VF20WXL   | SUSPENDED | None       | Shutdown    | int1=40.0.0.2, 192.168.1.101 |
+--------------------------------------+-----------+-----------+------------+-------------+------------------------------+

 [root@dfw02 ~(keystone_admin)]$ nova-manage service list
Binary           Host                                 Zone             Status     State Updated_At
nova-scheduler   dfw02.localdomain                    internal         enabled    :-)   2014-02-28 11:47:25
nova-conductor   dfw02.localdomain                    internal         enabled    :-)   2014-02-28 11:47:25
nova-compute     dfw01.localdomain                    nova             enabled    :-)   2014-02-28 11:47:19


[root@dfw02 ~(keystone_admin)]$ neutron agent-list
+--------------------------------------+--------------------+-------------------+-------+----------------+
| id                                   | agent_type         | host              | alive | admin_state_up |
+--------------------------------------+--------------------+-------------------+-------+----------------+
| 037b985d-7a7d-455b-8536-76eed40b0722 | L3 agent           | dfw02.localdomain | :-)   | True           |
| 22438ee9-b4ea-4316-9492-eb295288f61a | Open vSwitch agent | dfw02.localdomain | :-)   | True           |
| 76ed02e2-978f-40d0-879e-1a2c6d1f7915 | DHCP agent         | dfw02.localdomain | :-)   | True           |
| 951632a3-9744-4ff4-a835-c9f53957c617 | Open vSwitch agent | dfw01.localdomain | :-)   | True           |
+--------------------------------------+--------------------+-------------------+-------+----------------+



Create F20 instance per http://bderzhavets.blogspot.com/2014/01/setting-up-two-physical-node-openstack.html 
and run on newly built instance :-

# yum -y update
# yum -y install spice-vdagent
# reboot

Connect via virt-manager and switch to Properties tab :-


   1. Switch to Spice Server
   2. Switch to Video QXL
   3. Add Hardware "Spice agent(spicevmc)"
   4. Add Hardware "USB Redirection"
       Spice channel

 


  

Then :-
[root@dfw02 ~(keystone_boris)]$  nova reboot VF20GLS 


 
Plug in USB pen on Controller

 

[ 6443.772131] usb 1-2.1: USB disconnect, device number 5
[ 6523.996983] usb 1-2.1: new full-speed USB device number 6 using uhci_hcd
[ 6524.278848] usb 1-2.1: New USB device found, idVendor=0951, idProduct=160e
[ 6524.281206] usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6524.282055] usb 1-2.1: Product: DataTraveler 2.0
[ 6524.284851] usb 1-2.1: Manufacturer: Kingston
[ 6524.290527] usb 1-2.1: SerialNumber: 000AEB920161SK861E1301F6
[ 6524.369667] usb-storage 1-2.1:1.0: USB Mass Storage device detected
[ 6524.379638] scsi4 : usb-storage 1-2.1:1.0
[ 6525.420794] scsi 4:0:0:0: Direct-Access     Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[ 6525.459504] sd 4:0:0:0: Attached scsi generic sg0 type 0
[ 6525.526419] sd 4:0:0:0: [sdb] 7856128 512-byte logical blocks: (4.02 GB/3.74 GiB)
[ 6525.554959] sd 4:0:0:0: [sdb] Write Protect is off
[ 6525.555010] sd 4:0:0:0: [sdb] Mode Sense: 23 00 00 00
[ 6525.571552] sd 4:0:0:0: [sdb] No Caching mode page found
[ 6525.573029] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 6525.667624] sd 4:0:0:0: [sdb] No Caching mode page found
[ 6525.669322] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 6525.816841]  sdb: sdb1
[ 6525.887493] sd 4:0:0:0: [sdb] No Caching mode page found
[ 6525.889142] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 6525.890478] sd 4:0:0:0: [sdb] Attached SCSI removable disk

$ sudo mount /dev/sdb1 /mnt/usbpen

[ 5685.621007] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 5685.631218] SELinux: initialized (dev sdb1, type vfat), uses genfs_contexts


   Setup Light X Windows System & Fluxbox on F20 instance ( [1] ) and make sure it's completely functional and can read and write to USB pen.
However, to copy to USB pen `sudo cp whatever.file  /mnt/usbpen` is required

 

  

   Nova status verification
    
  
   Neutron status verification



On the dfw02 (Controller) , run the following command:

  ssh-keygen (Hit Enter to accept all of the defaults)
  ssh-copy-id -i ~/.ssh/id_rsa.pub root@dwf01 (Compute)

Add to /etc/rc.d/rc.local lines :-

ssh -L 5900:127.0.0.1:5900 -N -f -l root 192.168.1.137
ssh -L 5901:127.0.0.1:5901 -N -f -l root 192.168.1.137
ssh -L 5902:127.0.0.1:5902 -N -f -l root 192.168.1.137

to be comfortable with spicy connection to instances running on Compute node.

 Build fresh spice-gtk packages :-

$ rpm -iv spice-gtk-0.23-1.fc21.src.rpm
$ cd ~/rpmbuild/SPEC

$ sudo yum install intltool gtk2-devel usbredir-devel libusb1-devel libgudev1-devel pixman-devel openssl-devel  libjpeg-turbo-devel celt051-devel pulseaudio-libs-devel pygtk2-devel python-devel zlib-devel cyrus-sasl-devel libcacard-devel gobject-introspection-devel  dbus-glib-devel libacl-devel polkit-devel gtk-doc vala-tools gtk3-devel spice-protocol opus-devel

$ rpmbuild -bb ./spice-gtk.spec
$ cd ../RPMS/x86_64

Install rpms been built , because spicy is not on the system

[boris@dfw02 x86_64]$  sudo yum install spice-glib-0.23-1.fc20.x86_64.rpm \
spice-glib-devel-0.23-1.fc20.x86_64.rpm \
spice-gtk-0.23-1.fc20.x86_64.rpm \
spice-gtk3-0.23-1.fc20.x86_64.rpm \
spice-gtk3-devel-0.23-1.fc20.x86_64.rpm \
spice-gtk3-vala-0.23-1.fc20.x86_64.rpm \
spice-gtk-debuginfo-0.23-1.fc20.x86_64.rpm \
spice-gtk-devel-0.23-1.fc20.x86_64.rpm  \
spice-gtk-python-0.23-1.fc20.x86_64.rpm \
spice-gtk-tools-0.23-1.fc20.x86_64.rpm

Verify new spice-gtk install on F20 :-

[boris@dfw02 x86_64]$ rpm -qa | grep spice-
spice-gtk-tools-0.23-1.fc20.x86_64
spice-server-0.12.4-3.fc20.x86_64
spice-glib-devel-0.23-1.fc20.x86_64
spice-gtk3-vala-0.23-1.fc20.x86_64
spice-gtk3-devel-0.23-1.fc20.x86_64
spice-gtk-python-0.23-1.fc20.x86_64
spice-vdagent-0.15.0-1.fc20.x86_64
spice-gtk-devel-0.23-1.fc20.x86_64
spice-gtk-0.23-1.fc20.x86_64
spice-gtk-debuginfo-0.23-1.fc20.x86_64
spice-glib-0.23-1.fc20.x86_64
spice-gtk3-0.23-1.fc20.x86_64
spice-protocol-0.12.6-2.fc20.noarch

Connection via spice will give  a warning :-


    just ignore this message.

    Test on Ubuntu 14.04 Beta 1 cloud instance
    


[  183.704082] init: plymouth-stop pre-start process (1075) terminated with status 1
[  304.422935] usb 1-2.1: new full-speed USB device number 4 using uhci_hcd
[  304.724345] usb 1-2.1: New USB device found, idVendor=0951, idProduct=160e
[  304.724426] usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  304.724516] usb 1-2.1: Product: DataTraveler 2.0
[  304.724578] usb 1-2.1: Manufacturer: Kingston
[  304.724640] usb 1-2.1: SerialNumber: 000AEB920161SK861E1301F6
[  305.038629] usb-storage 1-2.1:1.0: USB Mass Storage device detected
[  305.053503] scsi2 : usb-storage 1-2.1:1.0
[  305.068785] usbcore: registered new interface driver usb-storage
[  306.088727] scsi 2:0:0:0: Direct-Access     Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[  306.121297] sd 2:0:0:0: Attached scsi generic sg0 type 0
[  306.143700] sd 2:0:0:0: [sda] 7856128 512-byte logical blocks: (4.02 GB/3.74 GiB)
[  306.172714] sd 2:0:0:0: [sda] Write Protect is off
[  306.172805] sd 2:0:0:0: [sda] Mode Sense: 23 00 00 00
[  306.180711] sd 2:0:0:0: [sda] No Caching mode page found
[  306.182786] sd 2:0:0:0: [sda] Assuming drive cache: write through
[  306.254420] sd 2:0:0:0: [sda] No Caching mode page found
[  306.254851] sd 2:0:0:0: [sda] Assuming drive cache: write through
[  306.382421]  sda: sda1
[  306.458938] sd 2:0:0:0: [sda] No Caching mode page found
[  306.459490] sd 2:0:0:0: [sda] Assuming drive cache: write through
[  306.459956] sd 2:0:0:0: [sda] Attached SCSI removable disk
[  387.146403] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.


    The original text of Setup&Configs docs were posted on fedorapeople.org by Kashyap in November 2013.
   Attached ones [3],[4] tuned for new IP's and should not have any more  typos of original version.They also contain MySQL preventive updates currently required for openstack-nova-compute & neutron-openvswitch-agent remote connection to Controller Node to succeed . MySQL stuff is mine. All attached *.conf & *.ini files have been update for my network as well.
   In meantime I am quite sure  that using Libvirt's default and non-default networks  for creating Controller and Compute nodes  as F20 VMs is not important. Configs allow metadata to be sent from Controller to Compute on real
physical boxes. Just one Ethernet Controller per box should be required in case of  using GRE tunnelling in case of RDO Havana on Fedora 20 manual setup. 

References


1. http://bderzhavets.blogspot.com/2014/02/setup-light-weight-x-windows_2.html
2. http://bderzhavets.blogspot.com/2014/01/setting-up-two-physical-node-openstack.html
3. http://textuploader.com/1hin
4. http://textuploader.com/1hey