Deux DHCP

Le
titi
Bonjour,

Est il possible pour pallier à un éventuel dysfonctionnement d'un serveur
DHCP, d'avoir un deuxième DHCP en service avec les mêmes caractèristiques ?

Je pense que non, on doit pouvoir le préparer, mais pas l'activer.

Pourriez vous me le confirmer ? (J'ai un petit conflit avec un collègue, qui
lui dit que c'est possible).

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques Barathon [MS]
Le #536958
"titi" news:
Bonjour,

Est il possible pour pallier à un éventuel dysfonctionnement d'un serveur
DHCP, d'avoir un deuxième DHCP en service avec les mêmes caractèristiques
?


Si les deux serveurs ont exactement les mêmes caractéristiques, il y aura
conflit. Tel que vous le décrivez, c'est donc plutôt déconseillé.

Je pense que non, on doit pouvoir le préparer, mais pas l'activer.


En effet, une solution consiste à avoir un service DHCP configuré à
l'identique de celui en production, prêt à être activé en cas de besoin.
L'activation du service de secours peut être manuelle, ou bien scriptable si
on a un système de surveillance qui détecte automatiquement l'arrêt du
service principal.

Une autre technique consiste à avoir deux DHCP en service, chacun servant
une partie de la plage d'adresses nécessaire. L'important étant qu'il n'y
ait aucun chevauchement pour éviter l'attribution d'une même adresse à deux
postes. Le fait d'avoir deux serveurs en production limite l'impact d'une
panne.

On peut aussi, dans le cas où on a besoin d'une très grande disponibilité,
configurer le service DHCP en cluster (MSCS) pour avoir un basculement
automatique du service d'un noeud à l'autre du cluster, mais cela requiert
une configuration matérielle particulière. Dans la plupart des cas cette
solution se révèlera trop onéreuse alors que les solutions décrites
ci-dessus suffiront à couvrir les besoins de l'entreprise.

Jacques

titi
Le #536957
Bonsoir,

Merci pour ces infos.

Auriez vous des détails sur ce que vous dites : "bien scriptable si
on a un système de surveillance qui détecte automatiquement l'arrêt du
service principal."


Comment cela peut il se faire ?

Merci



"titi" news:
Bonjour,

Est il possible pour pallier à un éventuel dysfonctionnement d'un serveur
DHCP, d'avoir un deuxième DHCP en service avec les mêmes caractèristiques
?


Si les deux serveurs ont exactement les mêmes caractéristiques, il y aura
conflit. Tel que vous le décrivez, c'est donc plutôt déconseillé.

Je pense que non, on doit pouvoir le préparer, mais pas l'activer.


En effet, une solution consiste à avoir un service DHCP configuré à
l'identique de celui en production, prêt à être activé en cas de besoin.
L'activation du service de secours peut être manuelle, ou bien scriptable si
on a un système de surveillance qui détecte automatiquement l'arrêt du
service principal.

Une autre technique consiste à avoir deux DHCP en service, chacun servant
une partie de la plage d'adresses nécessaire. L'important étant qu'il n'y
ait aucun chevauchement pour éviter l'attribution d'une même adresse à deux
postes. Le fait d'avoir deux serveurs en production limite l'impact d'une
panne.

On peut aussi, dans le cas où on a besoin d'une très grande disponibilité,
configurer le service DHCP en cluster (MSCS) pour avoir un basculement
automatique du service d'un noeud à l'autre du cluster, mais cela requiert
une configuration matérielle particulière. Dans la plupart des cas cette
solution se révèlera trop onéreuse alors que les solutions décrites
ci-dessus suffiront à couvrir les besoins de l'entreprise.

Jacques





Jacques Barathon [MS]
Le #536954
"titi" news:
Bonsoir,

Merci pour ces infos.

Auriez vous des détails sur ce que vous dites : "bien scriptable si
on a un système de surveillance qui détecte automatiquement l'arrêt du
service principal."


Comment cela peut il se faire ?


Le principe est simple: à partir d'un poste d'observation (le poste d'un
administrateur, ou un serveur utilisé pour surveiller les autres serveurs)
on interroge l'état du service DHCP sur le serveur principal. Si l'état
renvoyé indique que le service est arrêté, on démarre le service sur le
serveur secondaire. Voici ce que ça peut donner en batch:

--- test-dhcp.cmd ---
set SRV1=SRV-DC-01
set SRV2=SRV-DC-02

:test
set DHCP for /f "tokens=4" %%s in ('sc \%SRV1% query dhcpsrv^|find "STATE"') do set
DHCP=%%s
if not (%DHCP%)==(RUNNING) do goto failover
for /l %%a in (1,1,100000) do @echo>nul
goto test

:failover
echo Démarrage du service DHCP sur %SRV2%...
sc \%SRV2% start dhcpsrv
--- fin de fichier ---

Quelques réserves:

* J'utilise la commande SC.EXE pour interroger ou modifier les services.
Cette commande est disponible en standard sous Windows XP, Windows Server
2003 et Windows Vista. Si tu utilises un système antérieur, il faudra que tu
installes les outils d'un Resource Kit de Windows, plusieurs sont
disponibles sur le site de Microsoft.

* N'ayant pas de service DHCP sous la main, je suppose que le petit nom du
service est dhcpsrv, à vérifier avant de tester le script. Mes tests se sont
limités à vérifier la mécanique de vérification d'un service et le passage
d'une section du script à l'autre.

* Le mode de récurrence de ce script est très rustique. Windows n'intègre
pas de commande en ligne permettant de temporiser avant de poursuivre
l'exécution d'un script et j'ai contourné le problème en créant une fausse
temporisation avec une boucle qui compte de 1 à 100000 (ce qui correspond à
une pause d'environ 1 minute sur mon poste). On pourrait aussi utiliser un
produit tiers qui permettrait de faire une pause un nombre exact de secondes
ou de minutes selon le besoin - il existe des sleep.exe ou wait.exe en
pagaille sur Internet. Une autre approche pourrait consister à n'exécuter
aucune boucle dans ce script et à confier la réurrence au Planificateur de
tâches de Windows.

* Ce script se contente de tester environ toutes les minutes si le service
est 'RUNNING' (démarré) sur le serveur principal, et si ce n'est pas le cas
il démarre le service sur le serveur secondaire. Rien d'autre n'est fait, si
ce n'est un affichage lorsque le service est démarré sur le serveur
secondaire. On pourrait envisager d'ajouter une notification par email (voir
par exemple l'outil blat.exe disponible sur Internet pour envoyer des emails
en ligne de commande). On pourrait également étendre le script pour qu'une
fois le service démarré sur le serveur secondaire il y ait une 2e phase de
vérification du service sur le serveur principal: si le service est à
nouveau démarré, il faut alors arrêter le service sur le serveur secondaire.
Cette phase pourrait avoir une temporisation plus courte - du genre 10 ou
20s - pour éviter que les deux services soient actifs en même temps.

L'exemple ci-dessus était en batch, mais si tu veux te lancer dans
l'écriture de scripts d'administration, je te conseille de regarder plutôt
l'environnement Windows PowerShell, téléchargeable gratuitement sur le site
de Microsoft. Le langage de PowerShell est beaucoup plus perfectionné et
parfaitement adapté à ce type de script. L'adaptation du script ci-dessus
donnerait quelque chose comme ceci:

--- test-dhcp.ps1 ---
$srv1 = "SRV-DC-01"
$srv2 = "SRV-DC-02"

while ($true) {
$dhcp1 = [Wmi]"\$srv1rootcimv2:win32_service.Name='DhcpSrv'"
if ($dhcp1.State -ne "Running") {
break
}
start-sleep 60
}

"Démarrage du service DHCP sur $srv2..."
$dhcp2 = [Wmi]"\$srv2rootcimv2:win32_service.Name='DhcpSrv'"
$dhcp2.StartService()
--- fin de fichier ---

Même réserve que précédemment sur le nom du service - DhcpSrv - à vérifier.

Si vous souhaitez continuer la discussion sur le sujet du scripting pour
l'administration de vos serveurs, je vous conseille le forum
microsoft.public.fr.scripting, en général assez pointu sur le sujet.

Jacques


titi
Le #536953
Un grand merci.
Je vais essayer de mettre cela en pratique.


"titi" news:
Bonsoir,

Merci pour ces infos.

Auriez vous des détails sur ce que vous dites : "bien scriptable si
on a un système de surveillance qui détecte automatiquement l'arrêt du
service principal."


Comment cela peut il se faire ?


Le principe est simple: à partir d'un poste d'observation (le poste d'un
administrateur, ou un serveur utilisé pour surveiller les autres serveurs)
on interroge l'état du service DHCP sur le serveur principal. Si l'état
renvoyé indique que le service est arrêté, on démarre le service sur le
serveur secondaire. Voici ce que ça peut donner en batch:

--- test-dhcp.cmd ---
set SRV1=SRV-DC-01
set SRV2=SRV-DC-02

:test
set DHCP > for /f "tokens=4" %%s in ('sc \%SRV1% query dhcpsrv^|find "STATE"') do set
DHCP=%%s
if not (%DHCP%)==(RUNNING) do goto failover
for /l %%a in (1,1,100000) do @echo>nul
goto test

:failover
echo Démarrage du service DHCP sur %SRV2%...
sc \%SRV2% start dhcpsrv
--- fin de fichier ---

Quelques réserves:

* J'utilise la commande SC.EXE pour interroger ou modifier les services.
Cette commande est disponible en standard sous Windows XP, Windows Server
2003 et Windows Vista. Si tu utilises un système antérieur, il faudra que tu
installes les outils d'un Resource Kit de Windows, plusieurs sont
disponibles sur le site de Microsoft.

* N'ayant pas de service DHCP sous la main, je suppose que le petit nom du
service est dhcpsrv, à vérifier avant de tester le script. Mes tests se sont
limités à vérifier la mécanique de vérification d'un service et le passage
d'une section du script à l'autre.

* Le mode de récurrence de ce script est très rustique. Windows n'intègre
pas de commande en ligne permettant de temporiser avant de poursuivre
l'exécution d'un script et j'ai contourné le problème en créant une fausse
temporisation avec une boucle qui compte de 1 à 100000 (ce qui correspond à
une pause d'environ 1 minute sur mon poste). On pourrait aussi utiliser un
produit tiers qui permettrait de faire une pause un nombre exact de secondes
ou de minutes selon le besoin - il existe des sleep.exe ou wait.exe en
pagaille sur Internet. Une autre approche pourrait consister à n'exécuter
aucune boucle dans ce script et à confier la réurrence au Planificateur de
tâches de Windows.

* Ce script se contente de tester environ toutes les minutes si le service
est 'RUNNING' (démarré) sur le serveur principal, et si ce n'est pas le cas
il démarre le service sur le serveur secondaire. Rien d'autre n'est fait, si
ce n'est un affichage lorsque le service est démarré sur le serveur
secondaire. On pourrait envisager d'ajouter une notification par email (voir
par exemple l'outil blat.exe disponible sur Internet pour envoyer des emails
en ligne de commande). On pourrait également étendre le script pour qu'une
fois le service démarré sur le serveur secondaire il y ait une 2e phase de
vérification du service sur le serveur principal: si le service est à
nouveau démarré, il faut alors arrêter le service sur le serveur secondaire.
Cette phase pourrait avoir une temporisation plus courte - du genre 10 ou
20s - pour éviter que les deux services soient actifs en même temps.

L'exemple ci-dessus était en batch, mais si tu veux te lancer dans
l'écriture de scripts d'administration, je te conseille de regarder plutôt
l'environnement Windows PowerShell, téléchargeable gratuitement sur le site
de Microsoft. Le langage de PowerShell est beaucoup plus perfectionné et
parfaitement adapté à ce type de script. L'adaptation du script ci-dessus
donnerait quelque chose comme ceci:

--- test-dhcp.ps1 ---
$srv1 = "SRV-DC-01"
$srv2 = "SRV-DC-02"

while ($true) {
$dhcp1 = [Wmi]"\$srv1rootcimv2:win32_service.Name='DhcpSrv'"
if ($dhcp1.State -ne "Running") {
break
}
start-sleep 60
}

"Démarrage du service DHCP sur $srv2..."
$dhcp2 = [Wmi]"\$srv2rootcimv2:win32_service.Name='DhcpSrv'"
$dhcp2.StartService()
--- fin de fichier ---

Même réserve que précédemment sur le nom du service - DhcpSrv - à vérifier.

Si vous souhaitez continuer la discussion sur le sujet du scripting pour
l'administration de vos serveurs, je vous conseille le forum
microsoft.public.fr.scripting, en général assez pointu sur le sujet.

Jacques






Thierry DEMAN [MVP]
Le #536696
Bonjour,

on peut, effectivement, avoir 2 serveurs DHCP sur la même zone !!!
Même si la configuration préférable est évidemment d'avoir des tranches
réseaux différentes.

=> La solution est d'activer la détection de conflit sur CHAQUE serveur
DHCP.

C'est à dire qu'avant d'attribuer une adresse IP, le serveur DHCP vérifie
qu'elle ne soit pas en cours d'utilisation (par des ping ....).
-> Si elle est attribuée, il la marque en "bad address" et ne la proposera
plus.

De temps à autre, il faudra peut être nettoyer les "bad address"

A bientôt,
--
Thierry DEMAN-BARCELÒ
MVP Exchange, SQL/Server
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org
"titi" news:
Un grand merci.
Je vais essayer de mettre cela en pratique.


"titi" news:
Bonsoir,

Merci pour ces infos.

Auriez vous des détails sur ce que vous dites : "bien scriptable si
on a un système de surveillance qui détecte automatiquement l'arrêt du
service principal."


Comment cela peut il se faire ?


Le principe est simple: à partir d'un poste d'observation (le poste d'un
administrateur, ou un serveur utilisé pour surveiller les autres
serveurs)
on interroge l'état du service DHCP sur le serveur principal. Si l'état
renvoyé indique que le service est arrêté, on démarre le service sur le
serveur secondaire. Voici ce que ça peut donner en batch:

--- test-dhcp.cmd ---
set SRV1=SRV-DC-01
set SRV2=SRV-DC-02

:test
set DHCP >> for /f "tokens=4" %%s in ('sc \%SRV1% query dhcpsrv^|find "STATE"') do
set
DHCP=%%s
if not (%DHCP%)==(RUNNING) do goto failover
for /l %%a in (1,1,100000) do @echo>nul
goto test

:failover
echo Démarrage du service DHCP sur %SRV2%...
sc \%SRV2% start dhcpsrv
--- fin de fichier ---

Quelques réserves:

* J'utilise la commande SC.EXE pour interroger ou modifier les services.
Cette commande est disponible en standard sous Windows XP, Windows Server
2003 et Windows Vista. Si tu utilises un système antérieur, il faudra que
tu
installes les outils d'un Resource Kit de Windows, plusieurs sont
disponibles sur le site de Microsoft.

* N'ayant pas de service DHCP sous la main, je suppose que le petit nom
du
service est dhcpsrv, à vérifier avant de tester le script. Mes tests se
sont
limités à vérifier la mécanique de vérification d'un service et le
passage
d'une section du script à l'autre.

* Le mode de récurrence de ce script est très rustique. Windows n'intègre
pas de commande en ligne permettant de temporiser avant de poursuivre
l'exécution d'un script et j'ai contourné le problème en créant une
fausse
temporisation avec une boucle qui compte de 1 à 100000 (ce qui correspond
à
une pause d'environ 1 minute sur mon poste). On pourrait aussi utiliser
un
produit tiers qui permettrait de faire une pause un nombre exact de
secondes
ou de minutes selon le besoin - il existe des sleep.exe ou wait.exe en
pagaille sur Internet. Une autre approche pourrait consister à n'exécuter
aucune boucle dans ce script et à confier la réurrence au Planificateur
de
tâches de Windows.

* Ce script se contente de tester environ toutes les minutes si le
service
est 'RUNNING' (démarré) sur le serveur principal, et si ce n'est pas le
cas
il démarre le service sur le serveur secondaire. Rien d'autre n'est fait,
si
ce n'est un affichage lorsque le service est démarré sur le serveur
secondaire. On pourrait envisager d'ajouter une notification par email
(voir
par exemple l'outil blat.exe disponible sur Internet pour envoyer des
emails
en ligne de commande). On pourrait également étendre le script pour
qu'une
fois le service démarré sur le serveur secondaire il y ait une 2e phase
de
vérification du service sur le serveur principal: si le service est à
nouveau démarré, il faut alors arrêter le service sur le serveur
secondaire.
Cette phase pourrait avoir une temporisation plus courte - du genre 10 ou
20s - pour éviter que les deux services soient actifs en même temps.

L'exemple ci-dessus était en batch, mais si tu veux te lancer dans
l'écriture de scripts d'administration, je te conseille de regarder
plutôt
l'environnement Windows PowerShell, téléchargeable gratuitement sur le
site
de Microsoft. Le langage de PowerShell est beaucoup plus perfectionné et
parfaitement adapté à ce type de script. L'adaptation du script ci-dessus
donnerait quelque chose comme ceci:

--- test-dhcp.ps1 ---
$srv1 = "SRV-DC-01"
$srv2 = "SRV-DC-02"

while ($true) {
$dhcp1 = [Wmi]"\$srv1rootcimv2:win32_service.Name='DhcpSrv'"
if ($dhcp1.State -ne "Running") {
break
}
start-sleep 60
}

"Démarrage du service DHCP sur $srv2..."
$dhcp2 = [Wmi]"\$srv2rootcimv2:win32_service.Name='DhcpSrv'"
$dhcp2.StartService()
--- fin de fichier ---

Même réserve que précédemment sur le nom du service - DhcpSrv - à
vérifier.

Si vous souhaitez continuer la discussion sur le sujet du scripting pour
l'administration de vos serveurs, je vous conseille le forum
microsoft.public.fr.scripting, en général assez pointu sur le sujet.

Jacques








Publicité
Poster une réponse
Anonyme