<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Q-BLOG &#187; Anwendungen</title>
	<atom:link href="http://www.q-blog.org/category/anwendungen/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.q-blog.org</link>
	<description>Dies und das von jedem was</description>
	<lastBuildDate>Mon, 26 Jul 2010 06:41:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Online Zusammenarbeit II</title>
		<link>http://www.q-blog.org/2009/05/27/online-zusammenarbeit-ii/</link>
		<comments>http://www.q-blog.org/2009/05/27/online-zusammenarbeit-ii/#comments</comments>
		<pubDate>Wed, 27 May 2009 09:06:07 +0000</pubDate>
		<dc:creator>markus</dc:creator>
				<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Zusammenarbeit]]></category>

		<guid isPermaLink="false">http://www.q-blog.org/?p=200</guid>
		<description><![CDATA[Nach ewig langer Wartezeit gibt es nun endlich eine Fortsetzung der beliebten Serie. Im vergangenen Teil ging es um virtualle Whiteboards, Möglichkeiten mittels Terminalserver und ähnlichem. Heute geht es um das Programmieren mit mehr als einer Person. Ein kompliziertes Projekt? Es muss eben schnell mit mehreren Mitarbeitern an einem Projekt oder sogar an der selben [...]]]></description>
			<content:encoded><![CDATA[<p>Nach ewig langer Wartezeit gibt es nun endlich eine Fortsetzung der beliebten Serie. Im vergangenen Teil ging es um virtualle Whiteboards, Möglichkeiten mittels Terminalserver und ähnlichem. Heute geht es um das Programmieren mit mehr als einer Person. Ein kompliziertes Projekt? Es muss eben schnell mit mehreren Mitarbeitern an einem Projekt oder sogar an der selben Datei gearbeitet werden?<br />
<span id="more-200"></span><br />
Kein Problem. FÜr die IDE (Java, C, Python, PHP etc.) Netbeans von SUN ist ein Collaboration Plugin nachinstallierbar. Sofern man dann über einen Jabber Server verfügt (empfohlen und getestet wird da OpenFire) sind dann auch schon alle drei Komponenten vorhanden: Netbeans, Collaboration Plugin, Openfire Jabber Server. Nun steht einer Online Zusammenarbeit nichts mehr im Wege. Das Collaboration Plugin verbindet sich mit dem Jabber Server und ermöglicht ab nun ein Zusammenarbeiten. Das ganze könnte ich hier nun in endlosen Sätzen erklären, aber wirklich überzeugend ist es, wenn man es mit eigenen Augen sieht. Und das kann man am besten hier: 	<a href="http://collab.netbeans.org/files/documents/186/522/NB-Collab-Code-Review-for-JavaOne-v2.swf">Flash Video</a></p>
<p>Das ganze haben wir natürlich schon Produktiv getestet und es überzeugt auf Anhieb und eröffnet ungeahnte Möglichkeiten. Wenn man das noch optimieren will, sollte die Colaboration Sitzung über einen OpenFire Chatroom laufen, hier ist die Performance dann noch besser, dies ist aber kein muss. Über normale Benutzersssions geht dies auch.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-blog.org/2009/05/27/online-zusammenarbeit-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DRBD/OCFS2 &#8211; OCFS2 Debug</title>
		<link>http://www.q-blog.org/2009/02/15/drbdocfs2-ocfs2-debug/</link>
		<comments>http://www.q-blog.org/2009/02/15/drbdocfs2-ocfs2-debug/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 20:37:23 +0000</pubDate>
		<dc:creator>markus</dc:creator>
				<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[DRBD]]></category>
		<category><![CDATA[OCFS2]]></category>

		<guid isPermaLink="false">http://www.q-blog.org/?p=169</guid>
		<description><![CDATA[Nach der ganzen Geschichte mit IBM geht es nun endlich mal wieder mit etwas Sinnvollem weiter. Ein ClusterFS gehört nicht zu den Dingen die jeder braucht oder unbedingt haben muss wenn er einen Rootserver hat. Cluster Dateisysteme sind relativ komplex und gerade in Bezug auf OCFS2 gibt es noch einige lustige Bugs und Probleme, nur [...]]]></description>
			<content:encoded><![CDATA[<p>Nach der ganzen Geschichte mit IBM geht es nun endlich mal wieder mit etwas Sinnvollem weiter. Ein ClusterFS gehört nicht zu den Dingen die jeder braucht oder unbedingt haben muss wenn er einen Rootserver hat. Cluster Dateisysteme sind relativ komplex und gerade in Bezug auf OCFS2 gibt es noch einige lustige Bugs und Probleme, nur wie findet man diese? An dieser Stelle werde ich ein wenig aus dem Nähkästchen plaudern. In diesem Fall hatten wir mit einem der Cluster Setups Probleme (währendessen andere ohne Probleme funktionieren). Nehmen wie aktuell einmal das bereits behandelte Szenario des DRBD/OCFS2 Webclusters.<br />
<span id="more-169"></span><br />
Der Setup funktionierte auf Anhieb und die geplante mehrtägige Testphase wurde auf Wunsch des Kunden verkürzt da aktuell einige Überlasten zu verzeichnen waren und aus diesem Grund dringend umgeschaltet werden musste. Natürlich haben wir davon abgeraten, dies übereilt zu tun da insb. auch am Portal selbst einige Anpassungen zu machen sind (IP- Adressen für die Sessionverwaltung müssen dank LBL aus einer anderen Variable gezogen werden etc.).</p>
<p>Nun, den Cluster in Betrieb genommen, hierbei war darauf zu achten das auch Temp und Session Dateien mit auf dem ClusterFS liegen damit diese beiden Servern zur Verfügung stehen, was zwar nicht erforderlich ist, da der aktuell eingesetzte LBL (Loadbalancer) Pound ein passendes Sessionmanagement hat und so die Nutzer immer wieder auf den passenden Server leitet.</p>
<p>Die ersten Stunden verliefen absolut ruhig, alles lief genau so wie es sollte. Die Last wurde sauber verteilt und alle Server waren absolut im grünen Bereich.</p>
<p>Innerhalb weniger Sekunden stieg der Load der Web Nodes auf über 200 während sich die CPUs langweilten. Das Portal selbst war noch absolut schnell abrufbar, allerdings hingen einige Prozesse fest.</p>
<p><strong>Prozesse finden</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-e</span> <span style="color: #660033;">-o</span> pid,<span style="color: #c20cb9; font-weight: bold;">stat</span>,<span style="color: #c20cb9; font-weight: bold;">comm</span>,<span style="color: #007800;">wchan</span>=WIDE-WCHAN-COLUMN <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> D</pre></div></div>

<p>Dieser nette kleine Befehl zeigt uns wartende Prozesse und worauf diese warten.  Es handelte sich um einige OCFS2 Lock Waits. </p>
<p><strong>flock() oder wie ärgere ich den Cluster</strong><br />
OCFS2 mag in aktueller Version ein flock() überhaupt nicht, dies soll zwar langfristig gefixt werden aber das wird wohl noch ein wenig dauern. Auf flock wurde ab sofort verzichtet und nun sah auch schon alles besser aus.</p>
<p><strong>The return of the Load</strong><br />
Wenige Stunden später war sie wieder da, die Last staut sich wenige Sekunden an und dann flacht alles wieder ab und ist wieder normal wie vorher. Währenddessen merken nur Nutzer die auf diesen Prozess warten etwas davon, alles andere ist wie gewohnt performant. Wieder Prozesse analysiert, wieder sind es PHP Prozesse. Nun möchte man natürlich wissen um welche Datei es sich handelt:</p>
<p><strong>Den Schuldigen finden</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>debugfs.ocfs2 <span style="color: #660033;">-R</span> <span style="color: #ff0000;">&quot;fs_locks&quot;</span> <span style="color: #660033;">-n</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>drbd0 <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>lock.log</pre></div></div>

<p>Der komische Aufruf mit ./ hat einen Grund, die in Portage enthaltenen ocfs2-tools sind zu alt für diese Auswertungen, aus diesem Grund wurden diese von Hand kompiliert aber mit dem Hintergedanken die vorhandenen nicht zu überschreiben. Nach kurzer Zeit haben wir eine LOG Datei welche wir nun in Ruhe auswerten können. Um den Fehler zu lokalisieren sollten wir die Augen nach &#8220;Busy&#8221; offen halten. Den wenn es wirklich ein Lockung Problem ist, wie zum Beispiel mit flock() taucht dies an dieser Stelle auf. Dort erfahren wir aber immer noch nicht um welche Datei es sich eigentlich handelt, nur die Lockres. Diese Logres lässt sich mit folgendem Befehl auflösen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>debugfs.ocfs2 <span style="color: #660033;">-R</span> <span style="color: #ff0000;">&quot;findpath &lt;W000000000000000249c04fccb0d3fb&gt;&quot;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>drbd0</pre></div></div>

<p>Es sollte nun die betroffene Datei angezeigt werden.</p>
<p><strong>Kein Schuldiger</strong><br />
In unserem Fall war es aber kein offensichtlicher Fehler sondern ein Bug in OCFS. Ein Kernel Upgrade auf 2.6.27 sollte genau das fixen, allerdings gibt es da einen anderen lustigen Bug das DRBD auf Anhieb nicht mehr funktioniert. Aber für all dies gibt es ja Lösungen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-blog.org/2009/02/15/drbdocfs2-ocfs2-debug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Zeitaufwand</title>
		<link>http://www.q-blog.org/2009/02/11/mysql-zeitaufwand/</link>
		<comments>http://www.q-blog.org/2009/02/11/mysql-zeitaufwand/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 15:39:44 +0000</pubDate>
		<dc:creator>markus</dc:creator>
				<category><![CDATA[Anwendungen]]></category>

		<guid isPermaLink="false">http://www.q-blog.org/?p=149</guid>
		<description><![CDATA[Wenn man zuviel Zeit hat: mysql&#62; ALTER TABLE X ENGINE=innodb; Query OK, X rows affected &#40;17 hours 25 min 13.67 sec&#41;]]></description>
			<content:encoded><![CDATA[<p>Wenn man zuviel Zeit hat:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">ALTER</span> <span style="color: #993333; font-weight: bold;">TABLE</span> X ENGINE<span style="color: #66cc66;">=</span>innodb;
Query OK<span style="color: #66cc66;">,</span> X rows affected <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">17</span> hours <span style="color: #cc66cc;">25</span> min <span style="color: #cc66cc;">13.67</span> sec<span style="color: #66cc66;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.q-blog.org/2009/02/11/mysql-zeitaufwand/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DRBD/OCFS2 &#8211; OCFS2</title>
		<link>http://www.q-blog.org/2009/01/11/drbdocfs2-ocfs2/</link>
		<comments>http://www.q-blog.org/2009/01/11/drbdocfs2-ocfs2/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 14:58:03 +0000</pubDate>
		<dc:creator>markus</dc:creator>
				<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Hochverfügbarkeit]]></category>
		<category><![CDATA[OCFS2]]></category>

		<guid isPermaLink="false">http://www.q-blog.org/?p=100</guid>
		<description><![CDATA[Um mich mal ein wenig von IBM abzulenken, mache ich einfach mal mit der alten Artikelserie die wohl die meisten interessieren wird weiter. Unsere letzte Aktion war DRBD einrichten, dies ist nun erledigt und wir können den nächsten Schritt gehen: OCSF2. Kernel Wenn wir nicht gerade einen Ur- Alt Kernel verwenden ist OCFS2 bereits mit [...]]]></description>
			<content:encoded><![CDATA[<p>Um mich mal ein wenig von IBM abzulenken, mache ich einfach mal mit der alten Artikelserie die wohl die meisten interessieren wird weiter. Unsere letzte Aktion war DRBD einrichten, dies ist nun erledigt und wir können den nächsten Schritt gehen: OCSF2.<br />
<span id="more-100"></span></p>
<p><strong>Kernel</strong><br />
Wenn wir nicht gerade einen Ur- Alt Kernel verwenden ist OCFS2 bereits mit enthalten (im Kernelsource). Dieses müssen wir nun nur noch in den Kernel mit einbauen. Wer nun wie ich denkt, dies könne man fest einkompilieren da die Funktionalität eh gebraucht wird, der irrt. Die entsprechenden Funktionen MÜSSEN als Modul kompiliert werden, nach dem Neustart muss es entsprechend so aussehen:</p>
<pre lang=bash>
node ~ # lsmod
Module                  Size  Used by
drbd                  185640  4
ocfs2_dlmfs            20752  1
ocfs2                 385256  1
ocfs2_dlm             176540  2 ocfs2_dlmfs,ocfs2
ocfs2_nodemanager     196424  7 ocfs2_dlmfs,ocfs2,ocfs2_dlm
configfs               25704  2 ocfs2_nodemanager
</pre>
<p>Das &#8220;drbd&#8221; Modul geht uns momentan nichts an. Unter Umständen kann es auch sein das die Module noch nicht geladen wurden, dies wird dann vom init Script erledigt, falls nicht kann man diese auch einfach in die autoload einfügen.</p>
<p><strong>OCFS2 Tools</strong><br />
Damit nach ein Blockdevice als Clusterdateisystem genutzt werden kann, benötigen wir noch einige Tools. Wie immer wird von Gentoo ausgegangen:</p>
<pre lang=bash>emerge ocsf2-tools</pre>
<p>Einmal davon abgesehen das das Paket maskiert ist (was für Gentoo Kenner kein Problem sein sollte) wird es nicht sauber emergen da das &#8220;make&#8221; abstürzen wird. Theoretisch könnte ich damit den Artikel beenden und die Lösung nur gegen Geld zur Verfügung stellen, aber wir machen nun einfach weiter, folgendes funktioniert zum aktuellen Zeitpunkt Copy und Paste:</p>
<pre lang=bash>
cd /usr/portage/sys-fs/ocfs2-tools/
ebuild ocfs2-tools-1.2.1.ebuild unpack
cd /var/tmp/portage/sys-fs/ocfs2-tools-1.2.1/work/ocfs2-tools-1.2.1/libocfs2/include/
vi ocfs2.h
</pre>
<p>In die ocfs2.h fügen wir nun die Zeilen mit dem + am Anfang ein, die anderen sind nur als Navigationshilfe gezeigt (Zeile 48), das + (PLUS) sollte natürlich entfernt werden:</p>
<pre lang=c>
#include "byteorder.h"

+#if !defined(offsetof)
+#   define offsetof(type,memb) ((size_t)&#038;((type*)0)->memb)
+#endif

#if OCFS2_FLAT_INCLUDES
#include "o2dlm.h"
</pre>
<p>Noch einen anderen &#8220;Bug&#8221; fixen:</p>
<pre lang=bash>
cd /usr/portage/sys-fs/ocfs2-tools/
ln -s /usr/src/linux/include/asm/page.h /usr/include/asm/
</pre>
<p>Und den &#8220;Gentoo Way&#8221; weiter:</p>
<pre lang=bash>
ebuild ocfs2-tools-1.2.1.ebuild compile
ebuild ocfs2-tools-1.2.1.ebuild install
ebuild ocfs2-tools-1.2.1.ebuild qmerge
</pre>
<p><strong>Konfigurieren</strong><br />
Die Konfigurationsdatei, Copy und Paste muss natürlich angepasst werden, die Datei heisst:<br />
/etc/ocfs2/cluster.conf</p>
<pre lang=bash line=1>
node:
	ip_port = 7777
	ip_address = 172.16.4.20
	number = 0
	name =web1
	cluster = ocfs2

node:
	ip_port = 7777
	ip_address = 172.16.4.21
	number = 1
	name = web2
	cluster = ocfs2

cluster:
	node_count = 2
	name = ocfs2
</pre>
<p>Da da bei cluster &#8220;ocfs2&#8243; steht hat nichts zu sagen, dies ist nur der Name des Clusters, da könnte auch Wurstbrot stehen (ich bin jetzt mal gespannt wer seinen Cluster Wurstbrot nennt). Wichtig ist noch das die Namen der Nodes auflösbar sind, sonst können lustige Probleme entstehen, müssen aber nicht.</p>
<p><strong>Weitere Vorbereitungen</strong><br />
Zwei neue Zeilen in der fstab:</p>
<pre lang=bash>
none                    /config         configfs        defaults                0 0
none                    /dlm            ocfs2_dlmfs     defaults                0 0
</pre>
<p>Die entsprechenden Ordner /config und /dlm müssen von Hand angelegt werden.</p>
<p><strong>Formatieren</strong><br />
Nun formatieren wir unser DRBD Device mit OCFS2:</p>
<pre lang=bash>
mkfs.ocfs2 /dev/drbd0
</pre>
<p>Unter Umständen sollten noch andere Inode und Cluster Größen gewählt werden, der Standard war mir zu verschwenderisch. Das formatieren ist natürlich nur auf einer Seite notwendig, wir haben ja DRBD.</p>
<p><strong>Starten und nutzen</strong><br />
Mit einem beherzten:</p>
<pre lang=bash>
/etc/init.d/ocfs2 start
mount /dev/drbd0 /mnt/sonstwohin
</pre>
<p>Das natürlich auf beiden Nodes bzw. allen Nodes ausgeführt werden sollte ist unser Cluster nun fertig.
</pre>
<p>Theoretisch ist diese Serie nun zu Ende, es wird aber noch ein paar Teile geben, die auf das Loadbalancing und vor allem auf mögliche Probleme die entstehen können eingehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-blog.org/2009/01/11/drbdocfs2-ocfs2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DRBD/OCFS2 &#8211; PROLOG</title>
		<link>http://www.q-blog.org/2008/12/16/drbdocfs2-webserver-loadbalancing-1-prolog/</link>
		<comments>http://www.q-blog.org/2008/12/16/drbdocfs2-webserver-loadbalancing-1-prolog/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 09:32:57 +0000</pubDate>
		<dc:creator>markus</dc:creator>
				<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[DRBD]]></category>
		<category><![CDATA[OCFS2]]></category>

		<guid isPermaLink="false">http://www.q-blog.org/?p=82</guid>
		<description><![CDATA[Nach langer Zeit beginne ich hiermit endlich einmal wieder mit etwas Nützlichem. OCFS2 ist ein Cluster- Dateisystem von Oracle (die von den meisten Administratoren aufgrund der gleichnamigen Datenbank nicht sonderlich gemocht werden), OCFS2 ist Bestandteil des Kernels was alles ein wenig einfacher macht. Anders als viele glauben ist OCFS2 kein Netzwerkdateisystem, es gibt also nichts [...]]]></description>
			<content:encoded><![CDATA[<p>Nach langer Zeit beginne ich hiermit endlich einmal wieder mit etwas Nützlichem. OCFS2 ist ein Cluster- Dateisystem von Oracle (die von den meisten Administratoren aufgrund der gleichnamigen Datenbank nicht sonderlich gemocht werden), OCFS2 ist Bestandteil des Kernels was alles ein wenig einfacher macht. Anders als viele glauben ist OCFS2 kein Netzwerkdateisystem, es gibt also nichts frei. Das einzige was OCFS2 macht ist das &#8220;LOCK Managing&#8221; wenn ein und dasselbe Storage- Device mehr als einmal geöffnet wird. Damit OCFS2 Sinn ergibt, wird ein Blockdevice benötigt welches auf jedem Server auf dem OCFS2 laufen soll verfügbar ist, dies kann GNBD oder ein SAN mittels iSCSI oder FC sein. Handelt es sich um ein kleines Projekt für das ein Redundantes SAN ein klein wenig Overkill wäre, bleibt da noch DRBD, welches bereits aus einem früheren Artikel bekannt ist.<br />
<span id="more-82"></span><br />
<strong>Das Projekt</strong><br />
Momentaner Aufbau: 1 Datenbankserver (MySQL), 1 Webserver (Apache Worker, FastCGI PHP, eAccelerator). Während der MySQL Server nach einiger Optimierungsarbeit nun noch einige freie Ressourcen aufweist, ist der Webserver bereits bis zum &#8220;geht nicht mehr&#8221; optimiert. Hier kommt nun ein dritter Server ins Spiel.</p>
<p><strong>Das Problem</strong><br />
Problematisch wird die Sache an der Stelle, ab der sämtliche Nutzdaten auf beiden Systemen zur Verfügung stehen müssen. Hierfür gibt es drei Möglichkeiten:<br />
- Sync der Daten via rsync, dies ist wegen Menge der Dateien und Häufigkeit der Änderungen nicht möglich bzw, Sinnvoll.<br />
- NFS Freigabe: Einer der beiden Server würde hier den NFS Server spielen, Nachteil wäre, das bei Ausfall sämtliche Daten nicht verfügbar sind und damit alles offline ist.<br />
- DRBD Spiegelung: Hier wird die komplette Partition gespiegelt. Problematisch wird dieser Punkt an der Stelle an der ein und dasselbe Dateisystem zwei mal &#8220;gemounted&#8221; werden soll, Linux Kenner wissen das dies im Normalfall den Tod des Dateisystems und fast aller Daten zu folge hat. Und genau hier springt OCFS2 in die Bresche.<br />
Sollte das System später erweitert werden lässt sich so ein hochverfügbarer NFS Server realisieren.</p>
<p>Lesen sie weiter wenn es wieder heißt: DRBD/OCFS2</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-blog.org/2008/12/16/drbdocfs2-webserver-loadbalancing-1-prolog/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Exchange 2007 Migration</title>
		<link>http://www.q-blog.org/2007/11/06/exchange-2007-migration/</link>
		<comments>http://www.q-blog.org/2007/11/06/exchange-2007-migration/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 16:22:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.q-blog.org/2007/11/06/exchange-2007-migration/</guid>
		<description><![CDATA[Man möge es mir verzeihen, aber wie schon an anderer Stelle erwähnt setzen wir einen MS Exchange Server ein (das ist einer von 3 Windows Servern, im vergleich zu einer vielfachen Zahl an NIX Systemen). OpenXchange haben wir auch noch laufen, aber das Teil war letztes Jahr eher eine Krankheit als wirklich brauchbar. Da unser [...]]]></description>
			<content:encoded><![CDATA[<p>Man möge es mir verzeihen, aber wie schon an anderer Stelle erwähnt setzen wir einen MS Exchange Server ein (das ist einer von 3 Windows Servern, im vergleich zu einer vielfachen Zahl an NIX Systemen). OpenXchange haben wir auch noch laufen, aber das Teil war letztes Jahr eher eine Krankheit als wirklich brauchbar. Da unser guter treuer alter Server nun so langsam an das Ende kommt (Arbeitsspeicher etc.) musste neue Hardware her, und da in kürze sowieso mit dem SP1 für Exchange 2007 zu rechnen ist, haben wir nach mehremonatiger Testphase die Migration auf Exchange 2007 begonnen, das war vor 2 Wochen. Mitte nächster Woche sollten dann die letzten Benutzer umgezogen werden. Da auch die komplette Domäne und alles was dazu gehörte neu angelegt wurde, macht man soetwas am besten händisch (PST Exportieren und Importieren). Zudem wurde der neue Exchange auf Hosting zugeschnitten (Benutzer und Adressbücher sauber voneinander getrennt). Im großen und ganzen schlägt sich der 2007er sehr gut, es gibt einige kleine Bugs (zum Beispiel wenn ein Attribut &#8220;Test&#8221; heisst funktionieren gewisse Dinge absolut garnicht). Da die saubere Trennung der User immer ein kompliziertes und viel gefragtes Thema ist, werde ich wenn ich mal wieder ein wenig Zeit habe, hier darauf eingehen.</p>
<p>Der neue Exchange läuft zudem nun virtualisiert. Was hier den Vorteil bringt den man unter Linux schon lange hat, nur unter Windows vermisst: Umziehen der Installation auf andere Hardware ohne Vorbereitungen, zum Beispiel bei Hardwaredefekten.</p>
<p>Dazu kommt zudem ein SharePoint System (bzw. ist schon dazu gekommen) und in den nächsten Monaten wohl DynamicsCRM (die Tests wurden heute abgeschlossen) was sicherlich wieder etwas mehr Ordnung bringt. Allerdings muss sich noch herausstellen wie es sich in unsere eigene Kundenverwaltungssoftware die wir seit Jahren nutzen integrieren lässt.</p>
<p>Und bevor jemand auf falsche Gedanken kommt: Die meisten Server werden auch langfristig NICHT auf Windows laufen. Selbst meine Arbeitsstation läuft unter Linux (ok, da drauf dann VMware mit XP für Outlook und die ganzen anderen Tools).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-blog.org/2007/11/06/exchange-2007-migration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dovecot und OpenLDAP</title>
		<link>http://www.q-blog.org/2007/09/06/dovecot-und-openldap/</link>
		<comments>http://www.q-blog.org/2007/09/06/dovecot-und-openldap/#comments</comments>
		<pubDate>Thu, 06 Sep 2007 12:20:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Anwendungen]]></category>

		<guid isPermaLink="false">http://www.q-blog.org/2007/09/06/dovecot-und-openldap/</guid>
		<description><![CDATA[Nun ist es soweit nach einer Testinstallation folgte die Produktivinstallation. Die LDAP Benutzerdatenbank umfasst mittlerweile 1900 Benutzer und wird fast täglich größer. Der LDAP Master Server wird einem Netzwerk betrieben das zu 90% aus nativen Linux Clients basiert die die Benutzer direkt am LDAP Server authentiifizieren. Der LDAP Slave Server (das Replikat) steht im Rechenzentrum. [...]]]></description>
			<content:encoded><![CDATA[<p>Nun ist es soweit nach einer Testinstallation folgte die Produktivinstallation. Die LDAP Benutzerdatenbank umfasst mittlerweile 1900 Benutzer und wird fast täglich größer. Der LDAP Master Server wird einem Netzwerk betrieben das zu 90% aus nativen Linux Clients basiert die die Benutzer direkt am LDAP Server authentiifizieren. Der LDAP Slave Server (das Replikat) steht im Rechenzentrum. Ein VPN Tunnel verbindet diese beiden Standorte.</p>
<p>Wichtig war bei diesem Projekt vor allem das die Logindaten für den Mailserver identisch mit denen im Netzwerk sind (also keine Domain im Benutzernamen) zudem sollte der einfacheit halber kein neues Benutzerattribut mit der Mailadresse hinzugefügt werden. Nun, die Konfiguration ist einfach, die userdb und auch die Quota geben wir Dovecot statisch vor:</p>
<p><code><br />
userdb static{<br />
args = uid=1000 gid=1000 home=/srv/mail/%Ln allow_all_users=yes<br />
}<br />
</code><br />
Das %Ln sorgt dafür das Ordner mit dem Benutzernamen grundsätzlich &#8220;Lowercase&#8221; also in klein geschrieben angelegt / benutzt werden. Auf Grund der größe des Mailservers wird der Dovecot fest an den LDAP Server gebunden (hierzu ist ein LDAP Benutzerkonto mit den passenden Rechten notwendig) . Postfix wird natürlich auch noch entsprechend an den LDAP Server angepasst.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-blog.org/2007/09/06/dovecot-und-openldap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dovecot</title>
		<link>http://www.q-blog.org/2007/08/07/dovecot/</link>
		<comments>http://www.q-blog.org/2007/08/07/dovecot/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 08:27:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Anwendungen]]></category>

		<guid isPermaLink="false">http://www.q-blog.org/2007/08/07/dovecot/</guid>
		<description><![CDATA[Etwas was ich schon seit Tagen berichten wollte. Vor zwei Wochen begann die Migration aller Systeme von Courier IMAP auf Dovecot. Für diese Migration gibt es einige Gründe: Sicherheit Sieve Unterstützung Ersetzt gleichzeitig Cyrus SASL Ausgezeichnete IPv6 Unterstützung Performance Ganz besonders die Sieve Unterstützung ist hier der wichtigste Punkt. Die schafft die technischen Gegebenheiten unsere [...]]]></description>
			<content:encoded><![CDATA[<p>Etwas was ich schon seit Tagen berichten wollte. Vor zwei Wochen begann die Migration aller Systeme von Courier IMAP auf Dovecot. Für diese Migration gibt es einige Gründe:</p>
<ul>
<li>Sicherheit</li>
<li>Sieve Unterstützung</li>
<li>Ersetzt gleichzeitig Cyrus SASL</li>
<li>Ausgezeichnete IPv6 Unterstützung</li>
<li>Performance</li>
</ul>
<p>Ganz besonders die Sieve Unterstützung ist hier der wichtigste Punkt. Die schafft die technischen Gegebenheiten unsere Software Q-Control um Autoresponder und ähnliches zu erweitern.</p>
<p><strong>Die Migration</strong><br />
Nein, ich werde hier keine Schritt für Schritt Migration beschreiben, das ist bereits im Dovecot Wiki ausgezeichnet dokumentiert. Allerdings gibt es da ein paar Interessante Punkte:</p>
<ul>
<li>Keine statischen Maildir Maps wie zum Beispiel &#8220;/var/mail/virtual/%d/%u&#8221; verwenden. Das kann dazu führen das, wenn ein Benutzer zum Beispiel UsER@Domain.TlD als Benutzernamen in sein Mailprogramm einträgt, Dovecot versucht die Mailordner &#8220;/var/mail/virtual/Domain.TlD/UsER&#8221; zu öffnen, den es in einem ordentlich eingerichtetem System nicht geben sollte. Hat Dovecot die entsprechenden Rechte würde es den Ordner erstellen (wer möchte das freiwillig?). Stattdessen sollte man die Maildirs direkt aus der Datenquelle nehmen (hier eine MySQL Datenbank) in der diese Case Sensitive enthalten sind.</li>
<li>Die Maildirs sollten entweder mit maildir: in der Datenquelle stehen, oder man benutzt ein beherztes CONCAT im SELECT.</li>
</ul>
<p>Alles im allem lief die Migration aber sehr sauber. Und jetzt bahnt sich auch schon das nächste kleine Projekt an, für das Dovecot genau das richtige ist: 1 Server, 1 Domain, 1600 Email- Konten. Ich werde berichten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-blog.org/2007/08/07/dovecot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
