赞
踩
注意: OpenStack社区不再支持此版本(Train),不会再为其提供更新,本文仅用于了解学习 OpenStack 项目。当前 OpenStack 支持的版本为 2023.2。
大多数 OpenStack 环境中包含认证、镜像、计算和至少一个网络服务,还有仪表盘,仪表盘要求至少要有镜像服务,计算服务和网络服务。配置每个节点必须用有管理员权限的帐号。可以用 root用户或 sudo 工具来执行这些命令。
由于 Openstack 服务数量以及虚拟机数量,为了获得最好的性能,我们推荐你的环境满足或者超过最小的硬件需求。如果在增加了更多的服务或者虚拟机后性能下降,请考虑为你的环境增加硬件资源。为了避免混乱和为 OpenStack 提供更多资源,推荐最小化安装 Linux 系统。同时,必须在每个节点安装Linux 64位版本。本文中使用的示例是最低配置,并且不适用于生产系统安装。它旨在提供最低限度的概念验证,以了解学习 OpenStack。
*从 Ussuri 版本开始,搭建 OpenStack 将需要使用 CentOS 8 或 RHEL 8。以前的 OpenStack 版本需要使用 CentOS 7 或 RHEL 7。本文使用 CentOS 7系统,所以搭建 OpenStack Train 版。
以下为最小需求支持环境,使用核心服务和几个 CirrOS 实例:
控制节点: 1 处理器, 4 GB 内存, 及10 GB 存储
计算节点: 1 处理器, 2 GB 内存, 及20 GB 存储
我的节点(CentOS 7,本文所有操作都是适用且仅适用于 CentOS 7):
控制节点:Hostname:syl-ct;IP:192.168.214.10,1 处理器, 4 GB 内存, 及100 GB 存储
计算节点:Hostname:syl-cm1;IP:192.168.214.11,1 处理器, 2 GB 内存, 及500 GB 存储
计算节点:Hostname:syl-cm2;IP:192.168.214.12,1 处理器, 2 GB 内存, 及500 GB 存储
同时,需要在三个节点的hosts文件中添加三个节点的信息,使得三个节点可以ping通其他节点的主机名,如下图:
关闭三个节点的防火墙及selinux:
- #关闭防火墙
- systemctl stop firewalld.service
- #关闭防火墙开机自启
- systemctl disable firewalld.service
- #查看防火墙信息
- systemctl status firewalld.service
-
- #查看selinux
- getenforce
- #关闭selinux
- setenforce 0
- #永久关闭selinux
- [root@syl-ct ~]# vim /etc/selinux/config
-
- # This file controls the state of SELinux on the system.
- # SELINUX= can take one of these three values:
- # enforcing - SELinux security policy is enforced.
- # permissive - SELinux prints warnings instead of enforcing.
- # disabled - No SELinux policy is loaded.
- SELINUX=permissive #将此行改为permission
- # SELINUXTYPE= can take one of three two values:
- # targeted - Targeted processes are protected,
- # minimum - Modification of targeted policy. Only selected processes are protected.
- # mls - Multi Level Security protection.
- SELINUXTYPE=targeted
# yum install chrony -y
配置NTP服务器(可选):
注解:控制节点默认跟公共服务器池同步时间。但是你也可以选择性配置其他服务器,比如你组织中提供的服务器。
- #将(0.centos.pool.ntp.org)替换为自己的NTP服务器的主机名或者IP地址,配置支持设置多个 server 值
- #我这里控制节点为 NTP服务器,不进行更改
-
- # Use public servers from the pool.ntp.org project.
- # Please consider joining the pool (http://www.pool.ntp.org/join.html).
- server 0.centos.pool.ntp.org iburst
- server 1.centos.pool.ntp.org iburst
- server 2.centos.pool.ntp.org iburst
- server 3.centos.pool.ntp.org iburst
允许客户端访问:
将配置文件中的网络改为节点所在的网络,以允许其他节点可以连接到控制节点的 chrony 进程
- # 此处位于文件的第26行附近,取消 allow 前面的注释,更改后面的网段
- # Allow NTP client access from local network.
- allow 192.168.214.0/24
- # systemctl enable chronyd.service
- # systemctl start chronyd.service
# yum install chrony -y
注释除 server 值外的所有内容,修改server地址。
- #将 syl-ct 替换为自己的NTP服务器的主机名或者IP地址,配置支持设置多个 server 值
-
- # Use public servers from the pool.ntp.org project.
- # Please consider joining the pool (http://www.pool.ntp.org/join.html).
- server syl-ct iburst
- # systemctl enable chronyd.service
- # systemctl start chronyd.service
在 Name/IP address 列应显示NTP服务器的主机名或者IP地址。
- [root@syl-ct ~]# chronyc sources
- 210 Number of sources = 4
- MS Name/IP address Stratum Poll Reach LastRx Last sample
- ===============================================================================
- ^+ time.cloudflare.com 3 9 377 42 -4322us[-4322us] +/- 94ms
- ^+ tock.ntp.infomaniak.ch 1 9 377 176 -3767us[-3954us] +/- 109ms
- ^* time.cloudflare.com 3 9 377 172 -4292us[-4479us] +/- 95ms
- ^+ ntp5.flashdance.cx 2 8 335 34 +2515us[+2515us] +/- 126ms
在 Name/IP address 列的内容应显示控制节点的主机名。
- [root@syl-cm1 ~]# chronyc sources
- 210 Number of sources = 1
- MS Name/IP address Stratum Poll Reach LastRx Last sample
- ===============================================================================
- ^? syl-ct 0 8 0 - +0ns[ +0ns] +/- 0ns
*这里描述的OpenStack软件包的设置需要在所有节点执行:控制器、计算和块存储节点。
在Centos上,存储库提供了启用OpenStack存储库的RPM。默认情况下,CentOS包括存储库,因此您可以简单地安装该包以启用OpenStack存储库。
# yum install centos-release-openstack-train -y
* 注意:如果升级过程包含新内核,请重启主机以激活它。
# yum upgrade -y
# yum install python-openstackclient -y
# yum install openstack-selinux -y
*大多数OpenStack服务使用SQL数据库来存储信息,数据库通常在 控制节点 上运行。
# yum install mariadb mariadb-server python2-PyMySQL -y
# vim /etc/my.cnf.d/openstack.cnf
添加一个 [mysqld] ,并将 bind-address 设置为控制节点的IP 地址或者主机名,为允许其他节点通过管理网络进行访问数据库。同时添加用于启用相关选项和 UTF-8 的附加键:
- [mysqld]
- bind-address = syl-ct
-
- default-storage-engine = innodb
- innodb_file_per_table = on
- max_connections = 4096
- collation-server = utf8_general_ci
- character-set-server = utf8
- # systemctl enable mariadb.service
- # systemctl start mariadb.service
* 注:此处需要按照指示进行每一步设置(yes 或者 no),同时需要设置数据库root用户密码(本文所用数据库root密码为123)
# mysql_secure_installation
注:建议所有MariaDB服务器在生产中使用本脚本的所有部分!请仔细阅读每一步!
为了登录MariaDB以确保其安全,我们需要root用户的当前密码。如果您刚刚安装了MariaDB,并且还没有设置根密码,则密码将为空,因此您只需在此处按enter键即可。
输入root用户的当前密码(enter for none):OK,成功使用密码,继续。。
设置root密码可确保未经适当授权,任何人都无法登录MariaDB root用户。
是否设置root密码?[Y/N] y
新密码: 此处设置数据库密码
再次输入新密码:密码更新成功!正在重新加载特权表。。
成功
默认情况下,MariaDB安装有一个匿名用户,允许任何人登录MariaDB,而无需为他们创建用户帐户。这只是为了测试,并使安装更加顺利。您应该在迁移到生产环境之前将其删除。
删除匿名用户?[Y/N] y
成功
通常,只应允许root从“localhost”进行连接。这样可以确保有人无法从网络中猜到根密码。
是否禁止root远程登录?[Y/N] y成功
默认情况下,MariaDB附带了一个名为“test”的数据库,任何人都可以访问。这也仅用于测试,在进入生产环境之前应将其删除。
是否删除测试数据库并访问它?[Y/N] y
-正在删除测试数据库。。
成功
-正在删除对测试数据库的权限。。
成功重新加载特权表将确保迄今为止所做的所有更改立即生效
是否立即重新加载特权表?[Y/N] y成功
正在清理。。。全部完成!如果您已经完成了上述所有步骤,您的MariaDB安装现在应该是安全的。
感谢您使用MariaDB!
OpenStack 使用消息队列来协调操作和服务之间的状态信息。消息队列服务通常在控制节点上运行。OpenStack 支持多个消息队列服务包括 RabbitMQ、Qpid 和 ZeroMQ, 但是,大多数打包 OpenStack 的发行版都支持特定的消息队列服务。本文使用 RabbitMQ 消息队列服务,因为大多数发行版都支持它。
* 此处消息队列在控制节点上运行
# yum install rabbitmq-server -y
- # systemctl enable rabbitmq-server.service
- # systemctl start rabbitmq-server.service
* openstack为用户名,123为密码(可以改为自己的密码)
- [root@syl-ct ~]# rabbitmqctl add_user openstack 123
- Creating user "openstack"
- [root@syl-ct ~]#
- [root@syl-ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
- Setting permissions for user "openstack" in vhost "/"
- [root@syl-ct ~]#
OpenStack认证服务的身份验证机制使用Memcached来缓存令牌。Memcached服务通常在控制节点上运行。在生产中部署时,建议启用防火墙、身份验证和加密的组合来确保其安全。
# yum install memcached python-memcached -y
/etc/sysconfig/memcached
- [root@syl-ct ~]# vim /etc/sysconfig/memcached
-
- PORT="11211"
- USER="memcached"
- MAXCONN="1024"
- CACHESIZE="64"
- OPTIONS="-l 127.0.0.1,::1,syl-ct" #仅在此行添加控制节点的主机名或IP
- # systemctl enable memcached.service
- # systemctl start memcached.service
OpenStack 服务可以使用 Etcd,一个分布式的可靠键值存储。 用于分布式密钥锁定、存储配置、跟踪服务活性等场景。
* etcd 服务在控制节点上运行。
# yum install etcd -y
将 localhost 替换为控制节点的主机名或 IP 地址 ,以允许其他节点通过管理网络进行访问:
* 如下,在使用 IP 的地方只能使用 IP,使用主机名的地方可以使用 主机名 或 IP
-
- #[Member]
- ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
- ETCD_LISTEN_PEER_URLS="http://192.168.214.10:2380"
- ETCD_LISTEN_CLIENT_URLS="http://192.168.214.10:2379"
- ETCD_NAME="syl-ct" # 此处替换为控制节点主机名
- #[Clustering]
- ETCD_INITIAL_ADVERTISE_PEER_URLS="http://syl-ct:2380"
- ETCD_ADVERTISE_CLIENT_URLS="http://syl-ct:2379"
- ETCD_INITIAL_CLUSTER="syl-ct=http://syl-ct:2380" # 此处格式为 主机名=http://主机名:2380
- ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
- ETCD_INITIAL_CLUSTER_STATE="new"
- # systemctl enable etcd
- # systemctl start etcd
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。