<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[SCICT.nl Hyperblog]]></title><description><![CDATA[Virtualization, Software-Defined, Hyperconverged & Cloud
A blog by Jan Jaap van Santen
Opinions are my own.
VMWare, Storage, Networking, Cloud, Powershell, Nagios, Raspberry Pi, Software-Defned, SDDC]]></description><link>https://scict.nl/</link><image><url>https://scict.nl/favicon.png</url><title>SCICT.nl Hyperblog</title><link>https://scict.nl/</link></image><generator>Ghost 3.30</generator><lastBuildDate>Tue, 24 Jun 2025 09:32:14 GMT</lastBuildDate><atom:link href="https://scict.nl/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[PowerCLI (E)xVC-vMotion Helper]]></title><description><![CDATA[I've written a small PowerCLI commandline helper giving you a wizard driven workflow to quickly do Cross vCenter Migrations]]></description><link>https://scict.nl/powercli-e-xvc-vmotion-helper/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7e4</guid><category><![CDATA[PowerCLI]]></category><category><![CDATA[Powershell]]></category><category><![CDATA[vMotion]]></category><category><![CDATA[xVC-vMotion]]></category><category><![CDATA[ExVC-vMotion]]></category><category><![CDATA[crossvcentervmotion]]></category><category><![CDATA[VMware]]></category><category><![CDATA[vSphere]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Wed, 16 May 2018 15:32:12 GMT</pubDate><media:content url="https://scict.nl/content/images/2018/05/exvc-vmotion-logo.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2018/05/exvc-vmotion-logo.png" alt="PowerCLI (E)xVC-vMotion Helper"><p>I've written a small PowerCLI commandline helper giving you a wizard driven workflow to quickly do Cross vCenter Migrations a.k.a. (E)xVC-vMotions. It's based on virtuallyGhetto's <a href="https://www.virtuallyghetto.com/2016/05/automating-cross-vcenter-vmotion-xvc-vmotion-between-the-same-different-sso-domain.html">xMove-VM.ps1</a> <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> powershell script. <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup><sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup></p>
<p>There is also a cool VMware Fling, this <a href="https://labs.vmware.com/flings/cross-vcenter-workload-migration-utility">cross-vcenter-workload-migration-utility</a> <sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup> gives you an actually web gui for (E)xVC workload migration, very cool, but needs a machine to run on.  Also a nice <a href="https://www.virtuallyghetto.com/2017/12/bulk-vm-migration-using-new-cross-vcenter-vmotion-utility-fling.html">PowerShell module</a> <sup class="footnote-ref"><a href="#fn5" id="fnref5">[5]</a></sup> for automating the fling on the commandline from virtuallyGhetto.</p>
<p>I wanted a simple script, easy to use for everybody and immediately ready to go after download (only needs a recent PowerCLI), that's why i created this helper. All have there use-cases imho.</p>
<h3 id="howdoesitwork">How does it work?</h3>
<p>The script shows a 7-step wizard asking you for a set of parameters needed to succesfully start the cross-vcenter-vmotion. Parameters like source and destination vCenter, destination Host, destination Datastore, destination Networks, etc.</p>
<p><img src="https://scict.nl/content/images/2018/05/exvc-vmotion-1---small.png" alt="PowerCLI (E)xVC-vMotion Helper"></p>
<p>It's very easy to use and was built to work on most environments, with a few checks here and there eliminating most frequent errors. You only need a recent PowerCLI, but the script tells you to if it cannot find the needed PowerCLI modules and directs you to the download website.</p>
<p>At the end of the wizard it shows a complete set of the selected workload to migrate, asks for confirmation and will start the vMotions in parallel showing a handy multi-progressbar.<br>
<img src="https://scict.nl/content/images/2018/05/exvc-vmotion-5.png" alt="PowerCLI (E)xVC-vMotion Helper"></p>
<h3 id="wishlist">Wishlist</h3>
<p>Maybe i'll update the code later on giving the script Per-VM multi datastore support (it now only does single datastore for the entire workload selected). I have written this feature for the VM-Networks though.</p>
<p>I would also like to upgrade it with some intelligence regarding cross version migration; but in general it doesn't support migrating to a lower version. And also cross standard/distributed vSwitch support; it doesn't support vds to vss. Check <a href="https://www.virtuallyghetto.com/2017/02/cross-vcenter-server-operations-clone-migrate-between-versions-of-vsphere-6-x.html">this link</a> <sup class="footnote-ref"><a href="#fn6" id="fnref6">[6]</a></sup> for more info on the matter.</p>
<p>And it lacks destination VM Folder support...</p>
<h3 id="code">Code</h3>
<p><a href="https://github.com/janjaaps/powershell/blob/master/VMWare/ExVC-vMotion-Helper.ps1">Github - ExVC-vMotion-Helper.ps1</a> <sup class="footnote-ref"><a href="#fn7" id="fnref7">[7]</a></sup></p>
<script src="https://gist.github.com/janjaaps/d4e72518b18cb43f6bf774fc782a8825.js"></script>
<font size="3">
<b>notes & links</b>
</font>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Blog on xMove-VM.ps1: <a href="https://www.virtuallyghetto.com/2016/05/automating-cross-vcenter-vmotion-xvc-vmotion-between-the-same-different-sso-domain.html">https://www.virtuallyghetto.com/2016/05/automating-cross-vcenter-vmotion-xvc-vmotion-between-the-same-different-sso-domain.html</a> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Blog on affinity rules during xVC-vMotion: <a href="https://www.virtuallyghetto.com/2015/04/are-affinityanti-affinity-rules-preserved-during-cross-vcenter-vmotion-xvc-vmotion.html">https://www.virtuallyghetto.com/2015/04/are-affinityanti-affinity-rules-preserved-during-cross-vcenter-vmotion-xvc-vmotion.html</a> <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>xVC-vMotion requirements: <a href="https://kb.vmware.com/s/article/2106952">https://kb.vmware.com/s/article/2106952</a> <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn4" class="footnote-item"><p>The Fling itself: <a href="https://labs.vmware.com/flings/cross-vcenter-workload-migration-utility">https://labs.vmware.com/flings/cross-vcenter-workload-migration-utility</a> <a href="#fnref4" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn5" class="footnote-item"><p>Blog on Fling cross-vcenter-workload-migration-utility: <a href="https://www.virtuallyghetto.com/2017/12/bulk-vm-migration-using-new-cross-vcenter-vmotion-utility-fling.html">https://www.virtuallyghetto.com/2017/12/bulk-vm-migration-using-new-cross-vcenter-vmotion-utility-fling.html</a> <a href="#fnref5" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn6" class="footnote-item"><p>xVC-vMotion cross-version support: <a href="https://www.virtuallyghetto.com/2017/02/cross-vcenter-server-operations-clone-migrate-between-versions-of-vsphere-6-x.html">https://www.virtuallyghetto.com/2017/02/cross-vcenter-server-operations-clone-migrate-between-versions-of-vsphere-6-x.html</a> <a href="#fnref6" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn7" class="footnote-item"><p>The bits: <a href="https://github.com/janjaaps/powershell/blob/master/VMWare/ExVC-vMotion-Helper.ps1">https://github.com/janjaaps/powershell/blob/master/VMWare/ExVC-vMotion-Helper.ps1</a> <a href="#fnref7" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration]]></title><description><![CDATA[2nd in this series is setting up a virtual Cumulus VX Clos-fabric and connect it to our NSX setup from our previous article, including VTEP integration!]]></description><link>https://scict.nl/nsx-cumulus-part2-en/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7ee</guid><category><![CDATA[VMware]]></category><category><![CDATA[NSX]]></category><category><![CDATA[Cumulus]]></category><category><![CDATA[Cumulus VX]]></category><category><![CDATA[SDN]]></category><category><![CDATA[CLOS Fabic]]></category><category><![CDATA[L3 Fabric]]></category><category><![CDATA[SDDC]]></category><category><![CDATA[Software Defined DataCenter]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Mon, 30 Apr 2018 11:01:00 GMT</pubDate><media:content url="https://scict.nl/content/images/2017/07/NSX-Cumulus-1.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2017/07/NSX-Cumulus-1.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"><p>2nd in these series is setting up a virtual Cumulus VX <a href="https://en.wikipedia.org/wiki/Clos_network">Clos-fabric</a> and connect it to our NSX setup from our <a href="https://scict.nl/nsx-cumulus-part1-en/">previous</a> article, including VTEP integration!</p>
<h4 id="forthisweneedtoexpandourlabenvironment">For this we need to expand our LAB environment:</h4>
<ul>
<li>Freesco Router (for dns, ntp and internet)</li>
<li>Management switch (gns3 builtin)</li>
<li><mark><s>VXLAN Router (Cisco 3640) (not really a vxlan router, but creates an L3 hop between the ESXi hosts, and so it routes the VXLAN packets)</s></mark></li>
<li>VMware vCenter Server Appliance 6.5.0d</li>
<li>Two VMware ESXi 6.5.0d hosts</li>
<li>NSX Manager 6.3.2</li>
<li>NSX Controller 6.3.2 (3 for HA, but 1 works just fine in the lab)</li>
<li>Two test vm's (we chose alpine linux for this occasion) running on esx1 &amp; esx2</li>
<li><mark>Four Cumulus VX 3.5.0 switches consisting of two spines and two leafs.</mark><em>We started building the lab on Cumulus VX 3.3.2 though, and it's possible the configuration differs somewhat between the two. One big change between them is that Cumulus Linux 3.4 and later releases replaces <a href="https://docs.cumulusnetworks.com/display/DOCS/Upgrading+from+Quagga+to+FRRouting">Quagga with FRRouting</a>.</em></li>
<li><mark>Two test &quot;physical&quot; servers (we chose <a href="http://www.damnsmalllinux.org/">damn small linux</a>) connected to the leafs</mark></li>
</ul>
<p><img src="https://scict.nl/content/images/2017/08/LAB2_1.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
<h4 id="labipaddressplan">Lab IP Address plan</h4>
<font size="1">
<table style="width:100%" ">
<thead>
<tr>
<th>MGMT Network</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td><i>Default gateway</i></td>
<td>10.10.100.1</td>
<td></td>
<td></td>
</tr>
<tr>
<td><i>DNS</i></td>
<td>10.10.100.1</td>
<td></td>
<td></td>
</tr>
<tr>
<td><i>Domain</i></td>
<td>cumuluslab</td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>router</td>
<td>10.10.100.1/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td><font style="background-color:yellow;">spine1</font></td>
<td><font style="background-color:yellow;">10.10.100.11/24</font></td>
<td></td>
<td></td>
</tr>
<tr>
<td><font style="background-color:yellow;">spine2</font></td>
<td><font style="background-color:yellow;">10.10.100.12/24</font></td>
<td></td>
<td></td>
</tr>
<tr>
<td><font style="background-color:yellow;">leaf1</font></td>
<td><font style="background-color:yellow;">10.10.100.13/24</font></td>
<td></td>
<td></td>
</tr>
<tr>
<td><font style="background-color:yellow;">leaf2</font></td>
<td><font style="background-color:yellow;">10.10.100.14/24</font></td>
<td></td>
<td></td>
</tr>
<tr>
<td>vsca</td>
<td>10.10.100.20/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>esx1</td>
<td>10.10.100.21/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>esx2</td>
<td>10.10.100.22/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>nsxcont</td>
<td>10.10.100.23/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>nsxman</td>
<td>10.10.100.24/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>laptop</td>
<td>10.10.100.30/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
<thead>
<tr>
<th>VXLAN Network</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td>esx1 vxlan vmk1</td>
<td>10.10.101.1/30</td>
<td>MTU</td>
<td>1500</td>
</tr>
<tr>
<td><font style="background-color:yellow;">leaf1 vtep</font></td>
<td>10.10.101.2/30</td>
<td>MTU</td>
<td>1500</td>
</tr>
<tr>
<td>esx2 vxlan vmk1</td>
<td>10.10.101.9/30</td>
<td>MTU</td>
<td>1500</td>
</tr>
<tr>
<td><font style="background-color:yellow;">leaf2 vtep</font></td>
<td>10.10.101.10/30</td>
<td>MTU</td>
<td>1500</td>
</tr>
</tbody>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>

<thead>
<tr>
<th>VXLAN Client Network</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td>alpine01</td>
<td>10.10.200.11/24</td>
<td>MTU</td>
<td>1400</td>
</tr>
<tr>
<td>alpine02</td>
<td>10.10.200.12/24</td>
<td>MTU</td>
<td>1400</td>
</tr>
<tr>
<td><font style="background-color:yellow;">dsl1</font></td>
<td><font style="background-color:yellow;">10.10.200.13/24</font></td>
<td><font style="background-color:yellow;">MTU</font></td>
<td><font style="background-color:yellow;">1400</font></td>
</tr>
<tr>
<td><font style="background-color:yellow;">dsl2</font></td>
<td><font style="background-color:yellow;">10.10.200.14/24</font></td>
<td><font style="background-color:yellow;">MTU</font></td>
<td><font style="background-color:yellow;">1400</font></td>
</tr>
</tbody>
</table>
</font>
<h5 id="spineleafinterfaceconfiguration">SPINE &amp; LEAF interface configuration</h5>
<font size="1">
<table style="width:100%" ">
<thead>
<tr>
<th><b>SPINE1 - /etc/network/interfaces & NCLU</b></th>
<th><b>SPINE2 - /etc/network/interfaces & NCLU</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<pre><code># The loopback network interface
auto lo
iface lo inet static
address 10.10.102.11
netmask 255.255.255.255

# The primary network interface
auto eth0
iface eth0 inet static
address 10.10.100.11
netmask 255.255.255.0
gateway 10.10.100.1

# Uplinks
auto swp1
iface swp1

auto swp2
iface swp2
</code></pre>
</td>
<td>
<pre><code># The loopback network interface
auto lo
iface lo inet static
address 10.10.102.12
netmask 255.255.255.255

# The primary network interface
auto eth0
iface eth0 inet static
address 10.10.100.12
netmask 255.255.255.0
gateway 10.10.100.1

# Uplinks
auto swp1
iface swp1

auto swp2
iface swp2
</code></pre>
</td>
</tr>
<tr>
<td>
<pre><code>#spine01
net add loopback lo ip address 10.10.102.11/32
net add interface eth0 ip address 10.10.100.11/24
net add routing route 0.0.0.0/0 10.10.100.1
net commit
</code></pre>
</td>
<td>
<pre><code>#spine02
net add loopback lo ip address 10.10.102.12/32
net add interface eth0 ip address 10.10.100.12/24
net add routing route 0.0.0.0/0 10.10.100.1
net commit
</code></pre>
</td>
</tr>
</tbody>
</table>
</font>
<font size="1">
<table style="width:100%" ">
<thead>
<tr>
<th><b>LEAF1 - /etc/network/interfaces & NCLU</b></th>
<th><b>LEAF2 - /etc/network/interfaces & NCLU</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<pre><code># The loopback network interface
auto lo
iface lo inet loopback
address 10.10.102.13
netmask 255.255.255.255

# The primary network interface
auto eth0
iface eth0 inet static
address 10.10.100.13
netmask 255.255.255.0
gateway 10.10.100.1

# Uplinks
auto swp1
iface swp1

auto swp2
iface swp2

# ESX1
auto swp3
iface swp3 inet static
address 10.10.101.2
netmask 255.255.255.252
mtu 1500

auto swp4
iface swp4

auto swp5
iface swp5

auto swp6
iface swp6
</code></pre>
</td>
<td>
<pre><code># The loopback network interface
auto lo
iface lo inet loopback
address 10.10.102.14
netmask 255.255.255.255

# The primary network interface
auto eth0
iface eth0 inet static
address 10.10.100.14
netmask 255.255.255.0
gateway 10.10.100.1

# Uplinks
auto swp1
iface swp1

auto swp2
iface swp2

# ESX2
auto swp3
iface swp3 inet static
address 10.10.101.10
netmask 255.255.255.252
mtu 1500

auto swp4
iface swp4

auto swp5
iface swp5

auto swp6
iface swp6
</code></pre>
</td>
</tr>
<tr>
<td>
<pre><code>#leaf01
net add loopback lo ip address 10.10.102.13/32
net add interface eth0 ip address 10.10.100.13/24
net add routing route 0.0.0.0/0 10.10.100.1
net add interface swp3 ip address 10.10.101.2/30
net add interface swp3 mtu 1500
</code></pre>
</td>
<td>
<pre><code>#leaf02
net add loopback lo ip address 10.10.102.14/32
net add interface eth0 ip address 10.10.100.14/24
net add routing route 0.0.0.0/0 10.10.100.1
net add interface swp3 ip address 10.10.101.10/30
net add interface swp3 mtu 1500
</code></pre>
</td>
</tr>
</tbody>
</table>
</font>
<h4 id="spineleafroutingconfiguration">SPINE &amp; LEAF routing configuration</h4>
<p>To turn the Cumulus switches into an EVPN fabric, we enable BGP as the routing protocol.<br>
We establish peering between all neighbors (leaf1 to spine1 and spine2, leaf2 to spine1 and spine2)</p>
<font size="1">
<table style="width:100%" ">
<thead>
<tr>
<th><b>SPINE1 - /etc/quagga/Quagga.conf & NCLU</b></th>
<th><b>SPINE2 - /etc/quagga/Quagga.conf & NCLU</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<pre><code>!
interface swp1
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface swp2
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface swp3
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface swp4
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
! enabling BGP
router bgp 65020
 bgp router-id 10.0.0.21
 bgp bestpath as-path multipath-relax
! we configure a peer-group to put all the fabric nodes in and configure their capabilities.
 neighbor fabric peer-group
 neighbor fabric remote-as external
 neighbor fabric description Internal Fabric Network
 neighbor fabric capability extended-nexthop
! we configure the switchports to be in the peer-group we just created.
 neighbor swp1 interface peer-group fabric
 neighbor swp2 interface peer-group fabric
 neighbor swp3 interface peer-group fabric
 neighbor swp4 interface peer-group fabric
 ! we enable the default adress-families for L3 routing between VTEP endpoints
 address-family ipv4 unicast
  ! add loopback interface to BGP (this is the VTEP endpoint on this switch)
  network 10.0.0.21/32
  redistribute connected
 exit-address-family
 !
 address-family ipv6 unicast
  neighbor fabric activate
 exit-address-family
 ! we enable the EVPN af this is the EVPN VXLAN control-plane protocol.
 address-family evpn
  neighbor fabric activate
 exit-address-family
!
</code></pre>
</td>
<td>
<pre><code>!
interface swp1
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface swp2
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface swp3
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface swp4
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
! enabling BGP
router bgp 65020
 bgp router-id 10.0.0.22
 bgp bestpath as-path multipath-relax
! we configure a peer-group to put all the fabric nodes in and configure their capabilities.
 neighbor fabric peer-group
 neighbor fabric remote-as external
 neighbor fabric description Internal Fabric Network
 neighbor fabric capability extended-nexthop
! we configure the switchports to be in the peer-group we just created.
 neighbor swp1 interface peer-group fabric
 neighbor swp2 interface peer-group fabric
 neighbor swp3 interface peer-group fabric
 neighbor swp4 interface peer-group fabric
 ! we enable the default adress-families for L3 routing between VTEP endpoints
 address-family ipv4 unicast
  ! add loopback interface to BGP (this is the VTEP endpoint on this switch)
  network 10.0.0.22/32
  redistribute connected
 exit-address-family
 !
 address-family ipv6 unicast
  neighbor fabric activate
 exit-address-family
 ! we enable the EVPN af this is the EVPN VXLAN control-plane protocol.
 address-family evpn
  neighbor fabric activate
 exit-address-family
!
</code></pre>
</td>
</tr>
<tr>
<td>
<pre><code>#spine01
net add bgp autonomous-system 65020
net add bgp router-id 10.0.0.21
net add bgp bestpath as-path multipath-relax
net add bgp neighbor fabric peer-group
net add bgp neighbor fabric remote-as external
net add bgp neighbor fabric description Internal Fabric Network
net add bgp neighbor fabric capability extended-nexthop
net add bgp neighbor swp1 interface peer-group fabric
net add bgp neighbor swp2 interface peer-group fabric
net add bgp ipv4 unicast network 10.0.0.21/32
net add bgp ipv4 unicast redistribute connected
net add bgp ipv6 unicast neighbor fabric activate
net add bgp evpn neighbor fabric activate
</code></pre>
</td>
<td>
<pre><code>#spine02
net add bgp autonomous-system 65020
net add bgp router-id 10.0.0.22
net add bgp bestpath as-path multipath-relax
net add bgp neighbor fabric peer-group
net add bgp neighbor fabric remote-as external
net add bgp neighbor fabric description Internal Fabric Network
net add bgp neighbor fabric capability extended-nexthop
net add bgp neighbor swp1 interface peer-group fabric
net add bgp neighbor swp2 interface peer-group fabric
net add bgp ipv4 unicast network 10.0.0.22/32
net add bgp ipv4 unicast redistribute connected
net add bgp ipv6 unicast neighbor fabric activate
net add bgp evpn neighbor fabric activate
</code></pre>
</td>
</tr>
</tbody>
</table>
</font>
<font size="1">
<table style="width:100%" ">
<thead>
<tr>
<th><b>LEAF1 - /etc/quagga/Quagga.conf & NCLU</b></th>
<th><b>LEAF2 - /etc/quagga/Quagga.conf & NCLU</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<pre><code>!
interface swp1
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface swp2
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
! enabling BGP
router bgp 65011
 bgp router-id 10.0.0.11
 bgp bestpath as-path multipath-relax
 ! we configure a peer-group to put all the fabric nodes in and configure their capabilities.
 neighbor fabric peer-group
 neighbor fabric remote-as external
 neighbor fabric description Internal Fabric Network
 neighbor fabric capability extended-nexthop
! we configure the switchports to be in the peer-group we just created.
 neighbor swp1 interface peer-group fabric
 neighbor swp2 interface peer-group fabric
 ! we enable the default adress-families for L3 routing between VTEP endpoints
 address-family ipv4 unicast
  ! add loopback interface to BGP (this is the VTEP endpoint on this switch)
  network 10.0.0.11/32
  redistribute connected
 exit-address-family
 !
 address-family ipv6 unicast
  neighbor fabric activate
 exit-address-family
 ! we enable the EVPN af this is the EVPN VXLAN control-plane protocol.
 address-family evpn
  neighbor fabric activate
  ! provision all locally configured VNIs to be advertised by the BGP control plane.
  advertise-all-vni
 exit-address-family
!
</code></pre>
</td>
<td>
<pre><code>!
interface swp1
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface swp2
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
! enabling BGP
router bgp 65012
 bgp router-id 10.0.0.12
 bgp bestpath as-path multipath-relax
 ! we configure a peer-group to put all the fabric nodes in and configure their capabilities.
 neighbor fabric peer-group
 neighbor fabric remote-as external
 neighbor fabric description Internal Fabric Network
 neighbor fabric capability extended-nexthop
! we configure the switchports to be in the peer-group we just created.
 neighbor swp1 interface peer-group fabric
 neighbor swp2 interface peer-group fabric
 ! we enable the default adress-families for L3 routing between VTEP endpoints
 address-family ipv4 unicast
  ! add loopback interface to BGP (this is the VTEP endpoint on this switch)
  network 10.0.0.12/32
  redistribute connected
 exit-address-family
 !
 address-family ipv6 unicast
  neighbor fabric activate
 exit-address-family
 ! we enable the EVPN af this is the EVPN VXLAN control-plane protocol.
 address-family evpn
  neighbor fabric activate
  ! provision all locally configured VNIs to be advertised by the BGP control plane.
  advertise-all-vni
 exit-address-family
!
</code></pre>
</td>
</tr>
<td>
<pre><code>#leaf01
net add bgp autonomous-system 65011
net add bgp router-id 10.0.0.11
net add bgp bestpath as-path multipath-relax
net add bgp neighbor fabric peer-group
net add bgp neighbor fabric remote-as external
net add bgp neighbor fabric description Internal Fabric Network
net add bgp neighbor fabric capability extended-nexthop
net add bgp neighbor swp1 interface peer-group fabric
net add bgp neighbor swp2 interface peer-group fabric
net add bgp ipv4 unicast network 10.0.0.11/32
net add bgp ipv4 unicast redistribute connected
net add bgp ipv6 unicast neighbor fabric activate
net add bgp evpn neighbor fabric activate
net add bgp evpn advertise-all-vni
</code></pre>
</td>
<td>
<pre><code>#leaf02
net add bgp autonomous-system 65012
net add bgp router-id 10.0.0.12
net add bgp bestpath as-path multipath-relax
net add bgp neighbor fabric peer-group
net add bgp neighbor fabric remote-as external
net add bgp neighbor fabric description Internal Fabric Network
net add bgp neighbor fabric capability extended-nexthop
net add bgp neighbor swp1 interface peer-group fabric
net add bgp neighbor swp2 interface peer-group fabric
net add bgp ipv4 unicast network 10.0.0.12/32
net add bgp ipv4 unicast redistribute connected
net add bgp ipv6 unicast neighbor fabric activate
net add bgp evpn neighbor fabric activate
net add bgp evpn advertise-all-vni
</code></pre>
</td>

</tbody>
</table>
</font>
<h4 id="setupvtepintegration">Setup VTEP Integration</h4>
<p>The next step is integrating the &quot;hardware&quot; VTEP with NSX.<br>
Now hardware-VTEP-integration is cool because we can manage physical ports from NSX and add these into a NSX logical switch, bringing the physical world into the virtual world.<br>
<font size="2"><br>
<em>Also check Cumulus DOCS for a comprehensive <a href="https://docs.cumulusnetworks.com/display/DOCS/Integrating+Hardware+VTEPs+with+VMware+NSX-V">step-by-step</a>.</em><br>
</font></p>
<p><strong>1. Configure the NSX Replication Cluster</strong><br>
<em>Networking &amp; Security &gt; Service Definitions &gt; Hardware Devices &gt; Replication Cluster &gt; Edit</em>.<br>
The replication cluster will be responsible for forwarding the broadcast traffic sent from a hardware VTEP.</p>
<p><img src="https://scict.nl/content/images/2018/02/LAB2_HD-replication-cluster.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
<p><strong>2. Configure openvswitch-vtep on both Cumulus leaf switches</strong><br>
Run these command on both leaf switches:</p>
<pre><code>sudo systemctl enable openvswitch-vtep.service
sudo systemctl start openvswitch-vtep.service
</code></pre>
<p><strong>3. Bootstrap both Cumulus leaf switches</strong><br>
LEAF1:</p>
<pre><code>sudo vtep-bootstrap --credentials-path /var/lib/openvswitch --controller_ip 10.10.100.23 leaf1 10.10.102.13 10.10.100.13
</code></pre>
<p>LEAF2:</p>
<pre><code>sudo vtep-bootstrap --credentials-path /var/lib/openvswitch --controller_ip 10.10.100.23 leaf2 10.10.102.14 10.10.100.14
</code></pre>
<p><strong>4. Configure the switch as a VTEP gateway</strong><br>
For LEAF1 grab (copy) the public key content from <em>LEAF1:/var/lib/openvswitch/leaf1-cert.pem</em> and add this <em>BASE64 begin/end request</em> to the <em>Certificate</em> field while adding the Hardware Device, also enable <em>BFD</em>.</p>
<p><em>Networking &amp; Security &gt; Service Definitions &gt; Hardware Devices &gt; Hardware Devices &gt; Click <strong>+</strong></em>.<br>
<img src="https://scict.nl/content/images/2018/02/LAB2_HD-adddevice.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
<p>Do the same for LEAF2 : <em>LEAF2:/var/lib/openvswitch/leaf2-cert.pem</em><br>
<img src="https://scict.nl/content/images/2018/02/LAB-VTEP-Hardware-Devices-OK-small.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
<p><strong>5. Bring the physical server switch port into the virtual world</strong><br>
Goto <em>Networking &amp; Security &gt; Logical Switches</em> and click <em>Manage Hardware Bindings</em> from the Actions menu of your logical switch.</p>
<p>Add leaf1:swp2 (the physical port connected to DSL1) to the logical switch. Do this for both physical servers LEAF1:DSL_server1 and LEAF2:DSL_server2!</p>
<p><img src="https://scict.nl/content/images/2018/02/LAB-VTEP-Hardware-Port-small.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
<h4 id="verifyoursetup">Verify our setup</h4>
<p>And we're done! Let's look at our LAB and test it!<br>
We've got two DSL VM's running on ESX1 and ESX2 and two DSL physical servers connected to LEAF1 and LEAF2. All four nodes are connected to the same VXLAN, this was possible due to the hardware VTEP integration between NSX and Cumulus, cool right?!?<br>
<img src="https://scict.nl/content/images/2018/02/LAB-GNS3-6u3---physical.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"><br>
<font size="1"><center><em>It's an older image, but setup is the same</em></center></font><br>
Let's do some final pings tests:</p>
<table>
<tr>
<td>
<b>DSL_VM01</b>
<p><img src="https://scict.nl/content/images/2018/02/LAB-pingsource-DSL_VM01.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
</td>
<td>
<b>DSL_VM02</b>  
<p><img src="https://scict.nl/content/images/2018/02/LAB-pingsource-DSL_VM02.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
</td>
</tr>
<tr>
<td>
<b>DSL_SERVER01</b>
<p><img src="https://scict.nl/content/images/2018/02/LAB-pingsource-DSL_SERVER01.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
</td>
<td>
<b>DSL_SERVER02</b>
<p><img src="https://scict.nl/content/images/2018/02/LAB-pingsource-DSL_SERVER02.png" alt="NSX & Cumulus #2 - Cumulus VX Clos Fabric + VTEP Integration"></p>
</td>
</tr>
</table>
And done...
<p>Next up is <a href="https://scict.nl/nsx-cumulus-part3-en/">adding redundancy to the network</a>, how... wait and see!</p>
<p><em>Articles in these series</em><br>
<a href="https://scict.nl/nsx-cumulus-part1-en/">https://scict.nl/nsx-cumulus-part1-en/</a><br>
<a href="https://scict.nl/nsx-cumulus-part2-en/">https://scict.nl/nsx-cumulus-part2-en/</a><br>
<a href="https://scict.nl/nsx-cumulus-part3-en/">https://scict.nl/nsx-cumulus-part3-en/</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[NSX & Cumulus #1 - Setting up NSX]]></title><description><![CDATA[In these series we're going to set up NSX 6.3.2 on vSphere 6.5 in combination with a clos fabric based on Cumulus VX including hardware VTEP integration...]]></description><link>https://scict.nl/nsx-cumulus-part1-en/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7e3</guid><category><![CDATA[VMware]]></category><category><![CDATA[NSX]]></category><category><![CDATA[Cumulus]]></category><category><![CDATA[Cumulus VX]]></category><category><![CDATA[SDN]]></category><category><![CDATA[CLOS Fabic]]></category><category><![CDATA[L3 Fabric]]></category><category><![CDATA[SDDC]]></category><category><![CDATA[Software Defined Datacenter]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Fri, 20 Apr 2018 12:57:00 GMT</pubDate><media:content url="https://scict.nl/content/images/2017/07/NSX-Cumulus.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2017/07/NSX-Cumulus.png" alt="NSX & Cumulus #1 - Setting up NSX"><p>In these series we're going to set up NSX 6.3.2 on vSphere 6.5 in combination with a <a href="https://en.wikipedia.org/wiki/Clos_network">clos</a> fabric based on Cumulus VX switches including hardware VTEP integration. Me and my friend and collegae Wouter van der Vaart will guide you through setting up the different parts needed to get everything up and running including problems we've encountered, but also tips &amp; tricks.</p>
<p>This doesn't include a write-up of both products, but what these products do you can find <a href="https://www.vmware.com/nl/products/nsx.html">here for NSX</a> end <a href="https://cumulusnetworks.com/products/cumulus-vx/">here for Cumulus VX</a>. But they coexist and integrate nicely especially in an automated SDDC (Software-Defined DataCenter).</p>
<p>First thing we're gonna do today is setup NSX and test basic VXLAN functionality over L3.</p>
<h5 id="tosetthislabupingns3weneedafewthings">To set this lab up in GNS3 we need a few things:</h5>
<ul>
<li>Freesco Router (for dns, ntp and internet)</li>
<li>Management switch (gns3 builtin)</li>
<li>VXLAN Router (Cisco 3640) (not really a vxlan router, but creates an L3 hop between the ESXi hosts)</li>
<li>VMware vCenter Server Appliance 6.5.0d</li>
<li>Two VMware ESXi 6.5.0d hosts</li>
<li>NSX Manager 6.3.2</li>
<li>NSX Controller 6.3.2 (3 for HA, but 1 works just fine in the lab)</li>
<li>Two test vm's (we chose alpine linux for this occasion) running on esx1 &amp; esx2</li>
</ul>
<p>We've already installed the NSX Manager, connected it to the vCenter and deployed a single NSX Controller.</p>
<p><img src="https://scict.nl/content/images/2017/07/LAB1.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<h5 id="labipaddressplan">Lab IP Address plan</h5>
<font size="1">
<table style="width:100%" ">
<thead>
<tr>
<th>MGMT Network</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td><i>Default gateway</i></td>
<td>10.10.100.1</td>
<td></td>
<td></td>
</tr>
<tr>
<td><i>DNS</i></td>
<td>10.10.100.1</td>
<td></td>
<td></td>
</tr>
<tr>
<td><i>Domain</i></td>
<td>cumuluslab</td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>router</td>
<td>10.10.100.1/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>vsca</td>
<td>10.10.100.20/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>esx1</td>
<td>10.10.100.21/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>esx2</td>
<td>10.10.100.22/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>nsxcont</td>
<td>10.10.100.23/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>nsxman</td>
<td>10.10.100.24/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>laptop</td>
<td>10.10.100.30/24</td>
<td></td>
<td></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
<thead>
<tr>
<th>VXLAN Network</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td>esx1 vxlan vmk1</td>
<td>10.10.101.1/30</td>
<td>MTU</td>
<td>1500</td>
</tr>
<tr>
<td>esx1 vxlanrouter eth0/1</td>
<td>10.10.101.2/30</td>
<td>MTU</td>
<td>1500</td>
</tr>
<tr>
<td>esx2 vxlan vmk1</td>
<td>10.10.101.9/30</td>
<td>MTU</td>
<td>1500</td>
</tr>
<tr>
<td>esx2 vxlanrouter eth0/2</td>
<td>10.10.101.10/30</td>
<td>MTU</td>
<td>1500</td>
</tr>
</tbody>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>

<thead>
<tr>
<th>VXLAN Client Network</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td>alpine01</td>
<td>10.10.200.11/24</td>
<td>MTU</td>
<td>1400</td>
</tr>
<tr>
<td>alpine02</td>
<td>10.10.200.12/24</td>
<td>MTU</td>
<td>1400</td>
</tr>
</tbody>
</table>
</font>
<h4 id="1installnsxtoesxihosts">1. Install NSX to ESXi hosts</h4>
<p>The first step is to install NSX to the ESXi hosts, just click Install from the Action menu on the Host Preparation tab. This could take a few minutes, depending on your environment.<br>
<img src="https://scict.nl/content/images/2017/07/LAB1_installNSX.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<h4 id="2configurevxlan">2. Configure VXLAN</h4>
<p>The second step is to configure VXLAN and add a single VTEP VMKernel interface to each ESXi host. Click the &quot;Not Configured&quot; link on the Host Preparation tab and a popup will show.</p>
<p>In our case we're leaving the defaults, it already selected the correct Distributed Switch, <em>&quot;VLAN&quot;</em> zero and the Fail Over <em>&quot;VMKNic Teaming Policy&quot;</em>.</p>
<p>The <em>&quot;MTU&quot;</em> is set to 1600, that's because the VXLAN encapsulation overhead, it will add 50 bytes to each packet:<br>
<font size="2"><b><i>Ethernet/MAC (14 byte) + IP (20 byte) + UDP (8 byte) + VXLAN (8 byte) + Original ethernet frame</i></b></font><br>
In our lab environment though we are limited to 1500, therefore we will later on change the vmkernel ports to 1500 and the clients to 1400 to get everything up and running.</p>
<p>For <em>&quot;VMKNic IP Addressing&quot;</em> we're setting it to <em>&quot;Use IP Pool&quot;</em>, because we haven't setup DHCP, but in our lab we're setting the VMKNics manually to get them in separate L2 domains, we'll show you how in the next few steps.<br>
<img src="https://scict.nl/content/images/2017/07/LAB1_confVXLAN-2.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<h4 id="3logicalnetworkpreparation">3. Logical network preparation</h4>
<p>Goto <em>Networking &amp; Security &gt; Installation &gt; Logical Network Preparation</em></p>
<p><strong>A.</strong> VXLAN is now configured on the cluster, check if all the settings are correct and all the check marks are green.<br>
<img src="https://scict.nl/content/images/2017/07/LAB1_vxlan_transport.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<p><strong>B.</strong> Next is to set the Segment ID range of VXLAN Segments, each VXLAN tunnel will have it's own segment ID. Don't create more than 10.000 ID's though, this is because vCenter limits you to 10.000 distributed port groups (recommended maximum). We created a thousand from 5000-5999.<br>
<img src="https://scict.nl/content/images/2017/07/LAB1_segment_id.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<p><strong>C.</strong> Last thing we need to do is configure a <em>Transport Zone</em>, the VXLAN control plane handles the frame forwarding decision (which VTEP to send it to by VTEP discovery and MAC address lookup), there are three modes: <em>multicast</em>, <em>unicast</em> and <em>hybrid</em>, all three modes have their cons &amp; pros. But because <em>multicast</em> and <em>hybrid</em> require special configuration on the physical networking layer (IGMP), we chose <em>unicast</em> in our LAB setup.<br><br>
<font size="2"><br>
For a in-depth explanation of the three modes check the articles <a href="http://www.routereflector.com/2015/02/vxlan-on-vmware-nsx-vtep-proxy-unicastmulticasthybrid-mode/">here</a> and <a href="https://telecomoccasionally.wordpress.com/2015/01/11/nsx-for-vsphere-vxlan-control-plane-modes-explained/">here</a>.</font><br>
<img src="https://scict.nl/content/images/2017/07/LAB1_transport_zones.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<h4 id="4createalogicalswitchandaddthevms">4. Create a logical switch and add the VM's</h4>
<p>Next up is creating a NSX <em>logical switch</em>, each logical switch gets it's own Segment ID and will create a <em>virtual wire</em> dvPortgroup.</p>
<p><strong>A.</strong> Goto <em>Networking &amp; Security &gt; Logical Switches</em> and click <strong>+</strong> to add a new logical switch. We will call our switch <em>&quot;NSX Test Switch 10.10.200.0/24&quot;</em>, add it to our previously created Transport Zone, select <em>unicast</em> and <em>IP Discovery</em> and press <strong>OK</strong>.<br>
<img src="https://scict.nl/content/images/2017/08/LAB1_logical_switches.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<p><strong>B.</strong> Add the two test VM's <em>Alpine01</em> and <em>Alpine02</em> to the newly created <em>&quot;NSX Test Switch 10.10.200.0/24&quot;</em>.<br><br>
Select the logical switch <em>&quot;NSX Test Switch 10.10.200.0/24&quot;</em> and click <strong>Add VM</strong> from the <em>Actions</em> menu.<br>
<img src="https://scict.nl/content/images/2017/08/LAB1_logical_switches-ADDVM_1-1.png" alt="NSX & Cumulus #1 - Setting up NSX"><br>
Select which adapters to add to the logical switch.<br>
<img src="https://scict.nl/content/images/2017/08/LAB1_logical_switches-ADDVM_2.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<h4 id="5ippoolmultiplesubnetsmtufix">5. IP Pool Multiple subnets + MTU fix</h4>
<p>In our LAB setup using VMware Workstation and GNS3 we weren't able to set an higher MTU and because of that limitation we lowered the NSX VTEP interface MTU to 1500 (1600 is the default) and the MTU of our Alpine test VM's down to 1400.</p>
<p>We also wanted to build the LAB with both NSX VTEP's in different broadcast domains with a router in between, which we also needed for our integration with de Cumulus VX switches in the next article. But NSX doesn't allow you to configure this using the GUI, the only options through the NSX GUI are <em>IP Pool</em> and <em>DHCP</em>, the <em>IP Pool</em> option doesn't allow for multiple subnets per cluster and we didn't have a DHCP server setup in our LAB, so we configured it manually.</p>
<p>Check the ESXCLI below for setting both the VTEP IP addresses on the VMKernel interfaces and lowering the MTU.<br>
<font size="3"><br>
<strong>ESX1</strong></font></p>
<pre><code>esxcli network ip interface ipv4 set -i vmk1 -t static -I 10.10.101.1 -N 255.255.255.252
esxcli network ip interface ipv4 get -i vmk1

esxcli network ip route ipv4 remove -g 10.10.101.254 -n default -N vxlan
esxcli network ip route ipv4 add -g 10.10.101.2 -n default -N vxlan
esxcli network ip route ipv4 list -N vxlan

esxcli network ip interface set -i vmk1 -m 1500
esxcli network ip interface list -N vxlan
</code></pre>
<p><strong>ESX2</strong></p>
<pre><code>esxcli network ip interface ipv4 set -i vmk1 -t static -I 10.10.101.9 -N 255.255.255.252
esxcli network ip interface ipv4 get -i vmk1

esxcli network ip route ipv4 remove -g 10.10.101.254 -n default -N vxlan
esxcli network ip route ipv4 add -g 10.10.101.10 -n default -N vxlan
esxcli network ip route ipv4 list -N vxlan

esxcli network ip interface set -i vmk1 -m 1500
esxcli network ip interface list -N vxlan
</code></pre>

<h4 id="6testconnectivitybetweenthebothesxihosts">6. Test: Connectivity between the both ESXi hosts</h4>
<p>Ping test using the VTEP VMKernel ports.<br>
<img src="https://scict.nl/content/images/2017/08/LAB1_vmkping.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<h4 id="7finaltestvmconnectivityoverthevirtualwire">7. Final test: VM connectivity over the virtual wire</h4>
<p>The hard work has paid off, the ping test from test VM <em>Alpine01</em> to VM <em>Alpine02</em> worked as expected!<br>
<img src="https://scict.nl/content/images/2017/08/LAB1_VM-PING.png" alt="NSX & Cumulus #1 - Setting up NSX"></p>
<p>Next up building the Cumulus <a href="https://scict.nl/nsx-cumulus-part2-en/">VX CLOS Fabric + VTEP Integration</a>!</p>
<p><em>Articles in these series</em><br><br>
/nsx-cumulus-part1-en/<br>
/nsx-cumulus-part2-en/<br>
/nsx-cumulus-part3-en/</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Rubrik Firefly: ROBO & Erasure coding]]></title><description><![CDATA[New features!
Rubrik Edge Virtual appliance for ROBO environments, Erasure Coding, MS Azure Blob]]></description><link>https://scict.nl/rubrik-firefly/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7dd</guid><category><![CDATA[Backup]]></category><category><![CDATA[VMware]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Thu, 25 Aug 2016 00:02:56 GMT</pubDate><media:content url="https://scict.nl/content/images/2016/08/rubrik-firefly-features-1.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2016/08/rubrik-firefly-features-1.jpg" alt="Rubrik Firefly: ROBO & Erasure coding"><p>Rubrik's 3rd release Firefly was announced a couple of days ago, but what is it? According to Chris' <a href="http://wahlnetwork.com/2016/08/16/a-first-look-at-rubrik-firefly/">blog</a> on rubrik.com it's a code upgrade for the current briks. Supporting new features like backup for physical MSSQL and linux servers, a virtual appliance offering and erasure coding. Besides the existing S3 and NFS options also Azure Blob Storage was added as an archival destination, Yeah!<br>
<img src="https://scict.nl/content/images/2016/08/rubrik-firefly-features.jpg" alt="Rubrik Firefly: ROBO & Erasure coding"></p>
<h3 id="rubrikedge">Rubrik Edge</h3>
<p>I especially like the Virtual <em>Edge</em> Appliance for use in remote and branch offices. Rubrik doesn't mention this, but I assume this could also be of use for hybrid cloud architectures for backup, replication and restores between and back and forth the local datacenter and public clouds like Amazon and MS Azure? I'm wondering though how the architecure differs from the physical one. Does it consist of a single virtual node in ROBO environments instead of multiple ones? And without the physical backing of the supermicro hardware and the SSD for intake in each node, did they've downsized on options like indexing, dedup/compression or erasure coding? Let's hope I can get my hands on a OVA soon! :)</p>
<h3 id="erasurecoding">Erasure Coding</h3>
<p>Since the current brik's save each block three times you only get a third of available space from your R334, R344, R348 or R528. Global dedup and compression off course do a lot to save space, but erasure coding still was missing, until now! Erasure coding gives you 66% of total space (at least on the 4 node models). And therefore doubles the available space and stretches the 15TiB on the R344 up to 30TiB. But that's not all, Rubrik is also saying the performance will go up for writes and reads and scales as the cluster grows!</p>
<p>I really like Rubrik and the architecture and the vision behind their product, and i'm sure the extra 61M is in good hands and the Firefly release will do great for current customers' briks!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[What has happened during the vacation?]]></title><description><![CDATA[New hacking technique attacks memory hypervisors,
Pernix bought by Nutanix, 
VEEAM v9 update 2,
VMware patch fixes CBT again ESXi600-. 201608001. And more!]]></description><link>https://scict.nl/what-has-happened-during-the-vacation/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7ed</guid><category><![CDATA[VMware]]></category><category><![CDATA[Backup]]></category><category><![CDATA[Server Side Caching]]></category><category><![CDATA[Security]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Wed, 24 Aug 2016 23:16:00 GMT</pubDate><media:content url="https://scict.nl/content/images/2016/08/VEEAMV9U2.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2016/08/VEEAMV9U2.png" alt="What has happened during the vacation?"><p>I always try to keep up with the news and stuff while on vacation (this year the journey went to sri lanka), but i guess not everybody does. So I though why not share the highlights?!?</p>
<ul>
<li><strong><a href="https://www.vu.nl/en/news-agenda/news/2016/jul-sep/new-hacking-technique-imperceptibly-changes-memory-virtual-servers.aspx">New hacking technique imperceptibly changes memory virtual servers</a></strong><br>
<br>A cool and nifty but disturbing Virtual Machine memory page <a href="https://www.vusec.net/projects/flip-feng-shui/">attack</a>:<br>
<em>With this technique an attacker can crack the keys of secured virtual machines or install malware without it being noticed. It's a new deduplication-based attack in which data can not only be viewed and leaked, but also modified using a hardware glitch. By doing so the attacker can order the server to install malicious and unwanted software or allow logins by unauthorized persons.</em><br>
<br>This attack manages to do the hack without the use of a software bug and therefore cannot be patched. It is uncertain but practically unlikely that ECC DRAM memory can reliably be attacked. ECC DRAM is normally used in enterprise environments.<br>Also see my previous <a href="https://scict.nl/vmware-tps-in-shared-vm-environments/">article</a> about recommendations for inter- and intra TPS in VMware environments, a must read considering the risks!</li>
<li><strong><a href="https://www.veeam.com/kb2147">VEEAM v9 update 2</a></strong><br>
<br>This patch comes with over 300 enhancements. I personnally like this improvement the most:<br>
<em>Backported a number of isolated Enterprise Scalability enhancements from 9.5 code branch to improve transaction log backup, tape backup and user interface performance.</em><br>
<br>I encountered an issue where per-VM backup files showed performance issues with tape which, according to veeam support, was a known problem caused by the number of storages to be backed up and should be fixed in the next release only. But let's hope this fixes it before 9.5 (which is also <a href="https://go.veeam.com/v9-5">announced</a>)!</li>
<li><strong><a href="http://www.forbes.com/sites/justinwarren/2016/08/17/nutanix-purchase-price-pernix-data-revealed/">Pernix bought by Nutanix</a></strong><br>
<br>OK... so I suppose the rumours were true. Also backed by <a href="http://www.theregister.co.uk/2016/07/19/nutanix_buying_pernixdata/">Frank Denneman</a>. My subconscious saw this coming; after hearing about the rumours of an AFA, i thought by myself why not stay a software company and improve the FVP &amp; Architect features, platform support and stability. Or maybe even build a VSAN competitor with better pricing and/or more or other options? I imagine... what would this mean for the sales for competitors like Infinio?</li>
<li><strong><a href="https://kb.vmware.com/kb/2145667">ESXi 6.0 patch fixed CBT (again)</a></strong><br>
<br>VMware has released a major patch on the 4th of August ESXi600-201608001 which has buildnumber 4192238. It fixes another CBT issue introduced in Express Patch 6 (only during VM quiescence with VMware Tools VSS though). The only ESXi6 images free from CBT issues and production ready are 6 Update 1b and Express Patch 5 I think (Update 2 has the vmxnet3 psod). Let's hope ESXi600-201608001 will become a stable one!</li>
</ul>
<p>Other news:</p>
<ul>
<li><strong><a href="http://www.zerohedge.com/news/2016-08-17/cisco-fires-5500-market-disappointed-it-wasnt-more-shares-fall">Cisco fires 5500</a></strong></li>
<li><strong><a href="https://cdn.nimblestorage.com/2016/08/12115831/Nimble-Storage-AF1000-v8.pdf">Nimble AF1000, affordable AFA?</a></strong><br>
<br><em><a href="http://info.nimblestorage.com/rs/364-BLA-665/images/PERSBERICHT_Nimble_AF1000_120816_FINAL.pdf">Dutch article</a></em></li>
<li><strong><a href="https://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/">PowerShell is open sourced and available on Linux</a></strong></li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[VMware TPS in shared VM environments]]></title><description><![CDATA[When to use Inter-VM and Intra-VM Transparent Page Sharing?]]></description><link>https://scict.nl/vmware-tps-in-shared-vm-environments/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7de</guid><category><![CDATA[VMware]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Wed, 29 Jun 2016 17:48:00 GMT</pubDate><media:content url="https://scict.nl/content/images/2016/06/SharedMemory.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2016/06/SharedMemory.png" alt="VMware TPS in shared VM environments"><p>As many of you may know VMware changed the default Transpararent Page Sharing (TPS from now on) setting in the latest versions/updates of ESXi. Specifically the behaviour for Inter-VM TPS. But what about Intra-VM TPS?</p>
<h3 id="whatistps">What is TPS?</h3>
<p>TPS is a technique which, when enabled, lets the ESXi host reclaim used memory pages by searching for duplicate small pages (4k) and elimate them. Which results in a potentially higher VM density. It's an asynchronous (so not in-line/realtime) proces running in the VMkernel and deduplicates memory within each NUMA node. There is also a second process which only kicks in when the physical host is under memory pressure due to overcommitment or fragmentation, this second process works by breaking large pages (2MB) up into small pages (4K) to enable page sharing. If the work of TPS is insufficient or disabled, ballooning kicks in followed by compression and eventually swapping to disk.</p>
<h3 id="intervmtpsdisabled">Inter-VM TPS disabled</h3>
<p>So, as mentioned before, primarily based on research VMware disabled Inter-VM TPS as of the latest updates of ESXi, and is disabled in ESXi 6.0 altogether. Check this <a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=2080735">VMware KB</a> to see in which versions the default and additional TPS management features changed for your environment.</p>
<p>Why did VMware changed this?<br>
Well <a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=2080735">VMware says</a></p>
<p>The Risk:<br>
<font size="2"></font></p>
<blockquote>
<p><em>Published academic papers have demonstrated that by forcing a flush and reload of cache memory, it is possible to measure memory timings to try and determine an AES encryption key in use on another virtual machine running on the same physical processor of the host server if Transparent Page Sharing is enabled between the two virtual machines. This technique works only in a highly controlled system configured in a non-standard way that VMware believes would not be recreated in a production environment.</em><br>
</p>
</blockquote>
<p>Mitigation:<br>
<font size="2"></font></p>
<blockquote>
<p><em>Even though VMware believes information being disclosed in real world conditions is unrealistic, out of an abundance of caution upcoming ESXi Update releases will no longer enable TPS between Virtual Machines by default (TPS will still be utilized within individual VMs).</em><br>
</p>
</blockquote>
<p>Changed from default or not, Inter-VM TPS could still be very useful in memory overcommited scenario's. Especially in on-premise, single organization server and VDI environments, how useful depends...</p>
<p><b><em>Howto enable Inter-VM TPS?</em></b><br>
By setting the host value Mem.ShareForceSalting to &quot;0&quot;. Or for VM groups (like per cloud customer) by setting the host value Mem.ShareForceSalting to &quot;1&quot; and the Per-VM setting Sched.Mem.Pshare.Salt to the same salt for each customer.</p>
<p>The table below probably shows best howto achieve the required behavior.</p>
<p><img src="https://scict.nl/content/images/2016/06/Inter-VM_TPS_Settings.png" alt="VMware TPS in shared VM environments"><br><br>
<font size="2"><a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=2097593">source</a></font></p>
<h3 id="whataboutintravmtps">What about Intra-VM TPS?</h3>
<p>So while Inter-VM TPS is disabled by default, Intra-VM TPS is still enabled. Intra-VM means from within the VM. So a running VM can share pages allocated within the same NUMA node with itself. Still keeping some of the benefits TPS gives you when running memory overcommitment, just not ESXi host wide (actually NUMA node wide) anymore.</p>
<p>When looking at cloud/shared hosting environments, where VM's are shared between customers, like for example in:</p>
<ul>
<li>Shared Docker/container VMs</li>
<li>Shared Apache/nginx/webserver VMs</li>
<li>Shared Database server VMs</li>
</ul>
<p>Should you disable Intra-VM TPS in these scenario's? VMware states the risks are low. But though it maybe harder, perhaps even impossible, to exploit TPS in an Intra-VM scenario. Shouldn't you disable TPS? Just to be safe, so a different customer or hacker (a hacker could rent a Web Virtual Host or Docker container) isn't able to possibly exploit TPS?</p>
<p>I guess it depends on the environment and type of customer. And if you run on-premise there probably are few companies who have the security guidelines in place which demand disabling TPS. But if you're a cloud container operator or webhoster, it's my opinion you should at least inform the customer of these risks and/or give them the option to run without TPS enabled (without the memory sharing benefits) or just disable TPS altogether, cause it could also be difficult to explain the risks to a (potential) client.</p>
<p><b><em>Howto disable Intra-VM tps?</em></b><br>
Well, looking at the table above showing the configuration options for TPS, there doesn't appear to be an option to disable Intra-VM TPS, which means it's always on! So that's tricky, cause there may not be an official way to do this. Is there? NO? Maybe there should be? :) But it is possible to disable TPS altogether, though the steps are a bit tedious!</p>
<p><img src="https://scict.nl/content/images/2016/06/DisableTPS.png" alt="VMware TPS in shared VM environments"><br><br>
<font size="2"><a href="http://blogs.vmware.com/apps/2014/10/disabling-tps-vsphere-impact-critical-applications.html">source</a></font></p>
<h3 id="soimhowhentonotusetps">So, IMHO, when to (not) use TPS?</h3>
<p>For most workloads and organizations I think the table below shows when to use TPS, call it a best practice. But maybe some organizations do not want to take any risk at all, like banks, federal governement and healthcare. They can just disable TPS altogether (and buy sufficient amounts of RAM).</p>
<table style="width:100%" ">
<thead>
<tr>
<th>Environment</th>
<th>Inter-VM TPS</th>
<th>Intra-VM TPS</th>
</tr>
</thead>
<tbody>
<tr>
<td>On-Premise Server/VDI</td>
<td>YES</td>
<td>YES</td>
</tr>
<tr>
<td>On-Premise Container/Web</td>
<td>YES</td>
<td>YES</td>
</tr>
<tr>
<td>(Public) Cloud/Shared Server/VDI</td>
<td>NO<br><font size="1">or only for VM's from a single customer<br> (VMs with same salt)</font></td>
<td>YES</td>
</tr>
<tr>
<td>(Public) Cloud/Shared Container/Web</td>
<td>NO<br><font size="1">or only if entire VM is used for the same customer<br>and only for VM's from a single customer<br> (VMs with same salt)</font></td>
<td>NO<br><font size="1">or only if entire VM is used for the same customer</font></td>
</tr>
</tbody>
</table>
<p>More info on TPS and the changes VMware made:</p>
<ol>
<li><a href="http://blogs.vmware.com/apps/2014/10/disabling-tps-vsphere-impact-critical-applications.html">http://blogs.vmware.com/apps/2014/10/disabling-tps-vsphere-impact-critical-applications.html</a></li>
<li><a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=2080735">https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=2080735</a></li>
<li><a href="http://frankdenneman.nl/2015/02/02/new-tps-management-capabilities/">http://frankdenneman.nl/2015/02/02/new-tps-management-capabilities/</a></li>
<li><a href="http://www.yellow-bricks.com/2014/10/27/tps-disabled-default/">http://www.yellow-bricks.com/2014/10/27/tps-disabled-default/</a></li>
<li><a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1021095">https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1021095</a></li>
<li><a href="http://blogs.vmware.com/virtualreality/2011/02/hypervisor-memory-management-done-right.html">http://blogs.vmware.com/virtualreality/2011/02/hypervisor-memory-management-done-right.html</a></li>
<li><a href="https://www.vmware.com/files/pdf/mem_mgmt_perf_vsphere5.pdf">https://www.vmware.com/files/pdf/mem_mgmt_perf_vsphere5.pdf</a> pages 7-9</li>
</ol>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[VSAN Observer]]></title><description><![CDATA[Howto start & use VSAN Observer using ssh and rvc on vCenter Server Appliance]]></description><link>https://scict.nl/vsan-observer/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7da</guid><category><![CDATA[VSAN]]></category><category><![CDATA[VCSA]]></category><category><![CDATA[VMware]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Mon, 27 Jun 2016 13:40:37 GMT</pubDate><media:content url="https://scict.nl/content/images/2016/06/VSAN-Observer.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2016/06/VSAN-Observer.png" alt="VSAN Observer"><p>While prepping for my VCP6-DCV delta exam, I stumbled upon something called VSAN Observer and though i'm running VSAN for quite awhile in a lab environment and played around with it quite a lot, but I haven't heard about or seen this VSAN Observer. What is it? Time to check it out!</p>
<h3 id="rubyvsphereconsole">Ruby vSphere Console</h3>
<p>So first of all you need the Ruby vSphere Console (rvc from now on) to start the webserver for VSAN Observer, which is available in both the Windows version of vCenter Server and the vCenter Server Appliance (VCSA). For those of you who are unfamiliar with it, there is a nice 3 part series on VMware Blogs <a href="https://blogs.vmware.com/vsphere/2014/07/managing-VSAN-ruby-vsphere-console.html">here</a>[^1], <a href="https://blogs.vmware.com/vsphere/2014/08/managing-virtual-san-rvc-part-2-navigating-vsphere-virtual-san-infrastructure-rvc.html">here</a>[^2] and <a href="https://blogs.vmware.com/vsphere/2014/08/blog3-managing-virtual-san-rvc-part-3-rvc-usage-command-syntax.html">here</a>[^3].</p>
<p>I'm using the VCSA in the lab, and the first <a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=2064240&amp;src=vmw_so_vex_mgray_1080">VMware KB</a> I found about using VSAN Observer probably relates to older versions of vCenter, because i couldn't get it running based on this KB. So i came accross some other blogs, but didn't get any further than the first rvc step. After some googling and trying i noticed that this <em>&quot;rvc administrator@vsphere.local@localhost&quot;</em> worked! and others didn't, it probably changed in version 6?</p>
<h3 id="thesteps">The Steps</h3>
<p>So let's layout the steps needed to get VSAN Observer running :)</p>
<font size="3">
1. Start an SSH Session to you VCSA
```
ssh root@<vcsa name or ip>
```<br>
2. Run rvc and login to it with an existing vCenter SSO user, this is what differs from the VMware KB!
```
rvc administrator@vsphere.local@localhost
```<br>
3. Now change directory to you vCenter Datacenter object
```
cd localhost/<datacenter>
```<br>
4. Now it's time to start VSAN Observer. You need to add a parameter with your VSAN enabled cluster object within the computers folder, like so:
```
vsan.observer --run-webserver --force computers/<vsan cluster>
```<br>
5. Time to check it out in your browser!
```
https://<vcsa name or ip>:8010/
```
** You can stop vsan.observer by pressing CTRL+C in the ruby vsphere console.*
</vcsa></vsan></datacenter></vcsa></font>
<p>Also check out this short video, showing the steps above!</p>
<iframe src="https://player.vimeo.com/video/172377128" width="640" height="480" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe><font size="1"><br>*The video shows running rvc from the BASH Shell, but there is no need for that! Sorry :)*</font>
<h3 id="whatisit">What is it?</h3>
<p>So what is it? VSAN Observer gives you in-depth VSAN en VM-level metrics, and while the vSphere Web Client already gives you a lote of information... If you feel the need to drill down on performance and verify VSAN or VM behavior for example, VSAN Observer it the place to go!</p>
<p>Let's check out the gui and some useful tabs within VSAN Observer!</p>
<h4 id="about">About</h4>
<p><img src="https://scict.nl/content/images/2016/06/VSAN_Observer_About.png" alt="VSAN Observer"></p>
<h4 id="vsanclientoverviewofperhoststats">VSAN Client (overview of per host stats)</h4>
<p><img src="https://scict.nl/content/images/2016/06/VSAN_Observer_HostOverview-1.png" alt="VSAN Observer"></p>
<h4 id="vsandisksdeepdive">VSAN Disks (deep-dive)</h4>
<p><img src="https://scict.nl/content/images/2016/06/VSAN_Observer_DiskDeepdive-1.png" alt="VSAN Observer"></p>
<h4 id="vsanvmsdrilldownintopervmvirtualdisksstats">VSAN VMs (drill down into per VM Virtual Disks stats)</h4>
<p><img src="https://scict.nl/content/images/2016/06/VSAN_Observer_VM.png" alt="VSAN Observer"></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Pernixdata FVP 3.5 & Infinio Accelerator 3.0 released]]></title><description><![CDATA[(the) Two developers of Server Side Caching software for VMware released new versions with new features!]]></description><link>https://scict.nl/pernixdata-fvp-3-5-infinio-accelerator-3-0-released/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7e5</guid><category><![CDATA[VMware]]></category><category><![CDATA[Server Side Caching]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Tue, 14 Jun 2016 18:18:24 GMT</pubDate><media:content url="https://scict.nl/content/images/2016/06/PernixData-Management-Service-Appliance-Configuration.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2016/06/PernixData-Management-Service-Appliance-Configuration.png" alt="Pernixdata FVP 3.5 & Infinio Accelerator 3.0 released"><p>Both Pernixdata and Infinio released a new version of their Server Side Caching products yesterday!</p>
<p>Having used previous versions of them both in production environments and compared them very recently <a href="https://scict.nl/why-server-side-caching-saved-my-ass/">here</a>, I'm thrilled to see the evolution here! <em>Both still only support VMware, so no change there.</em></p>
<h2 id="pernixdatafvp35">Pernixdata FVP 3.5</h2>
<p>What are the new features <strong>FVP 3.5</strong> brings to the table?</p>
<ul>
<li>Pernixdata 3.5 Management Appliance</li>
<li>Support for RDM LUNs (with some limitations)</li>
<li>Some nifty GUI enhancements, like a search box and performance views.</li>
</ul>
<p><em>Also check out [this](<a href="http://www.pernixdata.com/resource/pernixdata-update-fvp-35-and-architect-11">nice video</a> video, a nice short video/discussion explaining all new features!</em></p>
<h4 id="pernixdataappliance">Pernixdata Appliance</h4>
<p>The appliance is probably the biggest change in this release, it is used for both FVP and Architect and comes in 4 <em>&quot;flavours&quot;</em> or <em>&quot;sizes&quot;</em> if you will. These are almost the same as the vCenter appliance sizes. The appliance comes in OVA form-factor, is linux-based (CentOS 7) and can only be used in fresh installations (no upgrade from windows management server possible). But the Windows Management Server is also still available and the only viable upgrade path from 3.0 up to 3.5.</p>
<table style="width:100%" ">
<thead>
<tr>
<th>Appliance Configuration</th>
<th>Environment Size</th>
<th>vCPU</th>
<th>RAM</th>
<th>DISK Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>Tiny</td>
<td>1-5 hosts or 1-50 VMs</td>
<td>2 vCPU</td>
<td>4 GiB</td>
<td>100 GiB</td>
</tr>
<tr>
<td>Small</td>
<td>5-100 hosts or 50-1000 VMs</td>
<td>4 vCPU</td>
<td>8 GiB</td>
<td>100 GiB</td>
</tr>
<tr>
<td>Medium</td>
<td>100-400 hosts or 1000-4000 VMs</td>
<td>8 vCPU</td>
<td>12 GiB</td>
<td>100 GiB</td>
</tr>
<tr>
<td>Large</td>
<td>more than 400 hosts or more than 4000 VMs</td>
<td>16 vCPU</td>
<td>16 GiB</td>
<td>100 GiB</td>
</tr>
</tbody>
</table>
<p>The appliance is really easy to install, just deploy the OVF, put in some network configuration and power-up the VM. After which you have to setup the vCenter with it's credentials on the appliance configuration page which can be found at https://&lt;applianceFQDN/IP&gt;/config/. When that's finished the Pernixdata Portal will be up and running at https://&lt;applianceFQDN/IP&gt;:60002/, just like in 3.0. I created a short video showing the appliance first setup, check it out!</p>
<iframe src="https://player.vimeo.com/video/170640842" width="640" height="480" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe><p></p>
<h2 id="infinioaccelerator30">Infinio Accelerator 3.0</h2>
<p>Now on to Infinio, the biggest news I think is the use of VAIO in their 3.0 product. Very cool!</p>
<p>What are the changes according to the <a href="http://blog.infinio.com/announcing-general-availability-of-infinio-accelerator-3.0">Infinio Blog</a>?:</p>
<ul>
<li>Support for block devices (SSDs and Flash) in the caching layer in a tiered fashion combined with RAM; a <em>“memory-first”</em> architecture.</li>
<li>VM-level acceleration. This is something we did miss in the past. Some workloads just don't cache well and/or polute the cache by consuming a lot due to their high change rate and/or random read rate..</li>
<li>And Infinio we'll be certified as VMware Ready!</li>
<li>Support for many datastores types; NFS, VMFS, VSAN, and VVOLs are supported!</li>
<li>VAIO Support, last but not least! <em>&quot;vSphere APIs for IO Filtering&quot;</em> integrates with VMware Storage Policy-Based Management and has the potential to lower in-kernel/software latency. Infinio states they can deliver 1,000,000 IOPS and 20GB/sec throughput per host, and response times under 100 microseconds.</li>
</ul>
<p><em>Also check out the <a href="http://www.infinio.com/resources/infinio-accelerator-product-overview-white-paper">white paper</a>!</em></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Why Server Side Caching saved my ass!]]></title><description><![CDATA[Comparison and experience with SSC solutions after 2 years of testing and usage. Pernixdata FVP, Freedom, Infinio Accelerator, Autocache, Flash Read Cache]]></description><link>https://scict.nl/why-server-side-caching-saved-my-ass/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7e6</guid><category><![CDATA[VMware]]></category><category><![CDATA[Server Side Caching]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Sat, 21 May 2016 12:00:00 GMT</pubDate><media:content url="https://scict.nl/content/images/2016/05/pernix.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2016/05/pernix.png" alt="Why Server Side Caching saved my ass!"><p>Maybe the hype has passed. But as a user of SSC solutions for the last 2 years a quick comparising and experience sharing is in place I think. The trigger was a quick conversation about this topic i had this week with someone from a company we're doing a PoC with right now <em>(hint: check an <a href="https://scict.nl/nlvmug-inspiration-1-rubrik/">earlier post</a> :)</em><br></p>
<h4 id="whatisserversidecaching">What is server side caching?</h4>
<p>I guess most of you will know, but a quick explanation doesn't hurt anybody (or just skip it :)).</p>
<p><img src="https://scict.nl/content/images/2016/05/pernix_architecture2.png" alt="Why Server Side Caching saved my ass!"></p>
<p>Server side caching or short SSC (at work we called it <em>&quot;SuperSnelMaakSoftware&quot;</em>) in a virtualized environment caches I/O requests requested by a VM from the storage array in a local cache within the hypervisor or computer layer usually in RAM or flash. And when that same data is accessed for the second time the I/O is dealt with by the caching layer and the request doesn't have to go all the way down the array.</p>
<p>In generally only for reads, but some solutions also support write caching where the write is being ack'ed at the cache layer in the host and is later destaged to the storage array. A solution with only read caching could have positive effect on writes though, because it gives the array and the spindles more headroom to do other stuff like storing data.</p>
<p>Server side caching works because the most recently used data or hot data is close to the VM. Less hops and no san/ethernet bottlenecks. Which results in lower latency. And the media types used for acceleration (ram and any type of flash (ssd, nvme, flashondimm) all have extremely low latency nanoseconds for RAM and microseconds for flash coupled with extreme high iops; 100k+ per esxi host is no exeption. Also the I/O blender effect gets almost nullified by the speed of flash, it's still there... but flash is just way better in random IOPS and has more available than spinning disk.</p>
<p><strong>A. What happens on a write with only write through is enabled?</strong><br><br>
A write with a write-through caching solution remains the same besides the fact that it's being cached for a future read.<br>
A write is cached and simultaniously written to the array. The acknowledgement has to return from the array before the VM receives the ack and can continue.</p>
<p><strong>B. What happens on a write with write-back enabled?</strong><br><br>
The difference with write-through is that the write to the array is asynchronously and the VM receives the ack when the write hits the cache.<br>
Potentially with some form of fault tolerance; the write that's being cached is also written to 1 or 2 other cache hosts (a distributed cache) synchronously. And only ack'ed back to the client when written in the cache on these hosts.</p>
<p><strong>C. what happens on a cache-hit?</strong><br><br>
When data is in the cache, there is no need to fetch it from the array and the VM get's the data quickly. Data could end up two ways in cache:</p>
<ol>
<li>by a write (check A)</li>
<li>by a previous read</li>
</ol>
<p><strong>D. What happens on a cache-miss?</strong><br><br>
When data is accessed for the first time it has to come from the array. Reason's for this could be that:</p>
<ol>
<li>The acceleration by the SSC software was turned on after the data had already been written to disk we call this a first read.</li>
<li>Data hasn't been used in a long while and has been evicted from the cache</li>
</ol>
<h4 id="2013">2013</h4>
<p>Back in 2013 we struggled a lot with application performance, clearly the Netapp we bought in 2009 couldn't handle the load of the ongrowing virtual infrastructure anymore and it was getting worse everyday, all optimization efforts like block alignment and ramdisks in VM's just weren't enough anymore. The Netapp just couldn't deliver anymore and latency was high (full NVRAM and 1gig networking used for NFS). The environment grew, started with a few douzen VM's in 2009, now easily going over 200VM's. But we had enough storage capacity and therefore didn't really feel the need to invest earlier on in expansion or upgrading the filer just to get more performance, and also wasn't on the budget.</p>
<h4 id="2014">2014</h4>
<p>We started looking into various options, we tried out various products back in 2014 like VMware Flash Read Cache (vFRC), Infinio Accelerator, Proximal Data AutoCache (now part of samsung) and PernixData FVP.</p>
<p>We quickly wrote off VMware's own flash read cache, the management overhead and the insights in every VM's data usage needed needed to configure this effectively didn't fit our environment. vFRC is configured on a per VMDK base and the optimal block size for the VM's VMDK needs to be set.</p>
<p>We contacted pernix, infinio and proximal in March 2014. We got the bits and started testing from april to june and finally went with Infinio for a year! Infinio had an easy to deploy solution (matter of minutes without any downtime) an supported NFS, which we needed for our Netapp files. Back then Pernix didn't have support for NFS datastores.</p>
<p>Finally overall performance was at an exceptable rate, SSC fixed the problem we we're then having and &quot;saved&quot; our asses! :)</p>
<h4 id="2015">2015</h4>
<p>We felt the need to drive a bit more permanent solution into our datacenter. I liked the way Pernix was going (NFS support, Fault domains, etc). We saw good read io offloading with infinio, but Infinio in our situation added a bit of latency for writes and unaccelerated reads. Probably due to the extra hop of the infinio accelerator VM; Pernix doing write acceleration and using an in-kernel module should eliminate that problem completely! We also got ourselves a Netapp CDoT Metrocluster running NFS so fault domains with Pernix would be ideal!<br>
<img src="https://scict.nl/content/images/2016/03/pernix-fd.png" alt="Why Server Side Caching saved my ass!"></p>
<h4 id="2016">2016</h4>
<p>With our stretched HA vSphere Metro Storage Cluster with NetApp CDoT running NFS, PernixData FVP doing read/write acceleration using the sites as fault domains and corresponding vSphere config with regard to HA/DRS and <a href="https://scict.nl/vmsc-site-affinity/">vMSC site affinity</a>. Now everything is going strong in our datacenter. End-users are getting the application performance they deserve, and we can much easier buy capacity when we need capacity and performance when we need performance.</p>
<h4 id="generalusecasesandexperience">General use cases, and experience</h4>
<p>It sounds cool, but it's not for everybody. It really depends on your needs and on your architecture. If your applications don't need the faster response or higher throughput or if you already have flash in your array you probably won't see big benefits (or any at all), though accelerating with RAM within FVP on a hybrid or AFA could drive the performance up, especially for bigger block sizes. It all depends! And some newer vSphere 6 features are often not supported, like VVOLs and NFS4.1 (session trunking &amp; kerberos). <em>Also check <a href="http://wahlnetwork.com/2015/02/02/nfs-v4-1/">pNFS is not Session Trunking</a></em><br></p>
<p>Adding VSAN support for SSC solutions doesn't make any sense I think. Being a hyperconverged solution, data already is close to vm. writes already go to flash and reads depends; them being hot or cold, and also if your using a normal hybrid setup for VSAN or all-flash. The speed of ram could potentially fasten up VSAN. With an option for a big(ger) read cache to start with and writes going to ram (especially future non-volatile solutions like flashondimm, 3d crosspoint) as second.</p>
<h4 id="possibleusecases">Possible use cases?</h4>
<p>Off course it depends but probably works best for sas/sata users and for VDI on normal datastores, without things like Citrix PVS and there often is smart integration for things like linked clones. Or off-course when struggling with slower/older storage array performance. Especially when higher latencies are seen. It can extend the lifetime of your existing array probably by one or two years.</p>
<p>Also write acceleration isn't always needed. And complexes the architecture. Also for consistent backup in case of storage level integration for example. And when used in a fault tolerance mode it adds networklatency for the network writes. Which could or could not be higher than your existing array (nvram over 10g ethernet also acks quickly)</p>
<p>Today AutoCache is part of samsung, haven't heard of them since. Infinio news is also lacking. Pernix is still going strong, not only with FVP but also with their last year announced Architect!</p>
<h4 id="quickfeaturecomparison">Quick feature comparison:</h4>
<table style="width:100%" ">
<thead>
<tr>
<th></th>
<th>VMware vFRC [^n]</th>
<th>Infinio</th>
<th>Samsung Autocache</th>
<th>Pernixdata FVP</th>
<th>Pernixdata FVP Freedom [^n]</th>
</tr>
</thead>
<tbody>
<tr>
<td>Flash</td>
<td>YES</td>
<td>NO</td>
<td>YES</td>
<td>YES</td>
<td>NO</td>
</tr>
<tr>
<td>RAM</td>
<td>NO</td>
<td>YES</td>
<td>NO</td>
<td>YES</td>
<td>YES (total limit 128GiB)</td>
</tr>
<tr>
<td>Write-through</td>
<td>YES</td>
<td>YES</td>
<td>YES</td>
<td>YES</td>
<td>YES</td>
</tr>
<tr>
<td>Write-back</td>
<td>NO</td>
<td>NO</td>
<td>NO</td>
<td>YES</td>
<td>NO</td>
</tr>
<tr>
<td>vSphere support</td>
<td>YES</td>
<td>YES</td>
<td>YES</td>
<td>YES</td>
<td>YES</td>
</tr>
<tr>
<td>Hyper-V support</td>
<td>NO</td>
<td>NO</td>
<td>YES</td>
<td>NO</td>
<td>NO</td>
</tr>
<tr>
<td>Integration type</td>
<td>ESXi kernel</td>
<td>VM on each host</td>
<td>Kernel module</td>
<td>Kernel module</td>
<td>Kernel module</td>
</tr>
</tbody>
</table>
<p>Contact me if you have any questions or have an interest in detailed insights in our test results  for example for some of these solutions!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[MyPanel, an ugly mini-control panel for SBC & VDI environments]]></title><description><![CDATA[MyPanel centralized control setting used in SBC and VDI environments. Citrix XenApp, XenDesktop, Terminal Server, Remote Desktop, VMware Horizon View]]></description><link>https://scict.nl/mypanel-an-ugly-mini-control-panel-for-sbc-vdi-environments/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7eb</guid><category><![CDATA[Projects & Scripting]]></category><category><![CDATA[VDI/SBC]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Thu, 19 May 2016 11:21:54 GMT</pubDate><media:content url="https://scict.nl/content/images/2016/05/MyPanel_Beeldscherm-2.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2016/05/MyPanel_Beeldscherm-2.png" alt="MyPanel, an ugly mini-control panel for SBC & VDI environments"><p>A bit of a sidestep... But i felt the urge to share something which never gets the attention I think it deserves.</p>
<h2 id="mypanel">MyPanel</h2>
<p>This is a mini-control panel for settings I found were missing in Windows and Citrix for use in a SBC (XenApp/TS) or VDI (View/XenDesktop) environment, but users have to deal with every day, especially in flex space scenario's. And is also useful when using different type of managed clients like a mix a multivendor zero/thin clients and fat clients. We call it <em>MyPanel</em>!</p>
<p>MyPanel is simple, is has settings for screen resolution, mouse, browser of choice and switching between different environments (like prod &amp; test). Settings are set a single time on the first working day of an end-user. An at logon settings are automatically deployed to all different tipe of clients. It uses a simple 2 table MSSQL database for storing the user settings. Backend client integration consists of several batch &amp; powershell scripts and are different for each client. The settings within the SBC or VDI session are configuratied at logon by MyPanel itself (-hidden parameter).</p>
<h4 id="displaytab">Display tab</h4>
<p><em>Sorry for the screenshots, they are in Dutch, but translating them shouldn't be that hard.</em> <br><br>
The first tab handles the screen resolution. It supports setting a specific resolution, native/ddc is also an option. And it has twin display support.</p>
<p>In our setup we set the resolution on a per user/per device  base, but this is a choice.<br>
You clould also do per use only or per device only.</p>
<p><img src="https://scict.nl/content/images/2016/05/MyPanel_Beeldscherm.png" alt="MyPanel, an ugly mini-control panel for SBC & VDI environments"></p>
<h4 id="mousetabs">Mouse tabs</h4>
<p>The mouse tabs let's you set the three most often used settings for your mouse. right or leftie, doubleclick speed and pointer speed. Pretty straightforward!<br>
<img src="https://scict.nl/content/images/2016/05/MyPanel_Muis.png" alt="MyPanel, an ugly mini-control panel for SBC & VDI environments"><br>
<img src="https://scict.nl/content/images/2016/05/MyPanel_Muis2.png" alt="MyPanel, an ugly mini-control panel for SBC & VDI environments"></p>
<h4 id="browsertab">Browser tab</h4>
<p>I think the browser tab is cool, this is something we added just last year to MyPanel.<br>
And obviously it let's the user choose it's preferred browser.</p>
<p>We then use a wrapper called MyBrowser, and it checks the user's preference in the MSSQL database and starts the browser.<br>
MyBrowser.exe becomes the default browser in a user's session. and when used with a parameter <em>Mybrowser.exe &quot;url&quot;</em> it opens the given url.<br>
<em>We are used to set links to websites internal and external with RES ONE Workspace, exceptions can be made by just using IE, FF or Chrome in the configured shortcut in RES instead of MyBrowser.</em><br><br>
<img src="https://scict.nl/content/images/2016/05/MyPanel_Browser.png" alt="MyPanel, an ugly mini-control panel for SBC & VDI environments"></p>
<h4 id="environmenttab">Environment tab</h4>
<p>This tab is used for lettings the user choose a specific default environment, like prod or dev&amp;test.<br>
It gives the user the option to choose a specific desktop, but also makes automatic logon to full desktops on Citrix, TS or View possible.<br>
Which is a way cleaner user experience I think than storefront web gives for example. Just enter credentials, click OK and the desktop starts!<br>
<img src="https://scict.nl/content/images/2016/05/MyPanel_Test.png" alt="MyPanel, an ugly mini-control panel for SBC & VDI environments"></p>
<p>This is something I created back in 2007, there have been some revisions since, but the idea remained the same. And due to the fact it was built back in 2007 with visual studio 2005 it’s also not that pretty, I’m sorry :)</p>
<p>If you're interested in the code or detailed explained just give me a ring! I'd like to share! I want happy end-user all over the world! :)</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[VEEAM v9 Tape Support - ready for enterprise?]]></title><description><![CDATA[VEEAM Tape Support, Global Media Pool and Parallel Processing in version 9 update1 (v9.0.0.1491))]]></description><link>https://scict.nl/veeam-v9-tape-support/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7e8</guid><category><![CDATA[Projects & Scripting]]></category><category><![CDATA[VMware]]></category><category><![CDATA[Backup]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Tue, 10 May 2016 18:21:10 GMT</pubDate><media:content url="https://scict.nl/content/images/2016/05/VeeamTapeV9ParallelProcessing.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://scict.nl/content/images/2016/05/VeeamTapeV9ParallelProcessing.png" alt="VEEAM v9 Tape Support - ready for enterprise?"><p>Veeam added tape support in version 7, we immediately started testing it, but never found the performance and stability to completely trust on the tape support for all our backups. We just weren't sure the daily tape copies were put to tape before the end of the day and in some cases weren't sure they'd be put to tape at all! So we also used third-party solutions to get the back-up files safeley on tape. We eleminated this somewhat after v8 which did improve a lot, but still...</p>
<p>After struggling with tape support in Veeam since version 7, tests with version 9 update 1 (1491) finally showed promosing results! And after using tape in v9 for about a week now.... waking up, going to work en checking the veeam tape results from last night isn't a controlling factor of cortisol-stress level anymore!<br>
All jobs (a copy of incrementals) succeeded easiliy within our timeframe with good performance!<br>
<img src="https://scict.nl/content/images/2016/05/VeeamTapeV9Success.png" alt="VEEAM v9 Tape Support - ready for enterprise?"><br>
<img src="https://scict.nl/content/images/2016/05/VeeamTapeV9Rate.png" alt="VEEAM v9 Tape Support - ready for enterprise?"></p>
<h1 id="thechangesilikemost">The changes I like most</h1>
<h4 id="globalmediapools">Global Media Pools</h4>
<p>Global Media Pools make it possible to share tapes in pools accross several libraries and tape proxies, this adds a separate layer of configuration for the pool and its tapes as they are now decoupled from the library.<br>
<img src="https://scict.nl/content/images/2016/05/VeeamTapeV9_GlobalMediaPool.png" alt="VEEAM v9 Tape Support - ready for enterprise?"><br>
You can see we currently do not have multiple libraries, but Veeam does have a preview <a href="https://www.veeam.com/blog/v9-robo-and-tape-backup-enterprise-enhancements.html">here</a>.</p>
<h4 id="parallelprocessing">Parallel Processing</h4>
<p>Together with Global Media Pools parallel processing, especially when using the per-VM backup file chains, gives an amazing performance boost and adds flexibility and ease for your tape and backup-to-tape job management.<br>
<img src="https://scict.nl/content/images/2016/05/VeeamTapeV9_parallelprocessing_pool.png" alt="VEEAM v9 Tape Support - ready for enterprise?"></p>
<h1 id="stillsomethingstowishfor">Still some things to wish for</h1>
<p>Veeam also adds GFS (Grandfather-Father-Son) retetion for tape jobs. And though GFS sounds cool, it's a seperate job type/media pool type which does not save the incrementals, but always creates (synthetic/virtual) fulls with a GFS retention scheme (choices are weekly, monthly, quarterly and yearly). So the incrementals aren't included!</p>
<p>A single retention scheme for hourly/daily incrementals, weekly fulls, monthly fulls and yearly fulls is still not possible. But sort of doable when combining the normal media pool with GFS and seperate tape jobs for each.</p>
<p>But when doing daily incrementals and weekly fulls with the normal mode job and the monlthies and yearlies with the GFS... BUT in the weekend the monthlies and yearlies are created. Veeam also creates the full for the normal job, which seems a bit redundant... (if that even exist in backup space :)). Maybe it's possible, but i haven't found a wat to do so. anyone from veeam reading this? :)</p>
<p>Also GFS doesn't support paralell processing, check <a href="http://vm-up.ch/2016/04/06/parallel-processing-and-gfs-mediapool/">here</a>.</p>
<h1 id="oursolutiontothis">Our solution to this?</h1>
<p>To get the GFS like retention we want, including the incrementals, we manually protect (automated through powershell) the monthlies en yearlies and add  &quot;YYYY-MM&quot; to the description field of each tape and keep the protected tapes off our daily printed tapelist, you just have to make sure the tapes contain (synthetic/virtual) fulls. With this solution it's possible to keep the tapes in the same media pool, have no redundant tape copies of the same set and unprotect the tapes based on the description field after the retention period.</p>
<h3 id="ourretentionschemeandasimplepowershellusedforourowngfssolution">Our retention scheme and a simple powershell used for our own GFS solution:</h3>
<table style="width:100%" ">
<thead>
<tr>
<th>GFS / <br> Name</th>
<th>Type Disk</th>
<th>Type Tape</th>
<th>Run</th>
<th>Retention <br> Disk <br> (1st)</th>
<th>Retention <br> Disk Clone <br> (2nd)</th>
<th>Retention <br> Tape Clone <br> (3rd)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Daily</td>
<td>Forever Forward Incremental</td>
<td>Incremental</td>
<td>Monday - Thursday</td>
<td>4 weeks</td>
<td>4 weeks</td>
<td>4 weeks</td>
</tr>
<tr>
<td>Weekly</td>
<td>Forever Forward Incremental</td>
<td>Virtual Full</td>
<td>Friday (2nd to last of month)</td>
<td>4 weeks</td>
<td>4 weeks</td>
<td>4 weeks</td>
</tr>
<tr>
<td>Monthly</td>
<td>Forever Forward Incremental</td>
<td>Virtual Full</td>
<td>Friday (1st of month 02-12)</td>
<td>4 weeks</td>
<td>4 weeks</td>
<td>12 months</td>
</tr>
<tr>
<td>yearly</td>
<td>Forever Forward Incremental</td>
<td>Virtual Full</td>
<td>Friday (1st of month 01)</td>
<td>4 weeks</td>
<td>4 weeks</td>
<td>5 years</td>
</tr>
</tbody>
</table>
<p><a href="https://github.com/janjaaps/powershell/blob/master/VEEAM/VEEAM_Tape_Protect-Retire_GFS.ps1">Github - VEEAM Tape Protect-Retire GFS.ps1</a></p>
<script src="https://gist.github.com/janjaaps/badbdc618cf2bd303e0c76a0d5c205ee.js"></script>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[#NLVMUG Inspiration! #1 Rubrik]]></title><description><![CDATA[Rubrik, Backup of VMWARE and Physical, Distributed Architecture, scale-out, SLA defined, NLVMUG]]></description><link>https://scict.nl/nlvmug-inspiration-1-rubrik/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7ef</guid><category><![CDATA[VMware]]></category><category><![CDATA[Backup]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Thu, 17 Mar 2016 20:11:26 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>All right, so today was the annual NLVMUG UserCon in the Netherlands, which is the biggest in the world actually! Great keynotes from VMware and Google and some cool other sessions. And i went home with a bunch of inspiration of which I would like to share some with you!</p>
<h3 id="rubrik">Rubrik</h3>
<p>First of all <a href="http://www.rubrik.com/">Rubrik</a>, with <a href="http://wahlnetwork.com/">ChrisWahl</a> on board (I actually went to a session of his <a href="http://www.slideshare.net/ChristopherWahl/vmug-learning-to-learn-experiences-and-tips-for-certifications-and-tech-skills">&quot;Learning to Learn&quot;</a>, which was very, uhm scientific! :)).</p>
<p>I can't get to the fact that I only heard about these guys last week! I Immediately watched all the <a href="http://techfieldday.com/appearance/rubrik-presents-at-tech-field-day-10/">TFD videos</a> and off course went to their booth today at NLVMUG. And during writing this post (so just now) I contacted Rubrik to get me some more info and pricing on these BRIKs!</p>
<p><img src="https://scict.nl/content/images/2016/03/ss-desktop-ui.jpg" alt></p>
<h4 id="thearchitecture">The architecture</h4>
<p>Rubrik simplifies backup in a way we haven't seen before!<br>
It's build in a way where you only define SLA like settings, such as RPO and RTO. You only set things like take snapshots every (hour, day, month), keep snapshots for (days, months, years), archiver after and replicate. Very cool! See below.<br>
<img src="https://scict.nl/content/images/2016/03/rubrik-sla.png" alt></p>
<p>It's a distributed scale-out architecture created out of &quot;BRIKs&quot;. Which is the smallest entity you can buy, they are &quot;Rack-and-go&quot;. Each BRIK is a physical appliance containing 4 nodes at the moment, and they currently support two models; the rubrik r344 (dense) and the rubrik r348 (denser). Each node within a brik has an 8-core haswell, 64GiB of RAM, a single 400G SSD and 3 times a 4TB or 8TB HDD and 10Gig Ethernet. Which combined in a 4 node, 2U BRIK is very dense! And they are doing 30.000 IOPS and 1.2GByte/s per BRIK!</p>
<h4 id="features">Features</h4>
<p>Currently they are only doing VMware, but almost all enterprise features are already available in their 2.0 release. Like inline deduplication &amp; compressions, replication of backups, archiving to nfs, object-based or cloud, VSS integration, VADP, Instant recovery (seems somewhat like VEEAM vPower NFS, Instant search, full REST Api support and much more!</p>
<p>Instant search seems awesome. Rubrik has an index of all files within your VM's, not only Windows with NTFS, but also Linux (ext3, ext4, etc). And off course fast recovery! I watched the demo, it's instant all right! :)<br>
<img src="https://scict.nl/content/images/2016/03/rubrik.png" alt></p>
<p>They also support &quot;Physical&quot;. I saw a demo of SQL in a <a href="http://vimeo.com/154329995">TFD video</a> and read about support today for <a href="http://www.rubrik.com/getting-physical-rubrik-announces-support-for-physical-linux/">Linux</a> as well!</p>
<p>Already looking forward to their 3.0 release!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Let's Encrypt!]]></title><description><![CDATA[Automated Certificate Authority cert enrollment on a RPi2 with nginx! And A+ score on SSLLabs]]></description><link>https://scict.nl/lets-encrypt/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7e1</guid><category><![CDATA[SSL/TLS]]></category><category><![CDATA[Security]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Mon, 14 Mar 2016 22:50:06 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>I wanted to do https on my new website and started to look for free but trusted certificate authorities. When I found Let's Encrypt i knew it had to be this!</p>
<h3 id="whatisletsencrypt">What is Let's Encrypt?</h3>
<p>LE is a certificate authority (CA) which currently runs in public beta for automated TLS certificate enrollment. Users running web servers can easily create cron scripts to request &amp; renew certificate for their websites. Totally automated and totally open &amp; free!</p>
<p><img src="https://letsencrypt.org/images/letsencrypt-logo-horizontal.svg" alt></p>
<h3 id="twotypeswebrootstandalone">Two Types: Webroot &amp; Standalone</h3>
<p>Standalone mode requests/renews a certificate. It starts it's own tiny webserver to do so listening on 80 and/or 443 to verify the legitimacy of the fqdn in the request. The problem with this mode is that a running webserver on 80 an/or 443 should be shutdown during this proces.</p>
<p>Webroot is a mode where a vhost is used to do the request and verification. The nice thing about this is your websites can keep running 24x7!<br>
Currently only available for Apache, but other modules (like nginx) are being built.</p>
<p>I use nginx and using standalone mode (for now), on a weekly basis, so every week my site would be down for a few seconds or so.</p>
<h3 id="howitworks">How it works!</h3>
<p>The basis you need to know how to set up a LE can be found <a href="https://letsencrypt.org/getting-started/">here</a>. But i'm going to make i even easier for you if you're running nginx (on a RPi like i do).</p>
<h4 id="getletsencrypt">Get  Let's Encrypt!</h4>
<font size="3">
```
$ sudo apt-get update
$ sudo apt-get -y install git bc
$ sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
$ cd /opt/letsencrypt
$ sudo ./letsencrypt-auto
```
</font>
#### DNS and availability webserver
1. You need a working DNS A record for your webserver!
2. You're webserver needs to be available on the internet on ports 80 and 443
#### Cron
<font size="3">
```
root@web:/etc/cron.weekly# cat letsencrypt-renew-scict.nl.sh
#!/bin/sh
cd /opt/letsencrypt
service nginx stop
#./letsencrypt-auto certonly --standalone -d scict.nl -d www.scict.nl -d lebber.net -d www.lebber.net -d fotoboek.lebber.net --renew --rsa-key-size 4096 --keep-until-expiring
./letsencrypt-auto certonly --standalone -d scict.nl -d www.scict.nl -d lebber.net -d www.lebber.net -d fotoboek.lebber.net --rsa-key-size 4096 --keep-until-expiring
service nginx start
<pre><code>&lt;/font&gt;
#### SSL Labs A+ score in nginx!
![](/content/images/2016/03/ssllabs_aplus.png)

Links i used: [Mozilla](https://mozilla.github.io/server-side-tls/ssl-config-generator/)[^n] &amp; [Michael Lustfield](https://michael.lustfield.net/nginx/getting-a-perfect-ssl-labs-score)[^n]

&lt;font size=3&gt;
</code></pre>
<p>root@web:/etc/nginx/sites-available# cat ghost-blog<br>
server {<br>
listen 80;<br>
listen [::]:80;</p>
<pre><code>   server_name scict.nl www.scict.nl;
   return 301 https://$host$request_uri;
</code></pre>
<p>}</p>
<p>server {<br>
listen 443 ssl;<br>
gzip off;</p>
<pre><code>   server_name scict.nl www.scict.nl;

   ssl_certificate /etc/letsencrypt/live/scict.nl/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/scict.nl/privkey.pem;

   #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   #ssl_prefer_server_ciphers on;
   #ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

# https://mozilla.github.io/server-side-tls/ssl-config-generator/
# also read: https://michael.lustfield.net/nginx/getting-a-perfect-ssl-labs-score
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Diffie-Hellman parameter for DHE ciphersuites, recommended 4096 bits, 2048 is also fine, 4096 very slow on Pi, -dsaparam is faster.
# openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096 ran on i7 laptop
# openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096 -dsaparam on rpi2
ssl_dhparam /etc/nginx/ssl/dhparam.pem;

# modern configuration. tweak to your needs.
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECD                                                                                                               HE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
#ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

   location / {
           proxy_pass http://127.0.0.1:8002;
           proxy_set_header Host      $host;
           proxy_set_header X-Real-IP $remote_addr;
   }
</code></pre>
<p>}</p>
<pre><code>&lt;/font&gt;

[^n]: https://letsencrypt.org/getting-started/
[^n]: https://mozilla.github.io/server-side-tls/ssl-config-generator/
[^n]: https://michael.lustfield.net/nginx/getting-a-perfect-ssl-labs-score</code></pre>
<!--kg-card-end: markdown--></font>]]></content:encoded></item><item><title><![CDATA[vMSC Site Affinity]]></title><description><![CDATA[VMware Vsphere Metro Storage Cluster HA/DRS Site Affinity powershell script
vMSC_Site_Affinity.ps1]]></description><link>https://scict.nl/vmsc-site-affinity/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7df</guid><category><![CDATA[Projects & Scripting]]></category><category><![CDATA[VMware]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Sun, 21 Feb 2016 21:19:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Hi,</p>
<p>This is my first real post, so cut me some slack and don't be prejudiced :).</p>
<p>I wrote a simple powershell script to set &quot;VM Site Affinity&quot; within a VMware vSphere Metro Storage Cluster environment.</p>
<p>Please also take a look at this <a href="http://www.vmware.com/files/pdf/techpaper/vmware-vsphere-metro-storage-cluster-recommended-practices.pdf">paper</a> [^n] from VMware by <a href="http://www.yellow-bricks.com/">Duncan Epping</a> [^n]. This technical paper explains, amongst many other stretched/metrocluster settings, how and why site affinity is important and preferred!</p>
<br>  
### What does it do?
The script sets a VM-to-Host soft affinity rule (should not must) in a vMSC scenario where site affinity is preferred, based on the configured datastores per site in a stretched environment. And is designed to run periodically (from every 5 minutes to one time a day).
<p><img src="https://scict.nl/content/images/2016/03/vMSC-Site-Affinity-1.png" alt></p>
<p>It sets DRS Host groups and DRS VM groups for all existing clusters in a stretched datacenter and creates DRS Rules with soft VM-to-Host affinity based on the VM's used datastores. The scripts needs to know the ESXi Hosts per site and datastores per site; see the VARS section below. It also mails you a report if needed every runtime and tells you which VM's use datastores from both sites.<br>
Only works with two sites!</p>
<p>Next step probably is adding support for Tags and Folders.<br>
Let me know what you think of it and where it needs improvement or extra features!</p>
<font size="3">
```
### VARS
$reportemailserver = 'mailserver.local' 
$reportemailsubject = 'vMSC Site Affinity'
$reportemailadresfrom = 'vMSC@local'
$reportemailadresto = 'jsanten@local'
$vcenterserver = 'algpvcenter.local' # (single vcenter)
<h1 id="sitenamessuffixfordrsgroupsrules">Site names (suffix for DRS groups/rules)</h1>
<p>$SiteA_name = '_MER A'<br>
$SiteB_name = '_MER B'</p>
<h1 id="commaseperateddatastoresdatastoreclusterspersite">comma seperated datastores, datastore clusters per site</h1>
<p>$siteA_datastores = 'nfsvm_01a_ds01_tier1','nfsvm_01b_ds02_tier1'<br>
$siteB_datastores = 'nfsvm_02a_ds03_tier1','nfsvm_02b_ds11_tier2'</p>
<h1 id="commaseperatedesxihostspersite">comma seperated esxi hosts per site</h1>
<p>$siteA_hosts = 'algpvmesx01.local','algpvmesx03.local','algpvmesx05.local'<br>
$siteB_hosts = 'algpvmesx02.local','algpvmesx04.local','algpvmesx06.local'</p>
<p>$doReport = $True # Option to report/mail<br>
$logfile = &quot;c:\test.log&quot;<br>
$RunDRS = &quot;1&quot; # 0 for no, 1 for yes to run DRS immediately afterwards</p>
<pre><code>&lt;/font&gt;

&lt;br/&gt;
### Code
[Github - vMSC Site Affinity.ps1](https://github.com/janjaaps/powershell/blob/master/VMWare/vMSC_Site_Affinity.ps1) [^n]
&lt;script src=&quot;https://gist.github.com/janjaaps/24cfcab0b424ffaf410e.js&quot;&gt;&lt;/script&gt;

&lt;font size=3&gt;
&lt;b&gt;notes &amp; links&lt;/b&gt;
[^n]: Techpaper http://www.vmware.com/files/pdf/techpaper/vmware-vsphere-metro-storage-cluster-recommended-practices.pdf
[^n]: Blog Duncan Epping http://www.yellow-bricks.com/
[^n]: the bits https://github.com/janjaaps/powershell/blob/master/VMWare/vMSC_Site_Affinity.ps1
&lt;/font&gt;</code></pre>
<!--kg-card-end: markdown--></font>]]></content:encoded></item><item><title><![CDATA[Network-Weathermap Nagios Hover]]></title><description><![CDATA[The script shows your nagios host state when hoovering over a nagios node on a weathermap. And should look something like this. weathermaphoover.php]]></description><link>https://scict.nl/weathermaphoover/</link><guid isPermaLink="false">5f411f7a6faa7201c13eb7e0</guid><category><![CDATA[Projects & Scripting]]></category><category><![CDATA[Nagios]]></category><dc:creator><![CDATA[Jan Jaap van Santen]]></dc:creator><pubDate>Fri, 19 Feb 2016 21:19:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Again a nice little php script to host on your webserver running <a href="https://www.nagios.org/projects/nagios-core/">Nagios Core</a> and <a href="http://network-weathermap.com">Network-Weathermap</a>. The script shows your nagios host state when hovering over a nagios node on a weathermap. And should look something like this.</p>
<p>Use &amp; Configuration is very simple, if there is anything you need, let me know!</p>
<h5 id="insideanetworkweathermap">Inside a Network Weathermap</h5>
<p><img src="https://scict.nl/content/images/2016/03/weathermaphoover-1.png" alt></p>
<h5 id="justtheoverlibgraph">Just the overlibgraph</h5>
<p><img src="https://scict.nl/content/images/2016/03/weathermaphoover2.png" alt></p>
<h5 id="theweathermapconfigurationinsidetheheaderofthephpfile">The weathermap configuration inside the header of the php file</h5>
<font size="3">
```
// weathermaphover.php
//
// Script creates an image/png using GD showing the nagios host state.
// Very useful in network-weathermap!
// It fetches the info from status.dat
//
// +-------------------------------------------------------------------------+
// | WeathermapHover for Nagios v0.7                                        |
// | by Jan Jaap van Santen                                                  |
// | github: janjaaps                                                        |
// | email: github@lebber.net                                                |
// | email: janjaap@scict.nl                                                 |
// +-------------------------------------------------------------------------+
// | Usage is very simple using the OVERLIBGRAPH on a NODE                   |
// | in the weathermap config.                                               |
// | And with just a monitored nagios host as input:                         |
// +-------------------------------------------------------------------------+
// | NODE <host>                                                             |
// |   LABEL <hostlabel>                                                     |
// |   OVERLIBGRAPH http://srvnagios/nagios/weathermaphover.php?host=<host> |
// +-------------------------------------------------------------------------+
// | The only setting needed to be made in this file is.                     |
// | Set this to your status.dat location:                                   |
// | $statusFile = "/var/ramdisk/status.dat";                                |
// | $statusFile = "/opt/nagios/var/status.dat";                             |
// +-------------------------------------------------------------------------+
```
</host></hostlabel></host></font>
<br>
##### Code
[Github - weathermaphover.php](https://github.com/janjaaps/nagios-weathermap/blob/master/weathermaphover.php) [^n]
<script src="https://gist.github.com/janjaaps/97e344b92fdce34f85b8.js"></script>
<font size="3">
<b>notes & links</b>
[^n]: Nagios Core https://www.nagios.org/projects/nagios-core/
[^n]: Network-Weathermap http://network-weathermap.com
[^n]: the bits https://github.com/janjaaps/nagios-weathermap/blob/master/weathermaphover.php
<font><!--kg-card-end: markdown--></font></font>]]></content:encoded></item></channel></rss>