O seguinte problema pode ser visto como um problema relacionado a CIFS / AD (visão específica) ou como uma questão sobre reinicializações de serviço, tratamento de erros e análise de log (visão geral). Vou apresentar ambas as áreas aqui, mas ficaria feliz em receber respostas sobre qualquer uma delas (apenas pule as partes que você não está interessado).
Em um Active Directory compatível com o Windows Server 2008, geralmente há vários controladores de domínio para alta disponibilidade. Se todos esses servidores estiverem indisponíveis ao mesmo tempo e um servidor de arquivos OmniOS (r151018) com o servidor SMB / CIFS ativo do kernel (que foi ingressado com êxito no domínio e funcionar como esperado) inicializar, ocorrerá o seguinte:
O serviço idmap
tenta alcançar um CD por 60 segundos e depois desiste ...
root@omnios:/root# tail -n 20 /var/svc/log/system-idmap:default.log
@ Tue Sep 6 10:19:42 2016
Global Catalog servers not configured/discoverable
Domain controller servers not configured/discoverable
created thread ID 3 - 1 threads currently active
[ Sep 6 10:19:42 Method "start" exited with status 0. ]
@ Tue Sep 6 10:19:53 2016
created thread ID 4 - 2 threads currently active
getdcname wait begin
@ Tue Sep 6 10:19:57 2016
DNS: _ldap._tcp.dc._msdcs.testdomain.intranet: Host name lookup failure
@ Tue Sep 6 10:20:08 2016
getdcname timeout
@ Tue Sep 6 10:20:12 2016
DNS: _ldap._tcp.dc._msdcs.testdomain.intranet: Host name lookup failure
@ Tue Sep 6 10:20:27 2016
DNS: _ldap._tcp.dc._msdcs.testdomain.intranet: Host name lookup failure
@ Tue Sep 6 10:20:42 2016
DNS: _ldap._tcp.dc._msdcs.testdomain.intranet: Host name lookup failure
Domain discovery took 60 sec.
Check the DNS configuration.
... mas não falha criticamente:
root@omnios:/root# svcs -xv idmap
svc:/system/idmap:default (Native Identity Mapping Service)
State: online since Tue Sep 6 10:19:42 2016
See: man -M /usr/share/man -s 1M idmapd
See: man -M /usr/share/man -s 1M idmap
See: /var/svc/log/system-idmap:default.log
Impact: None.
Depois disso, smbd
reclama (com razão) no syslog a cada minuto que não consegue encontrar o DC:
smbd[525]: [ID 510351 daemon.notice] smb_locate_dc status 0xc0000233
smbd[525]: [ID 199031 daemon.notice] smbd_dc_update: testdomain.intranet: locate failed
Isso persiste mesmo depois de o DC estar on-line novamente e acessível. É contornado instantaneamente reiniciando idmap
com svcadm restart idmap
. Naturalmente, como essas interrupções podem acontecer sem planejamento, isso não deveria ser feito manualmente.
idmap
restart pode ser roteirizado para ocorrer automaticamente nesses eventos? Eu tentei usar o SMF, mas parece que isso só funciona para serviços com falha, enquanto idmap
não relata problemas ( e smbd
apenas reporta avisos). Outra possibilidade seria monitorar constantemente os arquivos de log e grep para os eventos, mas isso parece ineficiente para mim. Eu também tentei reduzir o valor de config/rediscovery_interval
para 60 segundos, mas parece que ele é ignorado (ou não aplicável aqui). idmap
também é reiniciado) . Edit: Saída de svccfg -s idmap listprop
- a única coisa que eu mudei foi config/rediscovery_interval
(padrão 3600), IDs foram removidos depois manualmente.
config application
config/id_cache_timeout count 86400
config/list_size_limit count 0
config/name_cache_timeout count 604800
config/preferred_dc astring
config/stability astring Unstable
config/use_ads boolean true
config/use_lsa boolean true
config/value_authorization astring solaris.smf.value.idmap
config/machine_uuid astring [...]
config/machine_sid astring [...]
config/rediscovery_interval count 60
config/domain_name astring testdomain.intranet
debug application
debug/all integer 0
debug/config integer 0
debug/discovery integer 0
debug/dns integer 0
debug/ldap integer 0
debug/mapping integer 0
debug/stability astring Unstable
debug/value_authorization astring solaris.smf.value.idmap
rpcbind dependency
rpcbind/entities fmri svc:/network/rpc/bind
rpcbind/grouping astring require_all
rpcbind/restart_on astring restart
rpcbind/type astring service
filesystem-minimal dependency
filesystem-minimal/entities fmri svc:/system/filesystem/minimal
filesystem-minimal/grouping astring require_all
filesystem-minimal/restart_on astring error
filesystem-minimal/type astring service
manifestfiles framework
manifestfiles/lib_svc_manifest_system_idmap_xml astring /lib/svc/manifest/system/idmap.xml
general framework
general/action_authorization astring solaris.smf.manage.idmap
general/entity_stability astring Unstable
general/single_instance boolean true
general/value_authorization astring solaris.smf.manage.idmap
start method
start/exec astring /usr/lib/idmapd
start/timeout_seconds count 60
start/type astring method
stop method
stop/exec astring :kill
stop/timeout_seconds count 60
stop/type astring method
refresh method
refresh/exec astring ":kill -HUP"
refresh/timeout_seconds count 60
refresh/type astring method
tm_common_name template
tm_common_name/C ustring "Native Identity Mapping Service"
tm_man_idmapd1M template
tm_man_idmapd1M/manpath astring /usr/share/man
tm_man_idmapd1M/section astring 1M
tm_man_idmapd1M/title astring idmapd
tm_man_idmap1M template
tm_man_idmap1M/manpath astring /usr/share/man
tm_man_idmap1M/section astring 1M
tm_man_idmap1M/title astring idmap
Esse problema pode ser generalizado para a questão de como observar arquivos de log da maneira mais eficiente no Solaris . Eu pesquisei e encontrei várias ferramentas como swatch
, logsurfer
, logwatcher
ou o antigo trabalho cron antigo executado a cada minuto e conectado a um script simples que lê dmesg
output.