Difference between revisions of "Virtual SME Server"

From SME Server
Jump to navigationJump to search
(Update for Proxmox with SME at online.net)
(some wikification)
Line 73: Line 73:
 
Detailed info on the guest cpu(s)
 
Detailed info on the guest cpu(s)
 
  cat /proc/cpuinfo
 
  cat /proc/cpuinfo
 
 
== SME Server as a Host server ==
 
=== Phpvirtualbox ===
 
* [[Phpvirtualbox]] SME Contrib
 
  
 
=== Proxmox ===
 
=== Proxmox ===
Line 84: Line 79:
  
 
== SME v8 on Proxmox at Online.net ==
 
== SME v8 on Proxmox at Online.net ==
 +
This is based on work by Daniel here: https://wikit.firewall-services.com/doku.php/tuto/virtualisation/netwok_conf_sur_dedibox
  
This is based on work by Daniel here :
+
=== Online.net configuration ===
 
+
{{Warning box|You need a second IP (failover) address. Assign it to your server and make sure you set the MAC for this IP before you do anything else - '''failure to do so may block your network !!'''<br />
https://wikit.firewall-services.com/doku.php/tuto/virtualisation/netwok_conf_sur_dedibox
+
''The problem is that your IP is NOT on the same network range as your gateway so we have to fool the system.''
 
+
}}
You need a second IP (failover) address. Assign it to your server and make sure you set the MAC for this IP before you do anything else - failure to do so may block your network !!!!!
 
 
 
The problem is that your IP is NOT on the same network range as your gateway so we have to fool the system.
 
 
 
Some assumptions :
 
 
 
Your main IP address :
 
 
 
Ip address 62.20.20.250
 
Netmask 255.255.255.0
 
Gateway 62.20.20.1
 
 
 
Your secondary IP address :
 
 
 
200.30.30.1
 
10:10:00:00:20:20 - you DID set the MAC didn't you ?
 
 
 
Proxmox.
 
 
 
Make sure you set your default keyboard - it makes life much easier !
 
 
 
We will use the vmbr0 that is set up, but we need to create a dummy one so we can put SME in server/gateway mode and use Daniels scripts.
 
 
 
Create a new network interface. Call it vmbr1
 
  
Do NOT set IP address/subnet/bridge ports etc.
+
Some assumptions:
 +
;Your main IP address:
 +
:IP address 62.20.20.250
 +
:Netmask 255.255.255.0
 +
:Gateway 62.20.20.1
  
Next, create your KVM for SME. Make sure that you give it two network adaptors - one is vmbr0 and one is vmbr1
+
;Your secondary IP address :
 +
:200.30.30.1
 +
:10:10:00:00:20:20 - you DID set the MAC didn't you ?
  
vmbr0 should have the following settings :
 
  
Model : virtio
+
=== Proxmox configuration ===
MAC : 10:10:00:00:20:20 (as per your mac that you set)
 
  
After you have created the KVM add a second adaptor :
+
{{Note box|Make sure you set your default keyboard - it makes life much easier!!}}
  
vmbr1 should have the following settings :
+
We will use the '''vmbr0''' that is set up, but we need to create a dummy one so we can put SME in server/gateway mode and use Daniels scripts:
Model : virtio
+
* Create a new network interface and call it '''vmbr1'''
MAC : should be the MAC of your main IP address
+
* Do NOT set IP address/subnet/bridge ports etc.
 +
* Create your KVM for SME. Make sure that you give it two network adaptors - one is '''vmbr0''' and one is '''vmbr1'''
 +
** vmbr0 should have the following settings :
 +
::Model: virtio
 +
::MAC: 10:10:00:00:20:20 (as per your mac that you set)
 +
*After you have created the KVM add a second adaptor:
 +
**vmbr1 should have the following settings:
 +
::Model: virtio
 +
::MAC: should be the MAC of your main IP address
  
 
It doesn't matter which one is 0 or 1 as long as the settings are correct.
 
It doesn't matter which one is 0 or 1 as long as the settings are correct.
  
  
 +
=== SME Configuration ===
 
Now do your standard SME installation.
 
Now do your standard SME installation.
  
Line 139: Line 124:
  
 
you can use your second IP address for the external interface, but you will have to set a subnet mask and gateway IP that it likes e.g.:
 
you can use your second IP address for the external interface, but you will have to set a subnet mask and gateway IP that it likes e.g.:
 
+
:IP : 200.30.30.1
IP : 200.30.30.1
+
:Subnet : 255.255.255.0
Subnet : 255.255.255.0
+
:Gateway : 200.30.30.1
Gateway : 200.30.30.1
 
  
 
One you have rebooted your network will not be working correctly so we need to follow Daniels guide to fix it :
 
One you have rebooted your network will not be working correctly so we need to follow Daniels guide to fix it :
 +
db configuration set ExternalIP 200.30.30.1
 +
db configuration set ExternalNetmask 255.255.255.255
 +
db configuration set GatewayIP 62.20.20.1
 +
/etc/e-smith/events/actions/initialize-default-databases
  
db configuration set ExternalIP 200.30.30.1
+
mkdir  -p  /etc/e-smith/templates-custom/etc/sysconfig/network/  
db configuration set ExternalNetmask 255.255.255.255
 
db configuration set GatewayIP 62.20.20.1
 
/etc/e-smith/events/actions/initialize-default-databases
 
 
 
mkdir  -p  /etc/e-smith/templates-custom/etc/sysconfig/network/  
 
  
 
+
echo  '# GATEWAYDEV disabled for dedibox network'  >  /etc/e-smith/templates-custom/etc/sysconfig/network/40GATEWAYDEV
echo  '# GATEWAYDEV disabled for dedibox network'  >  /etc/e-smith/templates-custom/etc/sysconfig/network/40GATEWAYDEV
+
echo  ' # GATEWAY disabled for dedibox network '  >  /etc/e-smith/templates-custom/etc/sysconfig/network/50GATEWAYto pass in THIS_DEVICE MORE_DATA \ n " Unless ( defined $ THIS_DEVICE ) ;     
echo  ' # GATEWAY disabled for dedibox network '  >  /etc/e-smith/templates-custom/etc/sysconfig/network/50GATEWAYto pass in THIS_DEVICE MORE_DATA \ n " Unless ( defined $ THIS_DEVICE ) ;     
 
 
   
 
   
 
     my $ device = $ ExternalInterface { Name } ;
 
     my $ device = $ ExternalInterface { Name } ;
Line 175: Line 157:
  
 
If you have got it right then you should be able to run the following without error :
 
If you have got it right then you should be able to run the following without error :
 +
expand-template /etc/sysconfig/network-scripts/ifcfg-$(db configuration getProp ExternalInterface Name)
 +
expand-template /etc/sysconfig/network-scripts/route-$(db configuration getProp ExternalInterface Name)
  
expand-template / etc / sysconfig / network-scripts / ifcfg-$ ( db configuration getProp ExternalInterface Name )
+
Check all the network settings look correct and then:
expand-template / etc / sysconfig / network-scripts / route-$ ( db configuration getProp ExternalInterface Name )
+
signal-event post-upgrade;signal-event reboot
 
 
Check all the network settings look correct and then :
 
 
 
signal-event post-upgrade;signal-event reboot
 
 
 
You should now be able to connect to your Proxmox box on your primary IP address, and your SME server on your added IP
 
 
 
  
Your network setting should look similar to this :
+
You should now be able to connect to your Proxmox box on your primary IP address, and your SME server on your added IP.
  
EthernetDriver1=virtio_net
+
Your network setting should look similar to this:
EthernetDriver2=virtio_net
+
EthernetDriver1=virtio_net
ExternalDHCP=off
+
EthernetDriver2=virtio_net
ExternalIP=200.30.30.1
+
ExternalDHCP=off
ExternalInterface=interface
+
ExternalIP=200.30.30.1
 +
ExternalInterface=interface
 
     Broadcast=(whatever)
 
     Broadcast=(whatever)
 
     Configuration=static
 
     Configuration=static
 
     Driver=virtio_net
 
     Driver=virtio_net
     Gateway=62.20.20.1 (gateway for your main IP address)
+
     Gateway=62.20.20.1 #gateway for your main IP address
     HWAddress=10:10:00:00:20:20 (MAC that you set for 2nd IP address)
+
     HWAddress=10:10:00:00:20:20 #MAC that you set for 2nd IP address
     IPAddress=200.30.30.1 (your 2nd IP address)
+
     IPAddress=200.30.30.1 #your 2nd IP address  
 
     Name=eth1
 
     Name=eth1
 
     Netmask=255.255.255.255
 
     Netmask=255.255.255.255
     Network=200.30.30.1 (your 2nd IP address)
+
     Network=200.30.30.1 #your 2nd IP address
ExternalNetmask=255.255.255.255
+
ExternalNetmask=255.255.255.255
GatewayIP=62.20.20.1 (gateway for your main IP address)
+
GatewayIP=62.20.20.1 #gateway for your main IP address
  
 
Following your 'local network' and is the range when you VPN :
 
Following your 'local network' and is the range when you VPN :
 
+
InternalInterface=interface
InternalInterface=interface
 
 
     Broadcast=192.168.98.255
 
     Broadcast=192.168.98.255
 
     Configuration=static
 
     Configuration=static
 
     Driver=virtio_net
 
     Driver=virtio_net
     HWAddress=fe:aa:16:19:e8:bf (MAC for 'virtual' adaptor)
+
     HWAddress=fe:aa:16:19:e8:bf #MAC for 'virtual' adaptor
 
     IPAddress=192.168.98.1
 
     IPAddress=192.168.98.1
 
     NICBondingOptions=miimon=200 mode=active-backup
 
     NICBondingOptions=miimon=200 mode=active-backup
Line 217: Line 194:
 
     Netmask=255.255.255.0
 
     Netmask=255.255.255.0
 
     Network=192.168.98.0
 
     Network=192.168.98.0
LocalIP=192.168.98.1
+
LocalIP=192.168.98.1
LocalNetmask=255.255.255.0
+
LocalNetmask=255.255.255.0
 +
 
  
=== Xen ===
+
== Xen ==
  
=== QEMU/KVM ===
+
== QEMU/KVM ==
  
=== VMware ===
+
<br />
 +
= SME Server as a Host server =
 +
== Phpvirtualbox ==
 +
* [[Phpvirtualbox]] SME Contrib
 +
 
 +
 
 +
== VMware ==
 
* Contribs.org [[Vmware|Wiki page]] on installing VMware on SME Server
 
* Contribs.org [[Vmware|Wiki page]] on installing VMware on SME Server
* Inetresting guide from [http://support.theenterprisecloud.com/kb/default.asp?id=355&Lang=1&SID= Verizon] on performance tuning.
+
* Interesting guide from [http://support.theenterprisecloud.com/kb/default.asp?id=355&Lang=1&SID= Verizon] on performance tuning.
 +
 
  
 
[[Category:Virtualisation]]
 
[[Category:Virtualisation]]

Revision as of 00:52, 7 December 2013

Important.png Note:
WIP. Place holder page for all things related to using SME Server as a virtualized server. Please add any info you feel is useful and someone from the doc team will format it nicely, so please go ahead!


PythonIcon.png Skill level: Developer
Thorough understanding of SME Server, configuration and virualization is required. Do not deploy in a production environment unless you are very confident you have the skills to manage and troubleshoot and find root causes of possible issues.


SME Server as a virtualized Guest server

Considerations

  • Storage: Local, NAS, iSCSI, LVM, Raid
  • Network: LAN/WAN, VLAN, VPN, Bandwith,
  • Out of band access (VNC, SPICE)


'Hardware' configuration of a Virtual SME Sever

CPU

  • Host CPU or emulate
  • Sockets and cores

Memory options

  • To balloon or to not to balloon

Disk options

  • Virtio driver or legacy driver?
  • Disk types pros and cons
  • Disk I/O options

Network options

  • Virtio driver or legacy driver?
  • Bridge, NAT or Route?
  • Bandwidth options


Installation options of a Virtual SME Server

Kernel options

  • LVM (option nolvm)
  • Raid (option raid=none)


SME Server configuration settings

NTPD

Timing related options are important within Virtual Guests and to the amount of 'pressure' it puts on the host and level/increasing CPU usage of the host and guest. By default SME Server uses the NTP deamon for 'timing' related matters, but by default is focussed on the above mentioned 1000HZ, hence the kernel option 'divider=10', thus reducing the timing cycles/context switching requests on the host. See the above VMWare document mentioned (Way at the bottom).

On a Virtual SME guest server the ntpd SupportLargeDrift DB variable can be enabled as follows:

config setprop ntpd SupportLargeDrift enabled
expand-template /etc/ntp.conf

and

service ntpd restart

to activate the new configuration. This will adjust /etc/ntp.conf to 'better' settings for a virtual guest. By setting the above value to 'disabled' and expand the template, the NTP service and configuration will revert back to SME Server defaults.

Clock/frequency

As per suggestions in this article from VmWare and this one from Oracle on virtual Linux Guests, adjusting the guest Frequency will improve the guests speed.

You can check if your guest server can benefit from these boot options:

[root@sme8 ~]# grep CONFIG_HZ /boot/config-`uname -r`
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000

If you see the above result, these boot options are useful.

For example, if your kernel boot line is:

kernel /vmlinuz-2.6.18-348.6.1.el5 ro root=/dev/main/root 

change it to:

kernel /vmlinuz-2.6.18-348.6.1.el5 ro root=/dev/main/root divider=10 clocksource=acpi_pm


Important.png Note:
We need to come up with a template fragment for grub.conf to make kernel options survive events.


Tools/utilities

iotop

top like utility to monitor the guest I/O (performance)

yum install iotop

cpu info

Detailed info on the guest cpu(s)

cat /proc/cpuinfo

Proxmox

  • Interesting article on installing SME Server as guest on Proxmox


SME v8 on Proxmox at Online.net

This is based on work by Daniel here: https://wikit.firewall-services.com/doku.php/tuto/virtualisation/netwok_conf_sur_dedibox

Online.net configuration

Warning.png Warning:
You need a second IP (failover) address. Assign it to your server and make sure you set the MAC for this IP before you do anything else - failure to do so may block your network !!

The problem is that your IP is NOT on the same network range as your gateway so we have to fool the system.


Some assumptions:

Your main IP address
IP address 62.20.20.250
Netmask 255.255.255.0
Gateway 62.20.20.1
Your secondary IP address
200.30.30.1
10:10:00:00:20:20 - you DID set the MAC didn't you ?


Proxmox configuration

Important.png Note:
Make sure you set your default keyboard - it makes life much easier!!


We will use the vmbr0 that is set up, but we need to create a dummy one so we can put SME in server/gateway mode and use Daniels scripts:

  • Create a new network interface and call it vmbr1
  • Do NOT set IP address/subnet/bridge ports etc.
  • Create your KVM for SME. Make sure that you give it two network adaptors - one is vmbr0 and one is vmbr1
    • vmbr0 should have the following settings :
Model: virtio
MAC: 10:10:00:00:20:20 (as per your mac that you set)
  • After you have created the KVM add a second adaptor:
    • vmbr1 should have the following settings:
Model: virtio
MAC: should be the MAC of your main IP address

It doesn't matter which one is 0 or 1 as long as the settings are correct.


SME Configuration

Now do your standard SME installation.

<here would be a lot easier if we could force it to have a local IP first so you could ssh from Proxmox to SME and you could then use scp to copy files or a terminal to copy and paste>

When you go through the setup, make sure you pick the DUMMY adaptor for the local interface, and the real adaptor for the external interface. Make sure you know your MAC addresses so you know which one is which.

you can use your second IP address for the external interface, but you will have to set a subnet mask and gateway IP that it likes e.g.:

IP : 200.30.30.1
Subnet : 255.255.255.0
Gateway : 200.30.30.1

One you have rebooted your network will not be working correctly so we need to follow Daniels guide to fix it :

db configuration set ExternalIP 200.30.30.1
db configuration set ExternalNetmask 255.255.255.255
db configuration set GatewayIP 62.20.20.1
/etc/e-smith/events/actions/initialize-default-databases
mkdir  -p  /etc/e-smith/templates-custom/etc/sysconfig/network/ 
echo  '# GATEWAYDEV disabled for dedibox network'  >  /etc/e-smith/templates-custom/etc/sysconfig/network/40GATEWAYDEV
echo  ' # GATEWAY disabled for dedibox network '  >  /etc/e-smith/templates-custom/etc/sysconfig/network/50GATEWAYto pass in THIS_DEVICE MORE_DATA \ n " Unless ( defined $ THIS_DEVICE ) ;     

   my $ device = $ ExternalInterface { Name } ;
   Unless ( $ device ) 
   {    
       warn ( "Can not determined for external network device name" ) ;
        return  "# template expansion error - Can not determined for external network device name" ;
    }

   return  "# Gateway Applies only one external interface" 
       Unless ( ExternalInterface $ { Name } eq $ THIS_DEVICE ) ;

   my $ gw = $ ExternalInterface { 'gateway' } ;

   $ OUT =. " $ gw dev $ THIS_DEVICE \ ​​n " ;
    $ OUT =. "default via $ gw dev $ THIS_DEVICE " ;
}

EOF

If you have got it right then you should be able to run the following without error :

expand-template /etc/sysconfig/network-scripts/ifcfg-$(db configuration getProp ExternalInterface Name) 
expand-template /etc/sysconfig/network-scripts/route-$(db configuration getProp ExternalInterface Name)

Check all the network settings look correct and then:

signal-event post-upgrade;signal-event reboot

You should now be able to connect to your Proxmox box on your primary IP address, and your SME server on your added IP.

Your network setting should look similar to this:

EthernetDriver1=virtio_net
EthernetDriver2=virtio_net
ExternalDHCP=off
ExternalIP=200.30.30.1
ExternalInterface=interface
   Broadcast=(whatever)
   Configuration=static
   Driver=virtio_net
   Gateway=62.20.20.1 #gateway for your main IP address
   HWAddress=10:10:00:00:20:20 #MAC that you set for 2nd IP address
   IPAddress=200.30.30.1 #your 2nd IP address 
   Name=eth1
   Netmask=255.255.255.255
   Network=200.30.30.1 #your 2nd IP address
ExternalNetmask=255.255.255.255
GatewayIP=62.20.20.1 #gateway for your main IP address

Following your 'local network' and is the range when you VPN :

InternalInterface=interface
   Broadcast=192.168.98.255
   Configuration=static
   Driver=virtio_net
   HWAddress=fe:aa:16:19:e8:bf #MAC for 'virtual' adaptor
   IPAddress=192.168.98.1
   NICBondingOptions=miimon=200 mode=active-backup
   Name=eth0
   Netmask=255.255.255.0
   Network=192.168.98.0
LocalIP=192.168.98.1
LocalNetmask=255.255.255.0


Xen

QEMU/KVM


SME Server as a Host server

Phpvirtualbox


VMware

  • Contribs.org Wiki page on installing VMware on SME Server
  • Interesting guide from Verizon on performance tuning.