Novo gerenciador de sistemas rcd para FreeBSD em desenvolvimento

Baptiste Daroussin, membro da FreeBSD Core Team e autor do gerenciador de pacotes pkg, está desenvolvendo um novo gerenciador de sistemas para o FreeBSD — rcd. O gerenciador de sistemas rcd é chamado pelo processo init em vez de /etc/rc, lê arquivos de configuração de serviços (/etc/rcd.d/*.ucl), constrói uma árvore de dependências e inicia serviços em paralelo, quando possível, e em seguida, monitora a operação dos serviços e os reinicia se necessário.

O gerenciamento de processos em segundo plano e operações com serviços pode ser realizado por meio do envio direto de comandos para um socket UNIX ou utilizando a ferramenta de linha de comando rctl. Arquivos de unidade com parâmetros de serviços são formatados em UCL, que se assemelha ao formato de arquivos de configuração do nginx e do bind, com elementos para simplificar o processamento automatizado, emprestados do JSON. É possível criar modelos de arquivos de unidade típicos e escrever manipuladores embutidos em Lua. Exemplo de arquivo de unidade para iniciá-lo nginx: name = "nginx"; description = "Servidor HTTP Nginx"; type = "simple"; command = "/usr/local/sbin/nginx"; command_args = "-g 'daemon off;'"; provides = ["nginx", "http"]; requires = ["NETWORKING", "sshd"]; restart { policy = "always"; max_retries = 10; delay = 2000; backoff = "linear"; } process { user = "www"; group = "www"; cpuset = "0-3"; } rctl { memoryuse = { action = "deny"; amount = "2g"; }; pcpu = { action = "throttle"; amount = "80"; }; }

Em vez de trabalhar com arquivos PID, o monitoramento da atividade de processos em execução é feito utilizando descritores retornados pela chamada de sistema pdfork(). Há suporte para ativação de serviços apenas ao acessar um socket de rede e a possibilidade de proteger serviços importantes contra encerramento forçado em caso de falta de memória no sistema. É possível atualizar a versão do processo em segundo plano rcd em tempo real sem perda de estado.

Para limitar os recursos disponíveis para o serviço, é utilizado rctl, e para a completa isolamento dos serviços, suporta-se a execução em ambientes jail. A configuração de acesso ao socket UNIX de gerenciamento pode ser vinculada a serviços específicos. O modo de suspensão também é suportado.

O gerenciador de sistema é totalmente compatível com o sistema existente de inicialização sequencial de serviços rc.d e pode operar sem alterações nos scripts rc.d e arquivos de configuração existentes. Basta instalar o rcd em um sistema em operação e, após a reinicialização, tudo continuará funcionando como antes, exceto pela redução do tempo de inicialização devido à paralelização do início dos serviços. Essa compatibilidade facilitará a migração de sistemas para o rcd, permitindo que os scripts rc.d existentes sejam convertidos gradualmente para o formato de arquivos unit.

Para compatibilidade com rc.d, é suportado um tipo especial de unidades chamado "legacy". O rcd escaneia o conteúdo de /etc/rc.d/ e /usr/local/etc/rc.d/, analisa os cabeçalhos PROVIDE/REQUIRE/BEFORE/KEYWORD nos scripts, lê as configurações do rc.conf e determina o estado de inicialização dos scripts, em seguida, processa cada script como uma unidade virtual legacy. Ao usar o comando rcctl para gerenciar essas unidades virtuais, as operações são traduzidas para o formato antigo; por exemplo, executar "rcctl reload sshd" resultará em " /etc/rc.d/sshd reload".

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster