1.1 环境介绍
1.1.1 操作系统及软件
- CentOS Linux release 8.2.2004 (Core)
- openstack train
- Ceph:Octopus
1.1.2 官网提供的逻辑架构图

1.1.3 本文所涉及的部署拓扑

- 部署说明:
(1)部署的拓扑取决于OpenStack的三层网络是采用Linuxbridge还是OVS来实现,不同的实现方式需要的网卡数量不尽相同。(2)建议服务器最少2张网络设计。External Network、Management Network和Ceph Cluster的Public Network可以复用一张网络。(3)LinuxBridge网络下,Tenant Network和Ceph Cluster的Cluster Network可以复用一张网络。(4)Ceph Cluster 建议2张网络分离,Public Network和Cluster Network走不同的网络。- 组件部署说明
(1) controller节点运行keystone,glance,horizon,nova的管理组件,neutron的管理组件,cinder管理组件和ceph-mon节点。(2) 采用ceph作为存储,因此cinder volume部署在controller节点上,以便用pacemaker实现故障切换。(3) conpute节点运行nova-compute,neutron-linuxbridge-agent/neutron-ovs-agent,kvm,ceph-osd,ceph-mgr等。(4) Tenant Network可以在Tunel和Vxlan网络中二选一即可,实现guest。 (5) 本系列文档中,os之间通讯的网络,主要选用vxlan方式。(6) 本系列文档采用self-service-networks提供自助网络服务,provider networks 不支持专有网络,需要依靠外部基础设施提供3层路由与增值服务(LBaaS,FwaaS)。(7) 本系列文档前端采用pacemaker+haproxy做高可用。(8) 无状态的服务器,如xxx-api,采用active/active的模式运行;有状态的服务,如neutron-xxx-agent、cinder-volume等,建议采用active/passive的模式运行。自身具有集群机制的服务,如rabbitmq、memcached等采用本身的集群机制即可。1.2 基础环境配置
1.2.1 hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6#vip10.29.32.10 controller.sysit.cn controller#controller10.29.32.7 controller1.sysit.cn controller110.29.32.8 controller2.sysit.cn controller210.29.32.9 controller3.sysit.cn controller3#compute10.29.32.11 compute1.sysit.cn compute110.29.32.12 compute2.sysit.cn compute210.29.32.13 compute3.sysit.cn compute31.2.2 操作通初始化
- 见本站CentOS8初始化脚本
1.2.3 ntp或chrony
- 见本网站其他文档,推荐chrony
1.2.4 设置openstack packages
#安装yum源dnf install -y centos-release-openstack-traindnf install https://www.rdoproject.org/repos/rdo-release.el8.rpmdnf upgrade -y#安装oepnstack-clientdnf install -y python3-openstackclient#selinux开启时需要安装openstack-selinux,这里已将seliux设置为默认关闭dnf install -y openstack-selinux- 以上使用的源默认会使用mirrors.centos.org的源,安装时候会特别慢。建议修改centos、epel的源为清华大学的源,批量修改:
for i in `ls /etc/yum.repos.d/` ;do sed -i "s/mirror.centos.org/mirror.tuna.tsinghua.edu.cn/g" /etc/yum.repos.d/$i ;done1.3 公共组件安装
1.3.1 数据库
本系列文档采用PXC作为集群数据库,参见本站PXC在CentOS8上安装。
1.3.2 Rabbitmq 集群安装
- 安装
dnf install -y rabbitmq-server- 常用管理
systemctl enable rabbitmq-server.servicesystemctl start rabbitmq-server.servicesystemctl status rabbitmq-server.service- 集群搭建
# 第一台systemctl start rabbitmq-server.service# 此时得到node的名称为rabbit@controller1rabbitmqctl cluster_status- 同步cookie
[root@controller1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@controller2.sysit.cn:/var/lib/rabbitmq/[root@controller2 ~]# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie[root@controller2 ~]# ll /var/lib/rabbitmq/.erlang.cookie -r--------. 1 rabbitmq rabbitmq 20 Jul 14 17:32 /var/lib/rabbitmq/.erlang.cookie- 加入集群
需要用到上一步得到的rabbit@controller1.
将controller2和controller3节点加入到集群
[root@controller2 ~]# systemctl restart rabbitmq-server[root@controller2 ~]# rabbitmqctl stop_appStopping rabbit application on node rabbit@controller2 ...[root@controller2 ~]# rabbitmqctl join_cluster rabbit@controller1 Clustering node rabbit@controller2 with rabbit@controller1 [root@controller2 ~]# rabbitmqctl start_app Starting node rabbit@controller2 ... completed with 0 plugins.有些网上的文档中采用了 rabbitmqctl join_cluster --ram rabbit@controller2,这表示这个节点是一个RAM节点,会将schema存储在内存中。默认值是–disc,存储在磁盘中,强烈推荐存储在磁盘。
- 检查是否创建成功
[root@controller1 ~]# rabbitmqctl cluster_statusCluster status of node rabbit@controller1 ...BasicsCluster name: rabbit@controller1.sysit.cnDisk Nodesrabbit@controller1rabbit@controller2rabbit@controller3Running Nodesrabbit@controller1rabbit@controller2rabbit@controller3Versionsrabbit@controller1: RabbitMQ 3.8.3 on Erlang 22.2.8rabbit@controller2: RabbitMQ 3.8.3 on Erlang 22.2.8rabbit@controller3: RabbitMQ 3.8.3 on Erlang 22.2.8Alarms(none)Network Partitions(none)ListenersNode: rabbit@controller1, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communicationNode: rabbit@controller1, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0Node: rabbit@controller2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communicationNode: rabbit@controller2, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0Node: rabbit@controller3, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communicationNode: rabbit@controller3, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0Feature flagsFlag: implicit_default_bindings, state: enabledFlag: quorum_queue, state: enabledFlag: virtual_host_metadata, state: enabled以上均是Disk Nodes,如果有节点使用了--ram参数,则这里会显示RAM Nodes的信息
- 创建用户并配置读写策略
任意节点上操作
# 创建用户[root@controller1 ~]# rabbitmqctl add_user openstack passwordAdding user "openstack" ...[root@controller1 ~]# rabbitmqctl set_user_tags openstack administratorSetting tags for user "openstack" to [administrator] ...#允许openstack用户的配置、写和读访问:[root@controller1 ~]# rabbitmqctl set_permissions -p "/" openstack ".*" ".*" ".*" Setting permissions for user "openstack" in vhost "/" ... #查看账号[root@controller1 ~]# rabbitmqctl list_usersListing users ...user tagsopenstack [administrator]guest [administrator]- 设置镜像队列高可用
任意节点上操作
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'- 查看镜像队列策略
rabbitmqctl list_policies - web管理插件
在需要的节点上启用web管理插件
rabbitmq-plugins enable rabbitmq_management- 剔除节点
rabbitmqctl stoprabbitmqctl -n rabbit@controller1 forget_cluster_node rabbit@controller21.3.3 memcached
dnf install -y memcached python3-memcachedsed -i 's|127.0.0.1,::1|0.0.0.0|g' /etc/sysconfig/memcachedsystemctl restart memcached
1407

被折叠的 条评论
为什么被折叠?



