Por Ghulam Qadir, Alibaba Cloud Tech Share Author. Tech Share é o programa de incentivo do Alibaba Cloud para encorajar o compartilhamento de conhecimento técnico e melhores práticas dentro da comunidade em nuvem.
OpenStack é uma plataforma de software livre e de código aberto que fornece IaaS (infrastructure as-a-service) para nuvens públicas e privadas.
A plataforma OpenStack consiste em vários projetos inter-relacionados que controlam hardware, armazenamento, recursos de rede de um datacenter, como por exemplo: Compute, Image Service, Block Storage, Identity Service, Networking, Object Storage, Telemetry, Orchestration e Database.
A função principal do OpenStack é fornecer uma plataforma IaaS, ela é usada como um DBaaS (database-as-a-service), construindo clusters Hadoop, Container orquestration e muito mais. A administração desses componentes pode ser gerenciada através da interface baseada na web ou com a ajuda da linha de comando do OpenStack.
Este tutorial irá mostrar como você pode implantar sua própria infraestrutura de nuvem privada com o OpenStack instalado em um único nó usando repositórios rdo, embora a implantação possa ser feita em vários nós. Nós estaremos implantando este serviço em instâncias do Alibaba Cloud Elastic Compute Service (ECS) com CentOS 7.
- Hostname = openstack.example.com
- Endereço IP = 192.168.1.40
- Máscara de rede = 255.255.255.0
- Gateway = 192.168.1.1
- DNS = 192.168.1.254
Prerequisitos
- Você deve ter o Serviço de Cálculo Elástico Alibaba Cloud (ECS) ativado e verificado o seu método de pagamento válido. Se você é um novo usuário, você pode obter uma conta gratuita na sua conta Alibaba Cloud. Se você não sabe como configurar sua instância ECS, você pode consultar este tutorial ou guia de início rápido.
- Você deve configurar o hostname do seu servidor.
- Acesso ao console VNC no seu Alibaba Cloud ou cliente SSH instalado no seu PC.
Após completar os pré-requisitos, faça o login como usuário root com seu nome de usuário root & senha via cliente SSH (ex. Putty) ou console VNC disponível em seu painel de controle da conta Alibaba Cloud.
Certifique-se de que seu sistema tem pelo menos 16GB de RAM e um processador com suporte a VT. Verifique o suporte a VT usando o comando abaixo.
egrep --color 'vmx|svm' /proc/cpuinfo | wc –l
Saída: (não deve ser zero)
2
Configurações Iniciais de Sistema
- Antes de começar a preparar o nó a fim de implantar sua própria infraestrutura de nuvem virtual, faça o primeiro login com a conta root e assegure-se de que o sistema está atualizado.
Certifique-se de que sua máquina tem a última versão do CentOS 7 na máquina.
yum -y update
- Próximo, emita o comando ss -tulpn para listar todos os serviços em execução.
Ss -tulpn
Agora identifique os serviços desnecessários, pare, desative e remova-os. Principalmente Postfix, NetworkManager e Firewalld. Depois disso, o único serviço que estaria rodando na sua máquina linux deveria ser apenas sshd.
# systemctl stop postfix firewalld NetworkManager # systemctl disable postfix firewalld NetworkManager # systemctl mask NetworkManager # yum remove postfix NetworkManager NetworkManager-libnm
Desabilitar permanentemente a política Selinux na sua máquina linux executando os seguintes comandos. Também edite o arquivo /etc/selinux/config e modifique o SELINUX de executando para desabilitado como mostra a imagem abaixo.
# setenforce 0 # getenforce # vi /etc/selinux/config
No próximo passo usando o comando hostnamectl para definir o nome da máquina do seu sistema Linux. Substitua a variável FQDN de acordo.
# hostnamectl set-hostname cloud.centos.lan
Pouco, instale ntpdate para sincronizar a hora com um servidor NTP.
# yum install ntpdate
Instale o OpenStack no CentOS e RHEL
OpenStack será implementado no seu Nó com a ajuda do pacote PackStack fornecido pelo repositório rdo (Distribuição RPM do OpenStack).
Para habilitar os repositórios rdo no RHEL 7 execute o comando abaixo.
# yum install https://www.rdoproject.org/repos/rdo-release.rpm
No CentOS 7, o repositório Extras inclui o RPM que ativa o repositório OpenStack. Extras já está ativado, assim você pode facilmente instalar o RPM para configurar o repositório OpenStack:
# yum install -y centos-release-openstack-mitaka # yum update –y
Let’s install Packstat package on your linux machine usando o seguinte comando:
# yum install openstack-packstack
No próximo passo gere um arquivo de respostas para o Packstack com as configurações padrão que serão posteriormente editadas com os parâmetros necessários para implantar uma instalação independente do Openstack (nó único).
O arquivo terá o nome do carimbo de data/hora atual quando gerado (dia, mês e ano).
# packstack --gen-answer-file='date +"%d.%m.%y"'.conf # ls
Edite agora o arquivo de respostas com o seu editor de texto favorito.
vi 26.07.18.conf
e substitua os seguintes parâmetros para combinar com os valores abaixo. Para ser seguro substitua os campos de senhas de acordo.
CONFIG_NTP_SERVERS=0.ro.pool.ntp.org
CONFIG_PROVISION_DEMO=n
CONFIG_KEYSTONE_ADMIN_PW=your_password for Admin user
Acesso ao painel do OpenStack via HTTP com SSL habilitado.
CONFIG_HORIZON_SSL=y
A senha raiz para o servidor MySQL.
CONFIG_MARIADB_PW=mypassword1234
Depois de terminar de editar salve e feche o arquivo. Além disso, abra o arquivo de configuração e descomente do servidor SSH PermitRootLogin removendo a hashtag frontal como ilustrado na imagem abaixo.
# vi /etc/ssh/sshd_config
Em seguida, reinicie o serviço SSH para refletir as alterações.
# systemctl restart sshd
Inicie a instalação do Openstack usando o arquivo de respostas do Packstack
Inicie finalmente o processo de instalação do Openstack através do arquivo de respostas editado acima, executando a sintaxe de comando abaixo:
# packstack --answer-file 13.04.16.conf
Após a instalação dos componentes do OpenStack estar concluída com sucesso, o instalador exibirá algumas linhas com os links do painel local para o OpenStack e Nagios e as credenciais necessárias já configuradas acima para fazer o login em ambos os painéis.
As credenciais também são armazenadas no seu diretório home em keystonerc_admin file.
Se por algumas razões o processo de instalação terminar com um erro referente ao serviço httpd, abra o /etc/httpd/conf.d/ssl.conf e certifique-se de comentar a seguinte linha como ilustrado abaixo.
#Listen 443 https
Em seguida, reinicie o daemon Apache para aplicar as alterações.
# systemctl restart httpd.service
Nota: Caso você ainda não consiga navegar pelo painel web do Openstack na porta 443 reinicie o processo de instalação a partir do mesmo comando emitido para a implementação inicial.
# packstack --answer-file /root/26.07.18.conf
Acesso remoto ao OpenStack Dashboard
Para acessar o painel web do OpenStack a partir de um host remoto na sua LAN, navegue até o endereço IP da sua máquina ou FQDN/dashboard via protocolo HTTPS.
Devido ao fato de que você está usando um Certificado Auto-assinado emitido por uma Autoridade Certificadora não confiável, um erro deve ser exibido no seu navegador.
Aceite o erro e faça o login no painel com o administrador do usuário e a senha definida no parâmetro CONFIG_KEYSTONE_ADMIN_PW do arquivo de resposta definido acima.
https://192.168.1.40/dashboard
Alternativamente, se você optou por instalar o componente Nagios para o OpenStack, você pode navegar no painel web do Nagios no seguinte URI e fazer login com as credenciais configuradas no arquivo de respostas.
https://192.168.1.40/nagios
Configuração
OpenStack é uma coleção de componentes de projeto de código aberto que permitem a configuração de serviços de nuvem. Cada componente usa técnicas de configuração similares e um framework comum para opções de arquivos INI.
Este guia reúne múltiplas referências e opções de configuração para os seguintes componentes do OpenStack:
- Serviço de metal nu
- Serviço de armazenamento de blocos
- Serviço de cálculo
- Dashboard
- Serviço de banco de dados
- Serviço de processamento de dados
- Serviço de identidade
- Serviço de imagem
- Mensagem serviço
- Serviço de rede
- Serviço de armazenamento de objectos
- Serviço de orquestração
- Serviço de sistemas de ficheiros partilhados
- Serviço de telemetria
OpenStack usa o formato de ficheiro INI para ficheiros de configuração. Um arquivo INI é um simples arquivo de texto que especifica opções como pares key=value, agrupados em seções. A seção DEFAULT contém a maioria das opções de configuração. Linhas que começam com um sinal hash (#) são linhas de comentário. Por exemplo:
# Print debugging output (set logging level to DEBUG instead # of default WARNING level). (boolean value) debug = true # The SQLAlchemy connection string used to connect to the # database (string value) connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
Options can have different types for values. Os comentários nos arquivos de configuração de exemplo sempre mencionam estes e as tabelas mencionam o valor Opt como primeiro item como (BoolOpt) Toggle…. Os seguintes tipos são usados pelo OpenStack:
valor booleano (BoolOpt)
Enables ou desabilita uma opção. Os valores permitidos são verdadeiros e falsos.
# Enable the experimental use of database reconnect on # connection lost (boolean value) use_db_reconnect = false
valor de ponto flutuante (FloatOpt)
Um número de ponto flutuante como 0,25 ou 1000.
# Sleep time in seconds for polling an ongoing async task # (floating point value) task_poll_interval = 0.5
valor inteiro (IntOpt)
Um número inteiro é um número sem componentes fracionários, como 0 ou 42.
# The port which the OpenStack Compute service listens on. # (integer value) compute_port = 8774
Endereço IP (IPOpt)
Um endereço IPv4 ou IPv6.
# Address to bind the server. Useful when selecting a particular network # interface. (ip address value) bind_host = 0.0.0.0
Pares de valor chave (DictOpt)
Pares de valor chave, também conhecido como um ditonário. Os pares de valores chave são separados por vírgulas e um dois pontos é usado para separar chave e valor. Exemplo: chave1:valor1,chave2:valor2.
# Parameter for l2_l3 workflow setup. (dict value) l2_l3_setup_params = data_ip_address:192.168.200.99, \ data_ip_mask:255.255.255.0,data_port:1,gateway:192.168.200.1,ha_port:2
valor da lista (ListOpt)
Representa valores de outros tipos, separados por vírgulas. Como exemplo, os seguintes conjuntos permitidos_rpc_exception_modules para uma lista contendo os quatro elementos oslo.messaging.exceptions, nova.exception, cinder.exception, e exceptions:
# Modules of exceptions that are permitted to be recreated # upon receiving exception data from an rpc call. (list value) allowed_rpc_exception_modules = oslo.messaging.exceptions,nova.exception
multi value (MultiStrOpt)
Uma opção multi-valorizada é um valor string e pode ser dada mais de uma vez, todos os valores serão usados.
# Driver or drivers to handle sending notifications. (multi valued) notification_driver = nova.openstack.common.notifier.rpc_notifier notification_driver = ceilometer.compute.nova_notifier
valor de porta (PortOpt)
Um número de porta TCP/IP. As portas podem variar de 1 a 65535.
# Port to which the UDP socket is bound. (port value) # Minimum value: 1 # Maximum value: 65535 udp_port = 4952
valor de string (StrOpt)
Strings podem ser opcionalmente fechados com aspas simples ou duplas.
# Enables or disables publication of error events. (boolean value) publish_errors = false # The format for an instance that is passed with the log message. # (string value) instance_format = " "
Seções
Opções de configuração são agrupadas por seção. A maioria dos arquivos de configuração suporta pelo menos as seguintes seções:
Contém a maioria das opções de configuração. Se a documentação para uma opção de configuração não especificar sua seção, assuma que ela aparece nesta seção.
Opções de configuração para a base de dados que armazena o estado do serviço OpenStack.
Substitution
O arquivo de configuração suporta a substituição de variáveis. Após definir uma opção de configuração, ela pode ser referenciada em valores de configuração posteriores quando você a precede com um $, como $OPTION.
O exemplo a seguir usa os valores de coelho_apresentador e coelho_port para definir o valor da opção coelho_hosts, neste caso como controller:5672.
# The RabbitMQ broker address where a single node is used. # (string value) rabbit_host = controller # The RabbitMQ broker port where a single node is used. # (integer value) rabbit_port = 5672 # RabbitMQ HA cluster host:port pairs. (list value) rabbit_hosts = $rabbit_host:$rabbit_port
Para evitar substituição, use
$$, ele é substituído por um único $. Por exemplo, se sua senha DNS LDAP for $xkj432, especifique-a, como segue:
ldap_dns_password = $$xkj432
O código usa a string Python. Método Template.safe_substitute() para implementar a substituição de variáveis. Para mais detalhes sobre como a substituição de variáveis é resolvida.
Whitespace
Para incluir espaços em branco em um valor de configuração, use uma string cotada. Por exemplo:
ldap_dns_passsword='a password with spaces'
Definir um local alternativo para um arquivo de configuração
Mais serviços e os clientes de linha de comando -manage carregam o arquivo de configuração. Para definir uma localização alternativa para o arquivo de configuração, passe o parâmetro –config-file CONFIG_FILE quando você iniciar um serviço ou chamar um comando -manage.
Conclusion
Demonstruímos a instalação do OpenStack no Red Hat, CentOS e Fedora Linux. Agora você pode configurar seu próprio ambiente de nuvem privada no Alibaba Cloud Elastic Compute Service (ECS) facilmente com OpenStack.