Archiv des Autors: Alex W

enable SSH Buffalo Link Station Due LS-WXL firmware 1.56

      Zuerst ladet euch den acp commander herunter.

 

      http://downloads.buffalo.nas-central.org/TOOLS/ALL_LS_KB_ARM9/ACP_COMMANDER/
      http://download.discountnetz.com/tools/acp_commander.zip

Dann entpacken und eventuell noch Java installieren. Das beschreibe ich hier aber nicht. Dann öffnen wir ein Terminal und tippen der Reihe nach unten genannte Befehle ab.

weiterlesen …

Rsyslog with Central loghost

Server Konfiguration:

#vi /etc/rsyslog.conf

$IncludeConfig /etc/rsyslog.d/*

$ModLoad imuxsock.so
$ModLoad imklog.so
#$ModLoad ommysql

#load the network stuff
$ModLoad imudp.so
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

#reduce any duplicates
$RepeatedMsgReduction on

# The template that wil format the message as it is writen to the file
# you can edit this line if you want to customize te message format
$template TraditionalFormat,”%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n”

# this line creates a template that will store the messages for each host in a seperate file.
# a new file will ben created daily because of the date in the filename.
$template DailyPerHostLogs,”/var/opt/syslog/%HOSTNAME%/%HOSTNAME%.%$YEAR%-%$MONTH%-%$DAY%.log”

#This line creates a sinlge log file for each server with the content of all content all logs from the client.
*.* -?DailyPerHostLogs;TraditionalFormat

 

#vi /etc/rsyslog.d/10-remote.conf

###APACHE START###
$template apacheError,”/var/opt/syslog/%fromhost%/apache/%$YEAR%-%$MONTH%-%$DAY%.error.log”
$template apacheAccess,”/var/opt/syslog/%fromhost%/apache/%$YEAR%-%$MONTH%-%$DAY%.access.log”

local7.* ?apacheError
& ~

local6.notice ?apacheAccess
& ~
##APACHE END###
#
###MAIL START###
$template mailInfo, “/var/opt/syslog/%fromhost%/mail/%$YEAR%-%$MONTH%-%$DAY%maillog”

mail.* ?mailInfo
& ~
###MAIL END###
#
###SECURE START###
$template secureLog, “/var/opt/syslog/%fromhost%/secure/%$YEAR%-%$MONTH%-%$DAY%secure.log”

authpriv.*    -?secureLog
& ~
###SECURE END###

#
###LDAP START###
$template ldapLog, “/var/opt/syslog/%fromhost%/ldap/%$YEAR%-%$MONTH%-%$DAY%ldap.log”

local4.*        ?ldapLog
& ~
###LDAP END###

 

 

On the apache server we need to add:

#vi  /etc/httpd/conf.d/logging.conf

CustomLog “|/usr/bin/logger -t apache -i -p local6.notice” combined

ErrorLog  syslog:local3
LogLevel warn

 

 

 

The folder structure and logs do look like this:

root@loghost:/var/opt/syslog/www04.domain.com# ll
total 20
drwx—— 5 root root 4096 May 22 14:07 ./
drwxrwxrwx 9 root root 4096 May 23 00:00 ../
drwx—— 2 root root 4096 May 26 00:00 apache/
drwx—— 2 root root 4096 May 26 00:09 mail/
drwx—— 2 root root 4096 May 26 00:00 secure/
drwx—— 2 root root 4096 May 26 00:00 ldap/

Init script for Tomcat to start different instances of Talend Admin Center

#!/bin/sh
#tomcat startup script
#description: tomcat

TOMCAT_HOME=/opt/Talend/AdminCenter/$2
export TOMCAT_HOME

JAVA_HOME=$(which java)
export JAVA_HOME

TOMCAT_OWNER=tomcat
export TOMCAT_OWNER

start() {
echo -n “Starting Tomcat:  ”
su $TOMCAT_OWNER -c $TOMCAT_HOME/bin/startup.sh
sleep 2
}
stop() {
echo -n “Stopping Tomcat: ”
su $TOMCAT_OWNER -c $TOMCAT_HOME/bin/shutdown.sh
}

# See how we were called.
case “$1” in
start)
start $2
;;
stop)
stop $2
;;
restart)
stop $2
start $2
;;
*)
echo “Usage: tomcat {start INSTANCE_NAME|stop INSTANCE_NAME|restart INSTANCE_NAME}”
exit
esac

Now you can start with  /etc/init.d/tomcat TAC_530 start or /etc/init.d/tomcat TAC_540 start

init Script für Apache archiva unter CentO

Ein init Script für Apache archiva unter CentOS. Nach dem Erstellen der Datei sind noch folgende Schrite notwendig.

chmod +x /etc/init.d/archivad

chkconfig –add archivad

chkconfig archiva on

 

#!/bin/bash
#
#Script to start/stop/status/restart archiva
# chkconfig: 35 20 80
# description: Archiva

ARCHIVA_PATH=/usr/local/archiva/bin

case “$1″ in
start)
${ARCHIVA_PATH}/archiva start
;;
stop)
${ARCHIVA_PATH}/archiva stop
;;
status)
${ARCHIVA_PATH}/archiva status
;;
restart)
${ARCHIVA_PATH}/archiva restart
;;
*)
echo $”Usage: $0 {start|stop|status|restart}”
exit 1
esac

Neue Festplatte installieren und einrichten

Um zusätzlichen Speicherplatz zu erhalten, ist es bei Linux (wie bei jedem anderen Betriebssystem) notwendig, eine zusätzliche Festplatte zu installieren. Man könnte auch die alte ersetzen, doch dann würde man das Betriebssystem wohl eher neu installieren. Um eine zusätzliche Festplatte unter Linux zu installieren, sind die folgenden Schritte notwendig:

1. Computer ausschalten und Gehäuse öffnen. Dann die Festplatte einbauen und an einen freien IDE-Anschluss anschließen. 2. Sobald die Festplatte eingebaut und angeschlossen ist, sollte sie beim Booten des Rechners automatisch erkannt werden. Um die Gerätedateien der Festplatte unter Linux herauszufinden, kann die folgende Liste verwendet werden: Primary Controller – Festplatte 1: /dev/hda Primary Controller – Festplatte 2: /dev/hdb Secondary Controller – Festplatte 1: /dev/hdc Secondary Controller – Festplatte 2: /dev/hdd

Man benötigt diese Informationen, um die neue Festplatte unter Linux einzurichten.

3. Nun, da wir wissen, wie unsere Festplatte unter Linux heißt (z. B. /dev/hdb), ist der nächste Schritt, die Platte mit fdisk zu partitionieren fdisk /dev/hdb

Die bevorzugte Methode ist es, die alten Partitionen auszuwählen und eine einzelne Linux-Partition hinzuzufügen. Wichtig ist, dass die Partition vom Typ 83 (Linux) ist.

   * Drücke "n", um eine neue Partition hinzuzufügen
   * Drücke "e", um die neue Partition zu einer primären Partition zu machen (abä¤ngig davon, wieviele Partitionen erstellt werden)
   * Drücke "1" für eine einzelne Partition
   * Gib den ersten Zylinder ein, z.B. "1"
   * Gib den letzten Zylinder ein, z.B. 1245 (abä¤ngig von der Größe der Festplatte)
   * Drücke "w", um die Partitionstabelle auf die Festplatte zu schreiben und fdisk zu beenden

4. Wenn die Partition erstellt ist, muss mit mkfs das Dateisystem erstellt werden. Wenn nur eine Partition erstellt wurde, dürfte diese beispielsweise /dev/hdb1 heißen. In diesem Fall ist mkfs /dev/hdb1

einzugeben, um ein Dateisystem zu erzeugen. Für mehrere Partitionen funktioniert das analog. Nach mkfs /dev/hdb1 wäre dann mkfs /dev/hdb2 usw. auszuführen, bis alle Partitionen mit einem Dateisystem versorgt sind.

Das neu erstellte Dateisystem sollte standardmäßig als Dateisystem vom Typ ext2 erstellt werden. Falls Du ein Dateisystem vom Typ ext3 (ext2 + Journal) haben möchtest, dann ist

tune2fs -j /dev/hdb1

für alle Partitionen und Dateisysteme auszuführen, die auf der Festplatte eingerichtet wurden.

5. Im nächsten Schritt ist ein Mountpoint zu erstellen, an dem die neue Festplatte gemountet werden soll. Das kann so geschehen: mkdir /dir

Das neue Dateisystem kann dann mit folgendem Befehl getestet werden:

mount /dev/hdc1 /dir -t ext3

Mit folgendem Befehl kann das Dateisystem wieder unmounted werden:

umount /dir

6. Zum Schluss ist noch ein Eintrag in /etc/fstab zu erstellen, der das neue Dateisystem beschreibt und es ermöglicht, dass es beim Booten des Rechners automatisch gemounted werden kann. Dies kann dann mit dem Befehl mount all

getestet werden.

In der fstab ist eine Zeile ähnlich dieser hinzuzufügen:

/dev/hdX# /dir/to/mount extY defaults 0 1

Dabei entspricht das X dem Buchstaben aus der o.g. Liste und # der Partitionsnummer. Y bezeichnet den Typ des Dateisystems (z.B. 2 für ext2 und 3 für ext3).

RPM Pakete unter ubuntu/debian installieren

# apt-get update
# apt-get install alien
#alien -k file.rpm

Die -k Option dient dazu, daß alien die Versionsnummer des Paketes nicht verändert. Ansonsten fügt alien ein “l” der Versionsnummer hinzu.

#dpkg -i name-of-deb-file.deb

Verzeichniss mit Tar und GZIP archivieren und komprimieren

Endung: “tar”

Archive mit der Endung “tar” sind reine Zusammenfassungen von Dateien. Es wird die Verzeichnisstruktur gespeichert, der Inhalt aber nicht komprimiert. Weiterhin werden in einem Tar-Archiv zu jeder Datei die Rechte und Eigentümer gespeichert. Daher ist “tar” das bevorzugte Archivformat unter Linux bzw. Unix.

Ein “tar”-Archiv wird mit folgendem Befehl ausgepackt:

tar xfv [ARCHIVNAME].tar

Die Optionen bedeuten folgendes: “x” steht für extract, also auspacken, “f” für file (aus einer Datei) und “v” für verbose (gesprächig). Verwendet man statt “x” ein “c” (create), kann man Verzeichnis und/oder Dateien einpacken und ein eigenes Archiv erzeugen.

tar cfv [ARCHIVNAME].tar [VERZEICHNIS1] [VERZEICHNIS2] [DATEI1] [DATEI2]

Möchtest du dir den Inhalt eines Archives auflisten lassen, so verwendest du den Schalter “t”:

tar tfv [ARCHIVNAME].tar

Endung: “gz”

Eine Datei mit der Endung “gz” steht für eine mit gzip komprimierte Datei. Es kann jedoch nur eine einzige Datei komprimiert werden. Wenn du mehrere Dateien komprimieren möchtest, musst du aus diesen erst einmal ein Archiv erstellen (siehe oben). Der folgende Befehl komprimiert eine Datei:

gzip [DATEINAME]

Als Ergebnis erhält man die Datei namens “[DATEINAME].gz”. Genauso einfach kann man diese wieder dekomprimieren:

gunzip [DATEINAME].gz

Das Ergebnis ist wieder der ursprüngliche Dateiname [DATEINAME]. Das tar-Kommando kann übrigens komprimierte Archive erzeugen bzw. entpacken:

tar cfvz [ARCHIV].tar.gz [VERZEICHNIS1] [DATEI1]
tar xfvz [ARCHIV].tar.gz

Manchmal findet man übrigens Archive mit der Endung “tgz”. Das ist jedoch nichts anderes als “tar.gz”.

Endung: “bz2”

Die Handhabung einer Datei mit der Endung “bz2” verhält sich ähnlich wie bei einer “gz”-Endung. Der Vorteil von “bz2” sind die bedeutend kleineren Dateien. Beim Linux-Kernel oder ISO-Images sind es einige MB. Der folgende Befehl komprimiert eine Datei:

bzip2 [DATEI]

Das Ergebnis ist eine Datei namens “[DATEI].bz2”. Das Dekomprimieren funktioniert ähnlich:

bunzip2 [DATEI].bz2

Das tar-Kommando kann das Zusammenfassen und Komprimieren bzw. Dekomprimieren und Auspacken auch in einem Schritt erledigen:

tar cfvj [ARCHIV].tar.bz2 [VERZEICHNIS1] [DATEI1]
tar xfvj [ARCHIV].tar.bz2

Sollte das Entpacken einer *.tar.gz Datei mit dem tar-Kommando nicht funktionieren, gibt es auch noch eine andere, aber kompliziertere Möglichkeit:

gzip -dc [DATEI].tar.gz | tar xfv -

Der erste Befehl dekomprimiert die Datei und schickt das Ergebnis auf die sogenannte “Pipe”. Das tar-Kommando greift sich von dieser “Pipe” die Daten und entpackt diese. Die “Pipe” kann man sich wie eine Zwischenablage vorstellen.

Hinweis: Wenn man beim Kommando “tar” ein Minus vor die Optionen setzt, dann wird die Angabe für den Dateinamen (“f”) als letztes erwartet, z. B. “tar -xvzf datei.tgz”. Andernfalls gibt es eine Fehlermeldung.

Endung: “zip”

ZIP-Dateien wurden und werden noch immer hauptsächlich unter DOS bzw. Windows verwendet. Zum Datenaustausch zwischen Linux und Windows sollte dieses Format bevorzugt werden. Der folgende Befehl komprimiert einzelne Dateien:

zip [ARCHIV].zip [DATEI1] [DATEI2]

Möchte man hingegen Dateien in einer kompletten Verzeichnisstruktur archivieren, so lautet das Kommando:

zip -r [ARCHIV].zip [VERZEICHNIS1] [VERZEICHNIS2]

Mit dem folgenden Befehl kann man sich den Inhalt eines ZIP-Archivs ausgeben lassen:

unzip -l [ARCHIV].zip

Zuguterletzt kann ein ZIP-Archiv auch wieder entpackt werden:

unzip [ARCHIV].zip

Der ZIP-Algorithmus wird beispielsweise von OpenOffice.org verwendet, um die XML-Daten zu komprimieren.

Ubuntu HA-Cluster mit DRBD und Heartbeat

einfache Grundconfig für einen 2Node Cluster mit Apache2 Mysql PHP5

apt-get install heartbeat drbd8-utils
apt-get install apache2 php5 mysqlserver libapache2-mod-php5

DRBD

drbd.conf
nano /etc/drbd.conf
global {
   usage-count yes;
}
common {
 syncer {
   rate 100M;
 }
}
resource web {
 protocol C;
 handlers {
 pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
 pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
 local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
#  outdate-peer "/usr/sbin/drbd-peer-outdater";
 }
 startup {
   wfc-timeout         0;  ## Infinite!
   degr-wfc-timeout  120;  ## 2 minutes.
 }
 disk {
   on-io-error detach;
 }
 net {
   # timeout           60;
   # connect-int       10;
   # ping-int          10;
   # max-buffers     2048;
   # max-epoch-size  2048;
   # on-disconnect-reconnect;
  after-sb-0pri discard-younger-primary;
  after-sb-1pri consensus;
  after-sb-2pri disconnect;
  rr-conflict disconnect;
# allow-two-primaries;
 }
 syncer {
   rate 100M;
   al-extents 257;
 }
 on ha1 {
   device     /dev/drbd0;
   disk       /dev/sdb;
   address    192.168.0.1:7788;
   flexible-meta-disk  internal;
 }
 on ha2 {
   device     /dev/drbd0;
   disk       /dev/sdb;
   address    192.168.0.2:7788;
   flexible-meta-disk  internal;
 }
}
Hinweis

allow-two-primaries; sagt aus das zwei paralelle Zugriffe auf das DRBD Device möglich sind. Dabei schreiben die Nodes jeweils erstmal in ihre Metadata d.h. die Nodes haben auf ihren Bereich exclusiven Zugriff. Es ist nur eine erweiterte Option für ein aktive/aktive Setup.

DRDB Autostart

Muss nicht sein hat sich bei mir aber als gute brauchbare Lösung herausgestellt.

nano /etc/init.d/mountdrbd.sh

auf der 1. Node

#!/bin/bash
drbdadm primary web
mount /dev/drbd0 /pfad/zu/Mountpoint

auf der 2. Node

#!/bin/bash
drbdadm secondary web

Das ganze muss noch ausführbar gemacht werden und verlinkt werden nach:

sudo chmod +x /etc/init.d/mountdrbd.sh
sudo ln -s /etc/init.d/mountdrbd.sh /etc/rc2.d/S99mountdrbd.sh
Test DRBD

Nach einem Neustart kann man nun sehen ob die gemachten Einstellungen funktionieren.

cat /proc/drbd

sollte folgendes auf der Primären Node liefern:

version: 8.0.11 (api:86/proto:86)
GIT-hash: b3fe2bdfd3b9f7c2f923186883eb9e2a0d3a5b1b build by phil@mescal, 2008-02-12 11:56:43
0: cs:Connected st:Primary/Secundary ds:UpToDate/UpToDate C r---
   ns:257 nr:257 dw:515 dr:609 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
       resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
       act_log: used:0/257 hits:27 misses:0 starving:0 dirty:0 changed:0

auf der Sekundären:

 

version: 8.0.11 (api:86/proto:86)
GIT-hash: b3fe2bdfd3b9f7c2f923186883eb9e2a0d3a5b1b build by phil@mescal, 2008-02-12 11:56:43
0: cs:Connected st:Secundary/Primary ds:UpToDate/UpToDate C r---
   ns:257 nr:257 dw:515 dr:609 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
       resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
       act_log: used:0/257 hits:27 misses:0 starving:0 dirty:0 changed:0

Heartbeat

ha.cf
nano /etc/ha.d/ha.cf
logfile         /var/log/ha-log
logfacility     local0
udpport         694
keepalive       1
deadtime        10
warntime        5
initdead        15
bcast           eth0
#deadping       10
node            ha1 ha2
crm             off
#auto_failback  on
#respawn root   /usr/lib/heartbeat/ipfail

Autofailback also die Funktion das die Resourcen wieder auf die primäre Node “zurückwandern” scheint nicht zu funktionieren. Deswegen habe ich diese Funktion auskommentiert.

haresources
nano /etc/ha.d/haresources
  • 10.16.0.52 ist die IP des Clusters d.h die IP-Adresse unter der, der Apache Service zu erreichen ist.
  • ha1 ist eigentlich der Name der primären Node (für autofailback).
  • drbddisk::web ist das DRBD Device welches als Resource im Cluster benutzt wird.
  • hinter Filesystem steht das DRBD Device sowie dessen Mountpoint und die Art Filesystem
  • apache2 ist der Dienst der geclustert werden soll.

Auf beiden Nodes:

ha1     10.16.0.52      drbddisk::web Filesystem::/dev/drbd0::/home/data::xfs apache2
authkeys
nano /etc/ha.d/authkeys
auth 3
3 md5 dein-Super-geheimes-passwort

Die Datei authkeys braucht dann noch:

chmod 600 /etc/ha.d/authkeys

Test Gesamtkonfiguraton

Nun kann getestet werden mit:

/etc/init.d/heartbeat stop

Wenn man nun auf der anderen Node schaut:

ps -ef |grep apache

läuft der Apache nun hier.

www-data  6343  6342  0 14:00 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  6345  6342  0 14:00 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  6350  6342  0 14:00 ?        00:00:00 /usr/sbin/apache2 -k start
root      6459  5144  0 14:27 pts/0    00:00:00 grep apache

und die virtuelle IP-Adresse des Cluster befindet sich nun auf der zweiten Node.

ifconfig
eth0:0    Link encap:Ethernet  HWaddr 00:0c:29:11:b3:c6
          inet addr:10.16.0.52  Bcast:10.16.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:17 Base address:0x2000

Das nützt uns so aber noch nichts sondern wir wollen ja das Umswitchen der Nodes wenn z.B. auf einer das Netz also eth0 weg ist. Also auf der aktiven Node:

ifconfig eth0 down

und der Apache und die virtuelle Adresse ziehen um.

 

Crontab

User Crontab

auflisten des User Crontabs

crontab -l

min hour day month weekday   command
*   10   *   *     *        /etc/cron.d/backup

Ändern des User Crontabs

crontab -e

min hour day month weekday   command
*   10   *   *     *        /etc/cron.d/backup

Systemweiter Crontab

nano /etc/crontab

min hour day month weekday   user    command

17   *    *   *      *       root    cd / && run-parts --report /etc/cron.hourly
25   6    *   *      *       root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47   6    *   *      7       root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52   6    1   *      *       root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

 

Beispiele

Wenn man z.B ein Backup jeden Tag un 23.30 Uhr laufen lassen will sieht der Crontab so aus:

min hour day month weekday   command
30   23   *   *      *       /home/backup/tar-backup

30 steht für eine halbe Stunde

weiterlesen …