Showing posts with label Virtualization. Show all posts
Showing posts with label Virtualization. Show all posts

Jan 25, 2020

Oracle VM Server: OVMAPI_2005E and OVMEVT_003503D_000

In my OVM environment i was trying to delete a server from a pool and this did not work. The error i got signalled was:
OVMAPI_2005E "[ServerDbImpl] xx:yy:zz:... (oraclevm)" contains a component "xx:yy:zz:..." in error. Error event: server.cluster.failure., Summary: Server Cluster Failure, Description: Failed to leave cluster OVMEVT_003503D_000 Server reboot is required..
I rebootet the server: still the same error.
I rebootet the ovm manager: still the same error.

Then i realized, that there was a red cross at my server:

The solution was: Select events from the drop down for this server:

There i had to "Acknowledge" the events and after that i was able to remove the server without any further error...

Dec 23, 2019

Oracle VM Server: Pool is locked forever

If you are using Oracle VM Server it is possible that you are hitting the following problem:

After changing something on a server pool the pool gets locked and the lock stays there:
Even a reboot of your OVMM (oracle vm manager) does not remove the lock.

The solution can be very easy:
Just edit the pool and add (or change) the description.

This edit triggers an update and removes the lock. I think every other change would do the job, but this is a minimal change, which solves the problem...

Hopefully there will be an update, so this problem will disappear in future versions.


Aug 4, 2019

Oracle VM Server: Why the server uuid is important and why changes to this uuid are critical

After working a while with Oracle VM server it turns out, that a very important parameter is the UUID of a Oracle VM server.

This UUID is used by the ovs-agent (take a look at the Oracle documentation). Here a few excerpts of these chapter:
The Oracle VM Agent is a daemon that runs within dom0 on each Oracle VM Server instance. Its primary role is to facilitate communication between Oracle VM Server and Oracle VM Manager.
[...]
Oracle VM Agent is responsible for carrying out all of the configuration changes required on an Oracle VM Server instance, in accordance with the messages that are sent to it by Oracle VM Manager.
[...]
If you wish to allow another Oracle VM Manager instance to take ownership of the server, the original Oracle VM Manager instance must release ownership first.
[...]
Oracle VM Agent also maintains its own log files on the Oracle VM Server that can be used for debugging issues on a particular server instance or for auditing purposes. 

The oracle vm server gets identified at the oracle vm manager by its UUID. There is a very nice blogposting from Bjorn Naessens:
https://bjornnaessens.wordpress.com/2012/08/10/best-practices-in-ovm-2-fakeuuid-it/
He made his way through the source code and comes up with the following important things about this uuid:


From an architectural point of view, this is a really bad way, because the UUID will change, if you change the motherboard SMBIOS oder change a network MAC.
With loosing your UUID, the OVS-agent will no longer communicate with your OVM-manager and therfore you can not start/stop any VM on that host.

You can get the UUID of a server from the OVM Manager GUI:
(--> "Servers and VMs": select the server on the tree under "server pools" --> change the dropdown to "info")

How to fix a UUID change can be found here:
https://hadafq8.wordpress.com/2016/03/22/oracleovmovm-server-uuid-challenges/

Apr 19, 2019

Oracle VM Server: Working with ovm cli

After getting the ovmcli run, here some commands which are quite helpful, when you are working with Oracle VM server.
But first:
Starting the ovmcli is done via
ssh admin@localhost -p 10000
at the OVM Manager.

After that you can get some overviews:
OVM> list server
Command: list server
Status: Success
Time: 2019-01-25 06:56:55,065 EST
Data: 
  id:18:e2:a6:9d:5c:b6:48:3a:9b:d2:b0:0f:56:7e:ab:e9  name:oraclevm
OVM> list vm
Command: list vm
Status: Success
Time: 2019-01-25 06:56:57,357 EST
Data: 
  id:0004fb0000060000fa3b1b883e717582  name:myAlpineLinux
OVM> list ServerPool
Command: list ServerPool
Status: Success
Time: 2019-01-25 06:57:12,165 EST
Data: 
  id:0004fb0000020000fca85278d951ce27  name:MyServerPool
A complete list of all list commands can be obtained like this:
OVM> list ?
          AccessGroup
          AntiAffinityGroup
          Assembly
          AssemblyVirtualDisk
          AssemblyVm
          BondPort
          ControlDomain
          Cpu
          CpuCompatibilityGroup
          FileServer
          FileServerPlugin
          FileSystem
          Job
          Manager
          Network
          PeriodicTask
          PhysicalDisk
          Port
          Repository
          RepositoryExport
          Server
          ServerController
          ServerPool
          ServerPoolNetworkPolicy
          ServerUpdateGroup
          ServerUpdateRepository
          StorageArray
          StorageArrayPlugin
          StorageInitiator
          Tag
          VirtualAppliance
          VirtualApplianceVirtualDisk
          VirtualApplianceVm
          VirtualCdrom
          VirtualDisk
          VlanInterface
          Vm
          VmCloneCustomizer
          VmCloneNetworkMapping
          VmCloneStorageMapping
          VmDiskMapping
          Vnic
          VolumeGroup
An overview which kind of command can be used like list:
OVM> help
For Most Object Types:
    create  [(attribute1)="value1"] ... [on  ]
    delete  
    edit    (attribute1)="value1" ...
    list 
    show  
For Most Object Types with Children:
    add   to  
    remove   from  
Client Session Commands:
    set alphabetizeAttributes=[Yes|No]
    set commandMode=[Asynchronous|Synchronous]
    set commandTimeout=[1-43200]
    set endLineChars=[CRLF,CR,LF]
    set outputMode=[Verbose,XML,Sparse]
    showclisession
Other Commands:
    exit
    showallcustomcmds
    showcustomcmds 
    showobjtypes
    showversion
If you want to get you vm.cfg file, you can use the id from "list vm" and type:
OVM> getVmCfgFileContent Vm id=0004fb0000060000fa3b1b883e717582
Command: getVmCfgFileContent Vm id=0004fb0000060000fa3b1b883e717582
Status: Success
Time: 2019-01-25 06:59:46,875 EST
Data: 
  OVM_domain_type = xen_pvm
  bootargs = 
  disk = [file:/OVS/Repositories/0004fb0000030000dad74d9c43176d2e/ISOs/0004fb0000150000226a713414eaa501.iso,xvda:cdrom,r,file:/OVS/Repositories/0004fb0000030000dad74d9c43176d2e/VirtualDisks/0004fb0000120000f62a7bba83063840.img,xvdb,w]
  bootloader = /usr/bin/pygrub
  vcpus = 1
  memory = 512
  on_poweroff = destroy
  OVM_os_type = Other Linux
  on_crash = restart
  cpu_weight = 27500
  OVM_description = 
  cpu_cap = 0
  on_reboot = restart
  OVM_simple_name = myAlpineLinux
  name = 0004fb0000060000fa3b1b883e717582
  maxvcpus = 1
  vfb = [type=vnc,vncunused=1,vnclisten=127.0.0.1,keymap=en-us]
  uuid = 0004fb00-0006-0000-fa3b-1b883e717582
  guest_os_type = linux
  OVM_cpu_compat_group = 
  OVM_high_availability = false
  vif = []
Very helpful is the Oracle documentation (here).


Apr 6, 2019

Oracle VM Server: OVM CLI via ssh admin@localhost -p 10000 does not work


In my Oracle VM server installation the ovmcli refuses to work:
ssh -l admin localhost -p 10000 

Connection to localhost closed by remote host.

Connection to localhost closed.
There some workarounds like:
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss -l  admin localhost -p 10000
But the result is the same.

Here a debug output from ssh -v:
[root@oraVMManager mnt]# ssh -l admin localhost -p 10000  -v
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Connecting to localhost [::1] port 10000.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: Remote protocol version 2.0, remote software version ${POM.ARTIFACTID}-${POM.VERSION}
debug1: no match: ${POM.ARTIFACTID}-${POM.VERSION}
debug1: Authenticating to localhost:10000 as 'admin'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: diffie-hellman-group1-sha1
debug1: kex: host key algorithm: ssh-dss
debug1: kex: server->client cipher: aes128-cbc MAC: hmac-sha1 compression: none
debug1: kex: client->server cipher: aes128-cbc MAC: hmac-sha1 compression: none
debug1: kex: diffie-hellman-group1-sha1 need=20 dh_need=20
debug1: kex: diffie-hellman-group1-sha1 need=20 dh_need=20
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: ssh-dss SHA256:E6FYsSD9om4ChxJT17vBGUyqHmz3kLLAIxxJZlYjJCM
debug1: Host '[localhost]:10000' is known and matches the DSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /root/.ssh/admin
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to localhost ([::1]:10000).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env LANG = de_DE.UTF-8
debug1: channel 0: free: client-session, nchannels 1
Connection to localhost closed by remote host.
Connection to localhost closed.
Transferred: sent 3224, received 1432 bytes, in 0.0 seconds
Bytes per second: sent 2461309.8, received 1093236.9
debug1: Exit status -1

The solution was:
Upgrade the OVM Manager (take a look here)

And then:
ssh -l admin localhost -p 10000  -v
SHA256:pidDB23XNyVHE55Q7GJ+9uqJvBfoR3B1lm02gdYeus8
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:pidDB23XNyVHE55Q7GJ+9uqJvBfoR3B1lm02gdYeus8.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending DSA key in /root/.ssh/known_hosts:1
RSA host key for [localhost]:10000 has changed and you have requested strict checking.
Host key verification failed.
Ok - this was not expected, but the upgrade changed the host key.

But after removing that line from the known_hosts file:
[root@oraVMManager mnt]# ssh -l admin localhost -p 10000  
OVM> list server
Command: list server
Status: Success
Time: 2019-01-25 05:52:14,849 EST
Data: 
  id:18:e2:a6:9d:5c:b6:48:3a:9b:d2:b0:0f:56:7e:ab:e9  name:oraclevm
OVM> ?
     add
     create
     delete
     edit
     embeddedcreate
     embeddeddelete
     embeddededit
     exit
     help
     list
     remove
     set
     show
     showallcustomcmds
     showclisession
     showcustomcmds
     showobjtypes
     showversion




Feb 21, 2019

Oracle VM Server: How to Upgrade Oracle Manager

Because of my connection problem to ovmcli via
ssh -l admin@localhost -p 10000
i decided to upgrade my OVM Manager.

After downloading OVM Manager 0.3.4.6 i mounted the ISO image:
mount /dev/sr0 /mnt
cd /mnt
[root@oraVMManager mnt]# ls -l
insgesamt 149832
drwxr-xr-x. 7 root root      8192 18. Nov 21:00 components
-r-xr-x---. 1 root root     11556 18. Nov 20:59 createOracle.sh
-rw-r--r--. 1 root root       230 18. Nov 20:59 oracle-validated.params
-r-xr-x---. 1 root root 149109589 18. Nov 21:00 ovmm-installer.bsx
-rw-r--r--. 1 root root   4293118 18. Nov 20:55 OvmSDK_3.4.6.2105.zip
-r-xr-x---. 1 root root      1919 18. Nov 20:59 runInstaller.sh
-rw-r--r--. 1 root root       372 18. Nov 20:59 sample.yml
-r--r--r--. 1 root root      1596 18. Nov 21:00 TRANS.TBL
The upgrade procedure can be found here (Oracle Documentation). So let's start:
# ./runInstaller.sh --installtype Upgrade

Oracle VM Manager Release 3.4.6 Installer

Oracle VM Manager Installer log file:
/var/log/ovmm/ovm-manager-3-install-2019-01-25-051107.log

Verifying upgrading prerequisites ...
*** WARNING: Ensure that each Oracle VM Server for x86 has at least 200MB of available space for the /boot partition and 3GB of available space for the / partition.
*** WARNING: Recommended memory for the Oracle VM Manager server installation using Local MySql DB is 7680 MB RAM

Starting Upgrade ...

Reading database parameters from config ...

==========================
Typically the current Oracle VM Manager database password will be the same as the Oracle VM Manager application password.

==========================
Database Repository
==========================
Please enter the current Oracle VM Manager database password for user ovs: 

Oracle VM Manager application
=============================
Please enter the current Oracle VM Manager application password for user admin: 

Oracle Weblogic Server 12c
==========================
Please enter the current password for the WebLogic domain administrator: 

Please enter your fully qualified domain name, e.g. ovs123.us.oracle.com, (or IP address) of your management server for SSL certification generation 192.168.178.37 [oraVMManager.fritz.box]:  
Successfully verified password for user root
Successfully verified password for user appfw

Verifying configuration ...
Verifying 3.4.4 meets the minimum version for upgrade ...

Upgrading from version 3.4.4.1709 to version 3.4.6.2105

Start upgrading Oracle VM Manager:
   1: Continue
   2: Abort

   Select Number (1-2): 1

Running full database backup ...
Successfully backed up database to /u01/app/oracle/mysql/dbbackup/3.4.4_preUpgradeBackup-20190125_051150
Running ovm_preUpgrade script, please be patient this may take a long time ...
Exporting weblogic embedded LDAP users
Stopping service on Linux: ovmcli ...
Stopping service on Linux: ovmm ...
Exporting core database, please be patient this may take a long time  ... 
NOTE: To monitor progress, open another terminal session and run: tail -f /var/log/ovmm/ovm-manager-3-install-2019-01-25-051107.log

Product component : Java in '/u01/app/oracle/java'
Java is installed ...

Removing Java installation ...


Installing Java ...


DB component : MySQL RPM package

MySQL RPM package installed by OVMM was found...

Removing MySQL RPM package installation ...


Installing Database Software...
Retrieving MySQL Database 5.6 ...
Unzipping MySQL RPM File ...
Installing MySQL 5.6 RPM package ...
Configuring MySQL Database 5.6 ...
Installing MySQL backup RPM package ...

Product component : Oracle VM Manager in '/u01/app/oracle/ovm-manager-3/'
Oracle VM Manager is installed ...
Removing Oracle VM Manager installation ...

Product component : Oracle WebLogic Server in '/u01/app/oracle/Middleware/'
Oracle WebLogic Server is installed

Removing Oracle WebLogic Server installation ...
Service ovmm is deleted.
Service ovmcli is deleted.


Retrieving Oracle WebLogic Server 12c and ADF ...
Installing Oracle WebLogic Server 12c and ADF ...
Applying patches to Weblogic ...
Applying patch to ADF ...


Installing Oracle VM Manager Core ...
Retrieving Oracle VM Manager Application ...
Extracting Oracle VM Manager Application ...

Retrieving Oracle VM Manager Upgrade tool ...
Extracting Oracle VM Manager Upgrade tool ...
Installing Oracle VM Manager Upgrade tool ...
Installing Oracle VM Manager WLST Scripts ...


Dropping the old database user 'appfw' ...
Dropping the old database 'appfw' ...
Creating new domain...
Creating new domain done.
Upgrading core database, please be patient this may take a long time ...
NOTE: To monitor progress, open another terminal session and run: tail -f /var/log/ovmm/ovm-manager-3-install-2019-01-25-051107.log
Starting restore domain's SSL configuration and create appfw database tables.
Restore domain's SSL configuration and create appfw database tables done.
AdminServer started.
Importing weblogic embedded LDAP users

Retrieving Oracle VM Manager CLI tool ...
Extracting Oracle VM Manager CLI tool...
Installing Oracle VM Manager CLI tool ...



Retrieving Oracle VM Manager Shell & API ...
Extracting Oracle VM Manager Shell & API ...
Installing Oracle VM Manager Shell & API ...

Retrieving Oracle VM Manager Wsh tool ...
Extracting Oracle VM Manager Wsh tool ...
Installing Oracle VM Manager Wsh tool ...

Retrieving Oracle VM Manager Tools ...
Extracting Oracle VM Manager Tools ...
Installing Oracle VM Manager Tools ...

Retrieving ovmcore-console ...
The ovmcore-console RPM package is latest, needn't to upgrade ...
Copying Oracle VM Manager shell to '/usr/bin/ovm_shell.sh' ...
Installing ovm_admin.sh in '/u01/app/oracle/ovm-manager-3/bin' ...
Installing ovm_upgrade.sh in '/u01/app/oracle/ovm-manager-3/bin' ...



Enabling Oracle VM Manager service ...
Shutting down Oracle VM Manager instance ...
Starting Oracle VM Manager instance ...

Please wait while WebLogic configures the applications...
Trying to connect to core via ovmwsh (attempt 1 of 20) ...
Trying to connect to core via ovm_shell (attempt 1 of 5)...

Installation Summary
--------------------
Database configuration:
  Database type               : MySQL
  Database host name          : localhost
  Database name               : ovs
  Database listener port      : 49500
  Database user               : ovs

Weblogic Server configuration:
  Administration username     : weblogic

Oracle VM Manager configuration:
  Username                    : admin
  Core management port        : 54321
  UUID                        : 0004fb000001000019f1074e05c43aa1


Passwords:
There are no default passwords for any users. The passwords to use for Oracle VM Manager, Database, and Oracle WebLogic Server have been set by you during this installation. In the case of a default install, all passwords are the same.

Oracle VM Manager UI:
  https://oraVMManager.fritz.box:7002/ovm/console
Log in with the user 'admin', and the password you set during the installation.

For more information about Oracle Virtualization, please visit:
  http://www.oracle.com/virtualization/

3.2.10/3.2.11 Oracle VM x86 Servers and SPARC agent 3.3.1 managed Servers are no longer supported in Oracle VM Manager 3.4. Please upgrade your Server to a more current version for full support
For instructions, see the Oracle VM 3.4 Installation and Upgrade guide. 

Oracle VM Manager upgrade complete.

Please remove configuration file /tmp/ovm_configA6Dpxd.


And the GUI shows after that via "help":




Jan 30, 2019

Review: eBook: Saas for Dummies

As i wrote some days ago, Oracle provided this book as free download:


Here my review:

The book starts with the chapter "recognizing modern business challenges and opportunities". The author comes up with things like "business transformation starts with digital transformation" or "businesses will need to rethink every element of their business". It contains a typical opening for this topic.

The next chapter has the title "Empowering Business Managers with SaaS Solutions". The focus here lies on how to use the cloud for your sales process. One short citation: "Robust  sales  cloud  solutions  are  so  much more  than  contact  lists,  schedules,  and sources of prospects." Another focus are the advantages for HR professionals to finding and retaining top talents with the help of SaaS. For further information the following link is provided:  www.oracle.com/goto/mit-tech-review

At page 35 of 68 chapter 3 starts. "Transforming you Business with SaaS". There are given some helpful links like "www.oracle.com/cloud/saas-scalability.html" or "www.oracle.com/cloudtco" and some others.

Chapter 4 ("Choosing Your Path to the Cloud") talks about building hybrid
environments and extending apps with social, mobile and process capabilites. I think without some additional links, this is much to short.

By far the best chapter is chapter 5: "Ten (or so) Important Questions to Ask you SaaS Provider". I will not reveal these questions (and answers) on this blog - but this is really helpful. Nevertheless the answers are sometime too short.

From page 57 up to 61 a glossary is provided.

My conclusion on this book: This is a really good quickstart into SaaS but not a deep dive into this topic. Thanks to Oracle to provide it as free download.

Jan 27, 2019

Microsoft Azure: First steps (create an account and logging in)

After doing a lot of things with amazon webserivces (AWS) i decided to take a look an Microsoft Azure.

Starting point is azure.microsoft.com


I just clicked on "Start free" and was asked to login with any already existing microsoft account (live.com, etc). In the registration process you have to provide a phone number for verification (by call or by message) and             then your credit card information. 
No worries, microsoft offers a start with 170$ credit:


After the registration you can attend to an online course,
 but i decided to move onto the portal:
And here we go:
 Looks like the settings manager from XFCE (a linux desktop manager) ;-)

I clicked on virtual machines and of course there are listed no machines but a big blue button for adding VMs.
 But this will be topic of another posting...

Jan 19, 2019

Java 11: JEP 318 Eplison / A No-Op Garbage Collector

This week i read about the new JDK Enhancement Proposal (JEP) of Java 11.
One of my favourites is JEP 318:

The summary of this JEP says:
Develop a GC that handles memory allocation but does not implement any actual memory reclamation mechanism. Once the available Java heap is exhausted, the JVM will shut down.
For which scenario could this garbage collector be useful?

If you skip to the "motivations" at the JEP, i found the following very interesting:

Performance testing. Having a GC that does almost nothing is a useful tool to do differential performance analysis for other, real GCs. [...]
There are other points mentioned there which are also interesting, but this performance calibration is in my opinion one of the most important ones.

One other is important too:
Extremely short lived jobs. A short-lived job might rely on exiting quickly to free the resources (e.g. heap memory). In this case, accepting the GC cycle to futilely clean up the heap is a waste of time, because the heap would be freed on exit anyway. Note that the GC cycle might take a while, because it would depend on the amount of live data in the heap, which can be a lot.
This can be quite helpful for Oracle fn or for some special docker images, where a java funtion is called and after the execution the process is terminated.
Let's if this feature will get used in the future....



Dec 20, 2018

Virtualbox 6.0 released

Today Oracle released virtualbox version 6.0:

 For Linux the following distributions are supported:

 So let's install the new version:

 dpkg -i virtualbox-6.0_6.0.0-127566~Ubuntu~bionic_amd64.deb 
Vormals nicht ausgewähltes Paket virtualbox-6.0 wird gewählt.
dpkg: Betreffend virtualbox-6.0_6.0.0-127566~Ubuntu~bionic_amd64.deb, welches virtualbox-6.0 enthält:
 virtualbox-6.0 kollidiert mit virtualbox
  virtualbox-5.2 liefert virtualbox und ist vorhanden und installiert.

dpkg: Fehler beim Bearbeiten des Archivs virtualbox-6.0_6.0.0-127566~Ubuntu~bionic_amd64.deb (--install):
 Kollidierende Pakete - virtualbox-6.0 wird nicht installiert
Fehler traten auf beim Bearbeiten von:
 virtualbox-6.0_6.0.0-127566~Ubuntu~bionic_amd64.deb
Ok - first deinstall the old version:
# dpkg -r virtualbox-5.2

(Lese Datenbank ... 421401 Dateien und Verzeichnisse sind derzeit installiert.)

Entfernen von virtualbox-5.2 (5.2.10-122088~Ubuntu~bionic) ...

Trigger für shared-mime-info (1.9-2) werden verarbeitet ...

Trigger für hicolor-icon-theme (0.17-2) werden verarbeitet ...

Trigger für desktop-file-utils (0.23-1ubuntu3.18.04.2) werden verarbeitet ...

Trigger für gnome-menus (3.13.3-11ubuntu1.1) werden verarbeitet ...

Trigger für bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) werden verarbeitet ...

Rebuilding /usr/share/applications/bamf-2.index...

Trigger für mime-support (3.60ubuntu1) werden verarbeitet ...
and once again:
# dpkg -i virtualbox-6.0_6.0.0-127566~Ubuntu~bionic_amd64.deb 
(Lese Datenbank ... 420583 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von virtualbox-6.0_6.0.0-127566~Ubuntu~bionic_amd64.deb ...
Entpacken von virtualbox-6.0 (6.0.0-127566~Ubuntu~bionic) ...
virtualbox-6.0 (6.0.0-127566~Ubuntu~bionic) wird eingerichtet ...
addgroup: Die Gruppe »vboxusers« existiert bereits als Systemgruppe. Programmende.
Trigger für systemd (237-3ubuntu10.9) werden verarbeitet ...
Trigger für ureadahead (0.100.0-20) werden verarbeitet ...
Trigger für desktop-file-utils (0.23-1ubuntu3.18.04.2) werden verarbeitet ...
Trigger für gnome-menus (3.13.3-11ubuntu1.1) werden verarbeitet ...
Trigger für bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) werden verarbeitet ...
Rebuilding /usr/share/applications/bamf-2.index...
Trigger für mime-support (3.60ubuntu1) werden verarbeitet ...
Trigger für hicolor-icon-theme (0.17-2) werden verarbeitet ...
Trigger für shared-mime-info (1.9-2) werden verarbeitet ...
The new GUI has a new submenu for each vm:

If you choose "Logs", you can directly open the logfiles for this vm:
Very nice feature!



Dec 4, 2018

Oracle VM Server x86: How to get a redundant network for the heartbeat (part 2)

A while ago i played around with Oracle VM Manager
I was wondering, if i can setup a redundant network for the heartbeat on my virtualbox playground. My question was: Can i add an additional network and stripe the heartbeat over both networks or do i have to configure 2 network interfaces and use bonding.

A few day ago i tried to stripe the "Heartbeat Network" over 2 networkss, but this failed: Oracle VM Server x86: How to get a redundant network for the heartbeat

Now i tried to configure bonding for the "Heartbeat Network":
First step is to navigate to "Server and VMs" and change to the perspective "Bond Ports":

Select the bond0 port and add eth1:

 Then click ok and after that make a check via perpective "Ethernet ports":

That was easy.

Conclusion: The heartbeat inside OVM is implemented, that it can only work on the same subnet. It is not possible to use two different subnets for the heartbeat.

Nov 25, 2018

Oracle VM Server x86: How to get a redundant network for the heartbeat

A while ago i played around with Oracle VM Manager
I was wondering, if i can setup a redundant network for the heartbeat on my virtualbox playground. My question was: Can i add an additional network and stripe the heartbeat over both networks or do i have to configure 2 network interfaces and use bonding.

So let's start:
Open the OVM Manager and go to "Networking":
and hit the green plus to add a network:
Just hit next and provide a name and toggle the checkbox "heartbeat":

Then expand the tree to the new NIC and choose it:

Then mark the row and hit next:
For my use case  i did not add any VLANs - and after all the heartbeat is striped over both networks:
But this is not really true:
OVMRU_001079E Cannot add Ethernet device: eth1 on oraclevm, to network: hearbeat, because server: oraclevm, already has cluster network: 192.168.178.0. [Sat Nov 24 11:39:39 EST 2018]

Hmmm. This means the OVM Manager shows two hooks, but the second one does not work.
After some investigation: The network "heartbeat" was created but the port (eth1) was missing. 
So i removed the "Cluster Heartbeat" and then i added the port eth1 including the checkbox "Virtual Machines".
The ovm server showed up eth1:
# ifconfig |grep ^[a-z,0-9]
108e472f6e Link encap:Ethernet  Hardware Adresse 08:00:27:43:D9:4C  
bond0     Link encap:Ethernet  Hardware Adresse 08:00:27:61:51:35  
c0a8b200  Link encap:Ethernet  Hardware Adresse 08:00:27:61:51:35  
eth0      Link encap:Ethernet  Hardware Adresse 08:00:27:61:51:35  
eth1      Link encap:Ethernet  Hardware Adresse 08:00:27:43:D9:4C  
lo        Link encap:Lokale Schleife  
But adding "Cluster Heartbeat" once again results in a job, which was in status "running" forever.

Conclusion: You should never stripe the "Cluster Heartbeat" over more than one network!

Jul 9, 2018

Docker: Networking with docker swarm: creating new subnets/gateways/...

In this posting i explained how to configure the network for a container on a docker machine.
If you want to do this for a docker swarm, you have to change the commands. The network driver "bridge" does not work in swarm mode:
(How to run a container inside a swarm take a look here)

docker service create  --network mybrigde --name helloworld alpine ping 192.168.178.1

Error: No such network: mybrigde
Even if you create your bridge on every node.

You have to configure an overlay network:
alpine:~# docker service create  --network myoverlay --name helloworld alpine ping 192.168.178.1
And then you can deploy your service like this:

alpine:~# docker service create --replicas 2 --network myoverlay  --name helloworld alpine ping 10.200.0.1

ij613sb26sfrgqknq8nnscqeg

overall progress: 2 out of 2 tasks 

1/2: running   [==================================================>] 

2/2: running   [==================================================>] 

verify: Service converged


Verification:

alpine:~# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

6193ebb361fa        alpine:latest       "ping 10.200.0.1"   12 seconds ago      Up 11 seconds                           helloworld.1.9zoyocdpsdthuqmlk4efk96wz

alpine:~# docker logs 6193ebb361fa

PING 10.200.0.1 (10.200.0.1): 56 data bytes

64 bytes from 10.200.0.1: seq=0 ttl=64 time=0.344 ms

64 bytes from 10.200.0.1: seq=1 ttl=64 time=0.205 ms

64 bytes from 10.200.0.1: seq=2 ttl=64 time=0.184 ms
On each docker swarm node you can find now:
node2:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5019841c7e25        bridge              bridge              local
6e795c964251        docker_gwbridge     bridge              local
9d9fa338a975        host                host                local
273dc1ddbc57        mybrigde            bridge              local
siiyo60iaojs        myoverlay           overlay             swarm
9ff819cf7ddb        none                null                local

and after stopping the service (docker service rm helloworld) the overlay "myoverlay" is removed again:
node2:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5019841c7e25        bridge              bridge              local
6e795c964251        docker_gwbridge     bridge              local
9d9fa338a975        host                host                local
273dc1ddbc57        mybrigde            bridge              local
9ff819cf7ddb        none                null                local


Jul 1, 2018

Docker: Network configuration: How to customize the network bridge and use my own subnet / netmask / CiDR

In my last posting i described how to configure the network settings of a container via docker command line:
--net none
--net bridge
Now i want to try to change the subnet from the standard 172.17.0.0/16 to another ip range.

There are some tutorials out there which say:

docker run -it  --net bridge  --fixed-cidr "10.100.0.0/24"  alpine /bin/ash
unknown flag: --fixed-cidr
but this doesa not work any more.

First you have to create new network:
docker network create --driver=bridge --subnet=10.100.0.0/24  --gateway=10.100.0.1 mybrigde
6249c9a5f6c6f7e36e7e61009b9bde7ac338173d8e222e214a65b9793d36ad6c
Just do a verification:
docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
a00386e6a5bc        bridge              bridge              local
9365e4a966d0        docker_gwbridge     bridge              local
9d9fa338a975        host                host                local
6249c9a5f6c6        mybrigde            bridge              local
9ff819cf7ddb        none                null                local
and here we go:

alpine:~# docker run -it  --network  mybrigde  alpine /bin/ash
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0A:64:00:02  
          inet addr:10.100.0.2  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1156 (1.1 KiB)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Removing the network bridge is easy:
docker network rm mybrigde


and narrowing the IP range can be done like this:
alpine:~# docker network create --driver=bridge --subnet=10.100.0.0/24  --ip-range=10.100.0.128/25 --gateway=10.100.0.1 mybrigde
b0ba1d963a6ca3097d083d4f5fd979e0fb0f91f81f1279132ae773c06f821396
Just do a check:
alpine:~# docker run -it  --network  mybrigde  alpine /bin/ash
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0A:64:00:80  
          inet addr:10.100.0.128  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1016 (1016.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
The ip address of the container is set to 10.100.0.128 as configured with --ip-range 10.100.0.128/25.

If you are not familiar with the CIDR notation, just us this nice online tool (http://www.subnet-calculator.com/cidr.php):







Jun 19, 2018

Docker: Network configuration - none / brigde / hostname / dns entries

If you are starting your docker container you can add some network configuration details via command line.
Let's start with the easiest network setting:
docker run -it  --net none alpine /bin/ash
This setting starts the container without any connectivity to the network:
# ip addr show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
The default is --net bridge:
docker run -it  --net bridge alpine /bin/ash
With this setting your network access is via a bridge of your host:
# ip addr show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
7: eth0@if8:  mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
This is the docker0 interface on your docker server machine:
alpine:~# ip addr show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:72:ae:ef brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.46/24 brd 192.168.178.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe72:aeef/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0:  mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:ba:e9:4d:6a brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:baff:fee9:4d6a/64 scope link 
       valid_lft forever preferred_lft forever
4: docker_gwbridge:  mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:62:f0:92:82 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 scope global docker_gwbridge
       valid_lft forever preferred_lft forever
Finally you can configure your hostname and manipulate dns entries:
# docker run -it  --net bridge  --hostname myhostname --add-host mygoogle.com:8.8.8.8  alpine /bin/ash
/ # hostname
myhostname
/ # nslookup mygoogle.com
nslookup: can't resolve '(null)': Name does not resolve

Name:      mygoogle.com
Address 1: 8.8.8.8 mygoogle.com

Jun 16, 2018

Docker: How to limit memory usage

By starting your container you can limit the RAM usage simply by adding
-m 4M

(this limits the memory to 4 megabytes).

To check this simply run:

docker run -it -m=4M  --rm alpine /bin/ash

and on your docker machine check the following entry:

alpine:~# cat /sys/fs/cgroup/memory/docker/4ce0403caf667e7a6d446eac3820373aefafe4e73463357f680d7b38a392ba62/memory.limit_in_bytes 
4194304


May 22, 2018

Docker: Lessons learned - Logging

After some time working with docker here my experiences:

Some days ago i created my own container with a minimal web service.

Here the ncweb.sh:
#!/bin/ash
sed -i  's/Hostname:.*/Hostname: '$HOSTNAME'/g' index.html
while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; cat index.html;}  | nc  -l -p 8080  2>&1 >> logfile; done 
This is the Dockerfile:
FROM alpine

WORKDIR /tmp

RUN mkdir ncweb

ADD .  /tmp

ENTRYPOINT [ "/tmp/ncweb.sh" ]

After building the image
docker build -t ncweb:0.4 .
And starting the container:
docker run -d -p 8080:8080 ncweb:0.4 --name ncweb0.4
I was able to connect to the container and view the log:

To get the right command:
docker ps  |grep  ncweb:0.4 |awk '{print "docker exec -it "$1" ash"}'
and then use the output:
docker exec -it e4f9960fc8e5 ash
alpine:~/ncweb# docker exec -it e4f9960fc8e5 ash
/tmp # ls
Dockerfile  hexdump     index.html  logfile     ncweb       ncweb.sh
/tmp # cat logfile 
GET / HTTP/1.1
Host: 192.168.178.46:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,de;q=0.7,en-US;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

Thu May 10 10:01:23 UTC 2018 request done
But this is not the right way.
If i change the ncweb.sh to
#!/bin/ash
sed -i  's/Hostname:.*/Hostname: '$HOSTNAME'/g' index.html
while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; cat index.html;}  | nc  -l -p 8080 ;done 
then you can do the following (after building a new container version):

alpine:~/ncweb# docker run -d -p 8080:8080 ncweb:0.5 --name ncweb0.5

9589f77fc289a3713354a365f8f08098279e6d0e893de99a0431d8fbd62c834a

alpine:~/ncweb# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES

9589f77fc289        ncweb:0.5           "/tmp/ncweb.sh --n..."   8 seconds ago       Up 7 seconds        0.0.0.0:8080->8080/tcp   gracious_archimedes
To get the logs (which are written to STDOUT):

alpine:~/ncweb# docker logs -f 9589f77fc289

GET / HTTP/1.1

Host: 192.168.178.46:8080

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en,de;q=0.7,en-US;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

Upgrade-Insecure-Requests: 1

Cache-Control: max-age=0


Conclusion: It is better to use STDOUT than local logfiles. Or even better: use syslog or other central logging mechanisms.

Related posts:



May 18, 2018

Virtualbox: vboxdrv.sh: failed & Run 'make oldconfig && make prepare'

After updating to ubuntu 18.04 i had to reinstall virtualbox:


# dpkg -i virtualbox-5.2_5.2.10-122088~Debian~stretch_amd64.deb 
Vormals nicht ausgewähltes Paket virtualbox-5.2 wird gewählt.
(Lese Datenbank ... 378316 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von virtualbox-5.2_5.2.10-122088~Debian~stretch_amd64.deb ...
Entpacken von virtualbox-5.2 (5.2.10-122088~Debian~stretch) ...
virtualbox-5.2 (5.2.10-122088~Debian~stretch) wird eingerichtet ...
addgroup: Die Gruppe »vboxusers« existiert bereits als Systemgruppe. Programmende.
vboxdrv.sh: failed: Look at /var/log/vbox-install.log to find out what went wrong.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.
Trigger für systemd (237-3ubuntu10) werden verarbeitet ...
Trigger für ureadahead (0.100.0-20) werden verarbeitet ...
Trigger für gnome-menus (3.13.3-11ubuntu1) werden verarbeitet ...
Trigger für bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) werden verarbeitet ...
Rebuilding /usr/share/applications/bamf-2.index...
Trigger für desktop-file-utils (0.23-1ubuntu3) werden verarbeitet ...
Trigger für mime-support (3.60ubuntu1) werden verarbeitet ...
Trigger für hicolor-icon-theme (0.17-2) werden verarbeitet ...
Trigger für shared-mime-info (1.9-2) werden verarbeitet ...
But this just failed with the following error (i am running my own kernel because of suspend to disk issues) inside /var/log/vbox-install.log:

test -e include/generated/autoconf.h -a -e include/config/auto.conf || (        \
echo >&2;                            \
echo >&2 "  ERROR: Kernel configuration is invalid.";        \
echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";    \
echo >&2 ;                            \
/bin/false)
mkdir -p /lib/modules/4.17.0-rc3/misc

and at the end:

/tmp/vbox.0/linux/VBoxPci-linux.c:92:40: error: implicit declaration of function ‘pci_get_bus_and_slot’; did you mean ‘pci_get_domain_bus_and_slot’? [-Werror=implicit-function-declaration]
 # define PCI_DEV_GET_SLOT(bus, devfn)  pci_get_bus_and_slot(bus, devfn)
                                        ^
/tmp/vbox.0/linux/VBoxPci-linux.c:397:15: note: in expansion of macro ‘PCI_DEV_GET_SLOT’
     pPciDev = PCI_DEV_GET_SLOT(uBus, uDevFn);
               ^~~~~~~~~~~~~~~~
/tmp/vbox.0/linux/VBoxPci-linux.c:397:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
     pPciDev = PCI_DEV_GET_SLOT(uBus, uDevFn);
             ^
/tmp/vbox.0/linux/VBoxPci-linux.c: In function ‘vboxPciOsDevInit’:
/tmp/vbox.0/linux/VBoxPci-linux.c:648:17: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
         pPciDev = PCI_DEV_GET_SLOT((pIns->HostPciAddress) >> 8,
                 ^
cc1: some warnings being treated as errors
scripts/Makefile.build:312: recipe for target '/tmp/vbox.0/linux/VBoxPci-linux.o' failed
make[2]: *** [/tmp/vbox.0/linux/VBoxPci-linux.o] Error 1
Makefile:1568: recipe for target '_module_/tmp/vbox.0' failed
make[1]: *** [_module_/tmp/vbox.0] Error 2
/tmp/vbox.0/Makefile.include.footer:101: recipe for target 'vboxpci' failed
make: *** [vboxpci] Error 2

Starting virtualbox shows:


The virtual machine 'Docker on Alpine LInux' has terminated unexpectedly during startup with exit code 1 (0x1).

Fehlercode:NS_ERROR_FAILURE (0x80004005)
Komponente:MachineWrap
Interface:IMachine {85cd948e-a71f-4289-281e-0ca7ad48cd89}

There are many postings out there how to fix this.
But is easier than everything written there:

Change to /lib/modules/4.17.0-rc3/misc and type:
modprobe vboxdrv
modprobe vboxnetadp
modprobe vboxnetflt

And after that everything works like expected.