Schlagwort-Archive: centos

[centos] httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: Permission denied

Bei einem neu aufgesetzten centos System und nach ein wenig Konfiguration hier und da, bekam ich beim starten des Apache folgende Meldung:

/etc/init.d/httpd start
httpd starten: httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: Permission denied [FEHLGESCHLAGEN]

Das Problem ließ sich schnell lösen in dem ich selinux deaktivierte.
Einfach in der Datei /etc/sysconfig/selinux die Zeile SELINUX=enforcing auf SELINUX=disabled ändern und den Server neustarten.

brbd unter centos installieren

Angenommen man betreibt einen kleinen Server auf dem Daten abgelegt werden, diese werden zur Sicherheit auf zum Beispiel einem Raid abgelegt. Nun sollen die abgelegten Daten beim Ausfall des Server schnellstmöglich auf einem anderen System zur Verfügung stehen. Eine Möglichkeit die Daten auf den anderen Server zu kopieren wäre ein cronjob der alle x Minuten rsync ausführt. Eine weitaus bessere Lösung ist drbd.
Grob gesagt ist drbd ein Raid zwischen zwei Servern und wer mehr darüber wissen möchte, sollte sich die Seite http://www.drbd.org/ anschauen.

Zunächst muss unter centos das Repository installiert werden:
rpm -Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
Im Anschluss die benötigten Programme installieren
yum install drbd84 kmod-drbd84

Für das drbd device habe ich auf beiden Servern(drbd1,drbd2) /dev/sdb angelegt und die Netzwerkkarten eth1 über ein Crossover Kabel miteinander verbunden.

Die Konfiguration des drbd Device erfolgt in der Datei /etc/drbd.d/data.res:

resource data {
net{
csums-alg md5;
}
disk {
resync-rate 40M;
}
on drbd1 {
device /dev/drbd1;
disk /dev/sdb;
address 192.168.1.1:7789;
meta-disk internal;
}
on drbd2 {
device /dev/drbd1;
disk /dev/sdb;
address 192.168.1.2:7789;
meta-disk internal;
}
}

Dann die drbd devices auf beiden Servern initialisieren:
drbdadm create-md data

Ausgabe:
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
success

Im Anschluss das drbd auf beiden Servern starten /etc/init.d/drbd start und das Device aktivieren drbdadm up data.

Über cat /proc/drbd kann man feststellen ob die beiden drbd’s miteinander verbunden sind.
cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r—–

Sollte dort anstatt Connected WFConnection stehen, konnte keine Verbindung hergestellt werden.

Zum Schluss muss auf einem der Server das drbd device als primary gesetzt werden, automatisch startet dann die Synchronisierung.

drbdadm primary --force data

Die Ausgabe von cat /proc/drbd sieht dann wie folgt aus
1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:70296 al:0 bm:4 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:10415772
[>....................] sync'ed: 0.8% (10168/10236)M
finish: 0:02:28 speed: 69,632 (69,632) K/sec

Während die Synchronisierung läuft, kann bereits das Dateisystem auf gewohntem Weg (mkfs.ext4 /dev/drbd1) formatiert werden.

Nach der Formatierung kann das drbd device gemountet und genutzt werden.

drbd Resource auf dem anderen Server mounten

Möchte man das drbd Device auf dem anderen Server mounten, muß man es zunächst unmounten und das drbd device von Primary auf Secondary setzen.

umount /dev/drbd1
drbdadmin secondary data

Nun kann auf dem zweiten Server das drbd Device als primary gesetzt und gemounted werden.

Anmerkung
Ich bin in dem kleinen Artikel nicht auf die Iptables eingegangen, diese müssen natürlich auch entsprechend angepasst werden.
Demnächst werde ich einen Artikel erstellen in dem es darum geht, das eine Clustersoftware das setzen des Primary drbd device und das mounten übernimmt.

[Centos] neue virtuelle Festplatte ohne Neustart einlesen

Bei virtuellen Maschinen lässt sich im laufenden Betrieb eine weitere Festplatte hinzufügen. Damit dass Betriebssystem, in diesem Fall centos, die Festplatte erkennt ist kein Neustart erforderlich. Ein einfacher rescan reicht dafür aus.

echo "- - -" > /sys/class/scsi_host/host#/scan

# steht für den SCSI Controller zum Beispiel 0 1 2

Im Anschluss kann die Festplatte in centos eingebunden werden.

[cronjobs] werden mit falscher Zeichenkodierung ausgeführt

Angenommen ein Server hat die Zeichenkodierung de_DE.UTF-8, ein auszuführendes Shellscript muss jedoch mit der Zeichenkodierung de_DE.ISO-8859-1 laufen.

Die Lösung ist sehr einfach. In dem auszuführenden Script muss folgende Zeile am Anfang stehen:

export LANG=de_DE.ISO-8859-1

Cronjobs
Wenn ein oder mehrere Shellscripte als cronjob gestartet werden, kann die Zeichenkodierung auch in der /etc/environment hinterlegt werden. Damit entfällt die Angabe der Zeichenkodierung in dem Shellscript.

Probleme bei der Installation von java 1.7

Beim installieren einer neueren Java Version habe ich folgende Fehlermeldung bekommen:

Datei /etc/init.d/jexec aus der Installation von jdk-2000:1.7.0-fcs.x86_64 kollidiert mit der Datei aus dem Paket jdk-2000:1.6.0_33-fcs.x86_64

Die neuere Version ließ sich jedoch installieren mit der Angabe --force , Probleme gab es im nachhinein nicht.

rpm -ivh --force jdk-7-linux-x64.rpm