openstack增加一个计算节点

1.前言

  • 由于资源有限,所以直接在存储节点(block)部署
    • 由于存储节点最初只设计了一块网卡,所以需要增加一块网卡,名称为eth1,IP:192.168.200.30
    • 编辑ifcfg-eth1,然后重启网络systemctl restart network或启动网卡ifup eth1
  • 如果是一台新机器,请按照OpenStack-Mitaka版本部署,进行环境准备工作

2.部署流程

1.安装openstack客户端和openstack-selinux

yum install python-openstackclient.noarch openstack-selinux.noarch openstack-utils -y

2.安装nova-compute

yum install openstack-nova-compute -y
yum install openstack-utils.noarch -y

3.修改配置

  • 1.备份 /etc/nova/nova.conf 文件,并去掉注释
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf
  • 2.使用openstack-config命令修改相关配置
openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend rabbit

openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_host controller
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_password openstack

openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone

openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS

# 计算节点的管理网络IP(重点修改对象,新机器的IP)
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.100.30

openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver

openstack-config --set /etc/nova/nova.conf vnc enabled True
openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0
openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address '$my_ip'
# 控制节点的外部网络IP
openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://192.168.200.10:6080/vnc_auto.html

openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292

openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp

openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696
openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:35357
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS

4.安装neutron-linuxbridge-agent

yum install openstack-neutron-linuxbridge ebtables ipset -y

5.修改配置

  • 1.备份 /etc/neutron/neutron.conf 文件,并去掉注释
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev '^$|#' /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf
  • 2.使用openstack-config命令修改相关配置
openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_host controller
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_userid  openstack
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_password  openstack

openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken  password NEUTRON_PASS

openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
  • 3.备份 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,并去掉注释
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
grep -Ev '^$|#' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  • 4.使用openstack-config命令修改相关配置
# PROVIDER_INTERFACE_NAME:为外网网卡eth1
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:eth1

openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan False

openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group True
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

6.启动服务

systemctl enable libvirtd.service openstack-nova-compute.service neutron-linuxbridge-agent.service
systemctl start libvirtd.service openstack-nova-compute.service neutron-linuxbridge-agent.service

7.验证

  • 控制节点,检查是否多个一个nova服务
[root@controller ~]# nova service-list
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-consoleauth | controller | internal | enabled | up    | 2023-01-09T13:33:35.000000 | -               |
| 2  | nova-conductor   | controller | internal | enabled | up    | 2023-01-09T13:33:34.000000 | -               |
| 3  | nova-scheduler   | controller | internal | enabled | up    | 2023-01-09T13:33:30.000000 | -               |
| 7  | nova-compute     | compute    | nova     | enabled | up    | 2023-01-09T13:33:35.000000 | -               |
| 8  | nova-compute     | block      | nova     | enabled | up    | 2023-01-09T13:33:32.000000 | -               |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
  • 控制节点,检查是否多个一个bridge agent服务
[root@controller ~]# neutron agent-list
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| id                                   | agent_type         | host       | availability_zone | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| 01c79ff7-a257-4572-8d36-e53a41c54b4c | Metadata agent     | controller |                   | :-)   | True           | neutron-metadata-agent    |
| 7288d214-2d6e-40d1-a52b-4810ac843454 | Linux bridge agent | controller |                   | :-)   | True           | neutron-linuxbridge-agent |
| a53f41d4-b579-4d8f-9f70-681f5936d996 | Linux bridge agent | block      |                   | :-)   | True           | neutron-linuxbridge-agent |
| c94f5235-7ef6-4043-bed1-ad4c041525f4 | DHCP agent         | controller | nova              | :-)   | True           | neutron-dhcp-agent        |
| f40e89c2-9bef-4c6c-a063-03f9f32c9c20 | Linux bridge agent | compute    |                   | :-)   | True           | neutron-linuxbridge-agent |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+

3.创建实例

1.一次性创建两个实例,看看调度情况

  • 由于资源相同,两个虚机应该会分别被调度在不同的节点
    在这里插入图片描述
    在这里插入图片描述

2.主机聚集

  • 通过创建主机聚集,控制虚机调度在哪个节点
    在这里插入图片描述
    在这里插入图片描述
  • 创建2个实例,观察调度情况(期望两个虚机都调度在compute节点上)
    在这里插入图片描述
    在这里插入图片描述

4.实例冷迁移

1.计算节点之间进行互信(免密登录)

1.在任意节点执行以下操做:假使在compute节点
  • 1.切换nova用户
usermod -s /bin/bash nova
su - nova
cp /etc/skel/.bash* .
logout
su - nova
  • 2.生成密钥对
ssh-keygen -t rsa -q -N ''
[nova@compute ~]$ ls /var/lib/nova/.ssh
id_rsa  id_rsa.pub
  • 3.设置自己免密登录
cp -fa /var/lib/nova/.ssh/id_rsa.pub /var/lib/nova/.ssh/authorized_keys
2.将计算节点刚刚生成的.ssh目录拷贝到存储节点(部署了计算服务)
  • 1.远程拷贝.ssh目录
scp -rp /var/lib/nova/.ssh root@block:`pwd`
  • 2.存储节点切换nova用户
usermod -s /bin/bash nova
su - nova
cp /etc/skel/.bash* .
logout
su - nova
logout
  • 3.修改/var/lib/nova/.ssh下的文件权限
chown -R nova:nova /var/lib/nova/.ssh
  • 4.测试免密登录
su - nova
ssh nova@compute
su - nova
ssh nova@block

2.修改控制节点/etc/nova/nova.conf配置文件

  • 1.修改/etc/nova/nova.conf配置
[default]
scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter, DiskFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter
  • 2.重启nova-scheduler服务
systemctl restart openstack-nova-scheduler.service

3.修改所有计算节点/etc/nova/nova.conf配置文件

[default]
allow_resize_to_same_host = True
  • 重启nova-compute服务
systemctl restart openstack-nova-compute.service

4.web界面操做

  • 1.迁移主机必须属于同一个主机聚集,所以重新创建主机聚集
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 2.实例的迁移,只对配置了迁移环境后,创建的虚机有效,所以使用刚刚创建的主机聚集来重新创建实例测试。
    在这里插入图片描述

  • 3.迁移在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

### OpenStack双控制节点部署教程 在OpenStack环境中,实现高可用性和冗余通常通过部署多控制器节点来完成。以下是关于如何在OpenStack中部署双控制节点的相关架构设计和配置说明。 #### 1. 高可用性需求分析 为了确保服务的连续性和数据的一致性,在OpenStack中引入多个控制节点是非常必要的。这可以通过使用负载均衡器和服务复制技术来实现[^1]。具体来说,双控制节点的设计可以显著提高系统的可靠性和稳定性。 #### 2. 架构概述 双控制节点的典型架构包括两个主要组件: - **Controller Nodes**: 提供管理平面的服务,例如Keystone、Nova API、Neutron Server等。 - **Load Balancer**: 负责分发来自客户端的请求到不同的控制节点上,从而实现流量平衡并提供单点访问入口。 根据提供的主机列表信息,假设现有环境已经有一个单独的控制节点`controller` (IP地址为 `192.168.204.210`) 和两台计算节点 (`compute01`, `compute02`) ,那么新增加第二个控制节点将是扩展此基础架构的关键部分[^2]。 #### 3. 新增第二控制节点准备事项 当计划增加一个新的控制节点时,需考虑以下几个方面: ##### a. 网络规划 确保新加入的控制节点能够连接至现有的网络结构,并分配相应的静态 IP 地址给它。例如,如果第一个控制节点使用的网段是 `192.168.204.x/24`,则建议为新的控制节点选择同一子网内的未占用地址,比如 `192.168.204.213`. ##### b. 数据库同步 对于 MySQL 或 MariaDB 这样的数据库管理系统,应该设置为主从模式或者 Galera Cluster 来保持跨控制节点的数据一致性。 ```sql -- 创建用于复制的账户 CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; -- 导出原始数据库状态 mysqldump --all-databases --single-transaction > db_backup.sql ``` ##### c. RabbitMQ 设置 RabbitMQ 应该被配置成集群形式以便支持消息队列功能。每台服务器都需要安装 RabbitMQ 并将其加入同一个集群之中。 ```bash rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@<first_node_hostname> rabbitmqctl start_app ``` #### 4. 实现 HAProxy 的负载均衡 HAProxy 是一种流行的开源软件解决方案,可用于创建一个虚拟 IP(VIP),并通过 VIP 将外部请求转发到实际运行中的任一活动控制节点之上。 编辑 `/etc/haproxy/haproxy.cfg` 文件如下所示: ```haproxy frontend openstack_frontend bind *:5000 mode http default_backend keystone_api_servers backend keystone_api_servers balance roundrobin server controller1 192.168.204.210:5000 check inter 2000 rise 2 fall 3 server controller2 192.168.204.213:5000 check inter 2000 rise 2 fall 3 ``` #### 5. Pacemaker & Corosync 故障转移机制 除了简单的负载均衡外,还可以利用Pacemker+Cronsync组合构建更高级别的自动故障切换能力。这种方式可以在某个控制节点失效的情况下迅速接管其职责。 --- ### 总结 上述方法描述了一个基本框架用来指导如何在一个已有单控件节点的基础上添加一个控制节点的过程。需要注意的是整个过程涉及到了许多细节调整和技术要点,因此强烈推荐仔细阅读官方文档以及社区指南以获得最佳实践效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值