Installera redundant Xymonövervakning med HA genom GlusterFS och Heartbeat i CentOS

Jag har tidigare visat hur man installerar GlusterFS på två servrar eller mer. Nu tänkte jag visa hur man kan använda en GlusterFSvolym tillsammans med Heartbeat för att sätta upp övervakningsverktyget Xymon.

Börja med att skapa en volym i GlusterFS, jag gjorde en på 100 GB, det borde räcka för att övervaka några tusen noder och spara all historik länge (flera år). Jag kallar min volym för xyvol och den server jag monterar volymen ifrån  glustersrv1 vilket kommer synas i kommandona nedan.

Nu behöver du två servrar med CentOS på, se till att ha ip-adresserna för de båda servrarna tillgängliga samt ytterligare en ip-adress som de ska dela på. Kör sedan kommandona nedan på båda servrarna.

Börja med att skapa en användare och lite kataloger som behövs samt montera glustervolymen under /opt/xymon:

groupadd xyserver
useradd -g xyserver -m -d /opt/xymon xyserver
mkdir /var/run/xyserver
chown xyserver:xyserver /var/run/xyserver
echo 'glustersrv1:/xyvol /opt/xymon glusterfs defaults,_netdev 0 0
' >> /etc/fstab
mount -a

Installera sedan apache och de beroenden vi behöver för att kunna bygga våra paket längre fram:

yum install gcc make httpd mod_ssl pango-devel libxml2-devel pcre-devel openssl-devel openldap-devel

 

Två paket vi behöver är rrdtool och fping så vi bygger dem så här:

wget http://fping.org/dist/fping-3.2.tar.gz
tar xfv fping-3.2.tar.gz
cd fping-3.2
./configure
make && make install
cd ..
chmod +xs /usr/local/sbin/fping
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.8.tar.gz
tar xfv rrdtool-1.4.8.tar.gz
cd rrdtool-1.4.8
./configure
make && make install
cd ..

Här näst kan vi installera Xymon, du behöver ladda hem filen på nått bra sätt efterson sourceforge inte tillåter direktlänkar så överlåter jag det med varm hand åt läsaren. Här finns filen iaf:  http://downloads.sourceforge.net/project/xymon/Xymon/4.3.17/xymon-4.3.17.tar.gz

Nu kan du packa upp och bygga servern, det behöver du dock bara göra på ena servern eftersom du ju ska lägga filerna på en delad volym. Du kommer behöva besvara frågor från configureskriptet, kom i håg att  xyserver iäranvändaren som ska köra server och att installationskatalogen ska vara  /opt/xymon. När du får fråga om serverns ip-nummer ska du ange den delade ip-adressen du förberett och som du kommer konfigurera med Heartbeat senare :

tar xfv xymon-4.3.17.tar.gz
cd xymon-4.3.17
./configure.server
make && make install

Nu kan du kopiera konfen för apache till rätt ställe, det här behöver du göra på båda servrarna:

cp /opt/xymon/server/etc/xymon-apache.conf /etc/httpd/conf.d/

 

Kör:

vi /etc/init.d/xyserver

och klistra in detta

#!/bin/bash
#
# chkconfig: - 80 20
# description: Xymon is a network monitoring tool that can monitor hosts \
#               and services and shows monitor status via a webpage.
#
# processname: xyserver
#
### BEGIN INIT INFO
# Provides: xyserver
# Default-Start:
# Default-Stop: 0 1 2 3 4 5 6
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Short-Description: start and stop xymon
# Description: Xymon is a network monitoring tool that can monitor hosts
#              and services and shows monitor status via a webpage.
### END INIT INFO
USER=xyserver
SCRIPT=/opt/xymon/server/xymon.sh
function call_script {
	su - $USER -c "$SCRIPT $1"
}
case "$1" in
	"start")
		call_script $1
		;;
	"stop")
		call_script $1
		;;
	"restart")
		call_script $1
		;;
	"reload")
		call_script $1
		;;
	"status")
		call_script $1
		;;
	"rotate")
		call_script $1
		;;
	*)
        echo "Usage: $0 start|stop|restart|reload|status|rotate"
        ;;
esac

Kör sedan:

chmod +x /etc/init.d/xyserver

I filerna /opt/xymon/server/xymon.sh och /opt/xymon/server/etc/tasks.cfg måste du nu ändra så att sökvägen till alla pid-filer ändras till  /var/run/xyserver, det funkar inge bra att ha dem på den delade volymen.

Nu kan du sätta upp Heartbeat så att du får en delad ip-adress att köra Xymonservern på. Instruktioner för att sätt upp Heartbeat kan du hitta här: http://www.howtoforge.com/high_availability_heartbeat_centos. Följ instruktionerna och sätt upp den delade ip-adressen, glöm inte att lägga till både httpd och xyserver som resurser i ditt kluster.

Klart!

Nu kan du faila över din Xymoninstallation mellan noderna och alltid ha din övervakningsserver tillgänglig.

 

Säkra upp din GlusterFS installation

Jag har tidigare gått igenom hur man sätter upp ett replikerat filsystem med GlusterFS och även noterat hur man gör för att lägga till och ta bort servrar ur konfigurationen.

Hur gör man då när man har ett klustrat filsystem, men inte vill att kreti och pleti skall kunna ansluta till det? Jo, fär att hindra att andra servrar går med i klustert gör man så här på en av de ingående klusternoderna:

gluster volume set replvolume auth.allow 10.0.0.100,10.0.0.101,10.0.0.102

Om man även vill hindra klienter från att ansluta utan tillåtelse måste man använda en brandvägg så som iptables. Varje brick får sin egen port, så det är ganksa enkelt att fixa. Kolla först vilken port din brick använder:

[root@glustersrv1 ~]# gluster volume status replvolume
Status of volume: replvolume
Gluster process                                         Port    Online  Pid
------------------------------------------------------------------------------
Brick glustersrv1:/export/sdb1/brick                  49152   Y       3218
Brick glustersrv3:/export/sdb1/brick                  49152   Y       4387
NFS Server on localhost                                 2049    Y       23745
Self-heal Daemon on localhost                           N/A     Y       23752
NFS Server on glustersrv3                             2049    Y       4659
Self-heal Daemon on glustersrv3                       N/A     Y       4667

Här ovan är det alltså 49152 som används, så börja med att tillåta dina legitima klienter: (i det här fallet 10.0.0.200 och 10.0.0.201):

iptables -A INPUT -p tcp --dport 49152 -s 10.0.0.200  -j ACCEPT
iptables -A INPUT -p tcp --dport 49152 -s 10.0.0.201  -j ACCEPT

När det är klart kan du börja blocka:

iptables -A INPUT -p tcp --dport 49152 -s 10.0.0.0/24  -j REJECT

Du behöver göra det här på alla ingående servrar.

Lägg till och ta bort bricks i GlusterFS

Förra veckan gick jag igenom hur man kan sätta upp ett replikerat filsystem med GlusterFS. Om du behöver lägga till ytterligare en server i den setupen visar det sig vara mycket enkelt:

gluster volume add-brick replvolume replica 3 glustersrv3:/export/sdb1/brick

Notera här hur jag räknar upp antalet replicas till tre från förra veckans två, missar du det kommer det inte att funka.

Säg att du nu behöver ta bort glustersrv2 från ditt klustrade filsystem, då gör du bara så här:

gluster volume remove-brick replvolume replica 2 glustersrv2:/export/sdb1/brick
gluster peer detach glustersrv2

Notera återigen hur jag nu räknar ned antalet replicas. Klart! Du har nu lagt till en server och tagit bort en annan .

WIFI-problem på Samsung Galaxy S4

Jag har en Samsung Galaxy S4 som håller på att driva mig till vansinne med sina WIFI-problem. Problemen består i att den tappar uppkopplingen inom ramen för några sekunder och alltså ständigt håller på att koppla upp och ned utan att egentligen någon gång vara uppkopplad. You see the problem, right?

Så jag har testat både det ena och det andra på både min telefon och router, men det som tillslut verkar ha löst problemet var att på min router (en Netgear WNR3500L med Tomato Firmware) stänga av WMM, Wireless Multimedia Extensions. Det hjälper ju mig inte på jobbet, eller nån annanstans och Samsung borde verkligen fixa sin telefon, men nu är den iaf användbar när jag är hemma.

Installera GlusterFS i Centos 6.4

GlusterFs är ett väldigt coolt replikerat filsystem. Det innebär att du kan ha dina filer spridda över flera filservrar och därmed alltid ha dina filer tillgängliga även om en server skulle gå ned.

Så här gör du för att installera GlusterFS på två servrar, här nedan kallade glustersrv1.example.com (10.0.0.100) och glustersrv2.example.com (10.0.0.101) samt en klient kallad glusterclient1.example.com (10.0.0.200). Servrarna har var sin tillgänglig extra disk kallad /dev/sdb där vi kommer lägga upp en brick. Den version som installeras här är GlusterFs 3.4.1-3, om du vill installera en annan version, t.ex. om det kommit en nyare version när du läser den här bloggposten får du anpassa kommandona nedan för detta.

 

Börja med att fixa lagringsytan som Gluster ska användas, denna kallas med Glustertermer för en brick, detta görs på båda servrarna:

yum install xfsprogs
fdisk /dev/sdb #Skapa en stor partition här bara
mkfs.xfs -i size=512 /dev/sdb1
mkdir -p /export/sdb1 && mount /dev/sdb1 /export/sdb1 && mkdir /export/sdb1/brick
echo "/dev/sdb1 /export/sdb1 xfs defaults 0 0"  >> /etc/fstab

installera sedan själva glusterfs-mjukvaran, detta görs på båda servrarna:

mkdir gluster_rpms
cd gluster_rpms/
wget -l 1 -nd -nc -r -A.rpm http://download.gluster.org/pub/gluster/glusterfs/LATEST/RHEL/epel-6.4/x86_64/
yum localinstall glusterfs-3.4.1-3.el6.x86_64.rpm glusterfs-fuse-3.4.1-3.el6.x86_64.rpm glusterfs-geo-replication-3.4.1-3.el6.x86_64.rpm glusterfs-server-3.4.1-3.el6.x86_64.rpm glusterfs-libs-3.4.1-3.el6.x86_64.rpm glusterfs-cli-3.4.1-3.el6.x86_64.rpm
service glusterd start
chkconfig glusterd on
chkconfig glusterfsd on

Från glustersrv1.example.com ska du nu göra lite konfiguration:

gluster peer probe 10.0.0.101
gluster volume create replvolume rep 2 transport tcp glustersrv1:/export/sdb1/brick glustersrv2:/export/sdb1/brick
gluster volume start replvolume

På glusterclient1.example.com kan du nu installera den mjukvara du behöver där samt montera den replikerade volymen:

mkdir gluster_rpms
cd gluster_rpms/
wget -l 1 -nd -nc -r -A.rpm http://download.gluster.org/pub/gluster/glusterfs/LATEST/RHEL/epel-6.4/x86_64/
yum localinstall glusterfs-fuse-3.4.1-3.el6.x86_64.rpm glusterfs-3.4.1-3.el6.x86_64.rpm glusterfs-libs-3.4.1-3.el6.x86_64.rpm
mkdir /mnt/gluster
mount -t glusterfs glustersrv1:/replvolume /mnt/gluster

Nu är du klar och kan glatt lägga till fler klienter om du behöver.Notera att även om du monterat klienten mot en av servrarna kommer allt att fortsätta funka även om just den servern går ned. Om en server går sönder kommer den automatiskt att replikera sig tillbaka så att servrarna innehåller samma information när den kommer upp igen. Du kommer heller inte ha problem med split-brain, även om servrarna inte kan prata med varandra, så länge åtminstonne en klient kan prata med båda servrarna. Du kan även se till att servrarna stänger ned sig själva om de skulle bli ensamma och inte ha majoritet i klustret genom att använda en feature som heter server quorum. Detta har jag dock inte testat själv.

 

Instruktionerna har anpassats härifrån:

Switch to our mobile site

Page optimized by WP Minify WordPress Plugin