title: OpenStack系列之一:手动部署OpenStack Queens(1.环境)
categories: Linux
tags:
- OpenStack
timezone: Asia/Shanghai
date: 2019-01-21
参考
https://docs.openstack.org/zh_CN/
ocata中文:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/common/conventions.html
环境
[root@controller ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
约定
1.如无特殊说明,以下文章所有出现的```controller```均为控制节点计算机名称,请根据自己实际情况修改
2.如果特殊说明,以下文章所有出现的```xiaoliu```为所有默认密码
简介
控制节点:controller/10.0.1.61
计算节点:compute1/10.0.1.62
块存储:block1/10.0.1.63
示例架构假设使用如下网络:
管理使用 10.0.1.0/24 带有网关 10.0.1.1
这个网络需要一个网关以为所有节点提供内部的管理目的的访问,例如包的安装、安全更新、 DNS,和 NTP。
提供者网段 11.11.11.0/24,网关11.11.11.1
这个网络需要一个网关来提供在环境中内部实例的访问。
第一步:关闭防火墙并配置本地YUM(by all)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables
systemctl disable iptables
systemctl status firewalld
systemctl status iptables
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cat <<EOF >/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
EOF
第二步:配置网络接口(by all)
1.控制节点
- 1.将第一个接口配置为管理网络接口:
以下IP地址和网关请根据实际情况修改
IP 地址: 10.0.1.61
子网掩码: 255.255.255.0 (or /24)
默认网关: 10.0.1.1
- 2.配置第二块网卡作为提供者网络:
# 提供者网络接口使用一个特殊的配置,不分配给它IP地址。
# 编辑网卡配置文件包含以下内容:
# 不要改变 键``HWADDR`` 和 UUID 。
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
- 3.重启系统以激活修改。
init 6
- 4.配置域名解析
controller
为控制节点计算机名称,请根据自己情况更改
以下有1行为控制节点IP地址,请根据自己情况更改
以下控制节点和计算节点计算机名称,请根据自己情况更改
# 一些发行版本在``/etc/hosts``文件中添加了附加条目解析实际主机名到另一个IP地址如 127.0.1.1。
# 为了防止域名解析问题,你必须注释或者删除这些条目。不要删除127.0.0.1条目。
hostnamectl set-hostname controller
echo "10.0.1.61 controller" >>/etc/hosts
echo "10.0.1.62 compute1" >>/etc/hosts
echo "10.0.1.63 block1" >>/etc/hosts
2.计算节点
- 1.将第一个接口配置为管理网络接口:
以下IP地址和网关请根据实际情况修改
IP 地址: 10.0.1.62
子网掩码: 255.255.255.0 (or /24)
默认网关: 10.0.1.1
- 2.配置第二块网卡作为提供者网络:
# 提供者网络接口使用一个特殊的配置,不分配给它IP地址。
# 编辑网卡配置文件包含以下内容:
# 不要改变 键``HWADDR`` 和 UUID 。
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
- 3.配置域名解析
controller
为控制节点计算机名称,请根据自己情况更改
以下有1行为控制节点IP地址,请根据自己情况更改
以下控制节点和计算节点计算机名称,请根据自己情况更改
# 一些发行版本在``/etc/hosts``文件中添加了附加条目解析实际主机名到另一个IP地址如 127.0.1.1。
# 为了防止域名解析问题,你必须注释或者删除这些条目。不要删除127.0.0.1条目。
hostnamectl set-hostname compute1
echo "10.0.1.61 controller" >>/etc/hosts
echo "10.0.1.62 compute1" >>/etc/hosts
echo "10.0.1.63 block1" >>/etc/hosts
- 4.在主机上升级包并重启服务器
yum upgrade -y && init 6
第三步:网络时间协议(by all)
1.控制节点(设置阿里云服务器为同步服务器):
以下有两行为控制节点IP地址,请根据自己情况更改
# 安装chrony服务
yum install -y chrony
# 修改前备份chrony.conf
/bin/grep 666666 /etc/chrony.conf && /bin/cp /etc/chrony.conf.666666 /etc/chrony.conf || /bin/cp /etc/chrony.conf /etc/chrony.conf.666666
# 删除默认Server
sed -i "/server/d" /etc/chrony.conf
sed -i "/makestep/d" /etc/chrony.conf
# 新增阿里云服务器
echo "server ntp.aliyun.com iburst" >>/etc/chrony.conf
echo "makestep 1.0 -1" >>/etc/chrony.conf
# 允许其他节点可以连接到控制节点的 chrony 后台进程
echo "allow 10.0.1.0/24" >>/etc/chrony.conf
# 重启服务并查看状态是否正常并设置开机自动启动
systemctl enable chronyd.service
systemctl stop chronyd.service
systemctl start chronyd.service
systemctl status chronyd.service
chronyc tracking
2.计算节点(设置同步服务器为控制阶段):
controller
为控制节点计算机名称,,请根据自己情况更改
# 安装chrony服务
yum install -y chrony
# 修改前备份chrony.conf
/bin/grep 666666 /etc/chrony.conf && /bin/cp /etc/chrony.conf.666666 /etc/chrony.conf || /bin/cp /etc/chrony.conf /etc/chrony.conf.666666
# 删除默认Server
sed -i "/server/d" /etc/chrony.conf
sed -i "/makestep/d" /etc/chrony.conf
# 设置同步服务器为控制节点
echo "server controller iburst" >>/etc/chrony.conf
echo "makestep 1.0 -1" >>/etc/chrony.conf
# 重启服务并查看状态是否正常并设置开机自动启动
systemctl enable chronyd.service
systemctl stop chronyd.service
systemctl start chronyd.service
systemctl status chronyd.service
chronyc tracking
3.验证
chronyc sources
#验证结果展示
# 控制节点
[root@controller ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 6 377 4 -1741us[-3335us] +/- 13ms
# 计算节点
[root@centos181002 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* controller 3 6 7 1 +10us[+28901s] +/- 13ms
第四步:OpenStack包
警告:在你进行更多步骤前,你的主机必须包含最新版本的基础安装软件包。
警告:禁用或移除所有自动更新的服务,因为它们会影响到您的 OpenStack 环境。
警告:当使用RDO包时,我们推荐禁用EPEL,原因是EPEL中的更新破坏向后兼容性。或者使用yum-versionlock
插件指定包版本号。
1.启用OpenStack库
在CentOS中, extras
仓库提供用于启用 OpenStack 仓库的RPM包。 CentOS 默认启用extras
仓库,因此你可以直接安装用于启用OpenStack仓库的包。
yum install -y centos-release-openstack-queens
2.完成安装
1.在主机上升级包并重启服务器
yum upgrade -y && init 6
2.安装 OpenStack 客户端
# 安装 OpenStack 客户端
# RHEL 和 CentOS 默认启用了 SELinux
# 安装 openstack-selinux 软件包以便自动管理 OpenStack 服务的安全策略:
yum install -y python-openstackclient openstack-selinux
第五步:SQL数据库
大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上。指南中的步骤依据不同的发行版使用MariaDB或 MySQL。OpenStack 服务也支持其他 SQL 数据库,包括`PostgreSQL
1.安装软件包
yum install -y mariadb mariadb-server python2-PyMySQL
2.创建并编辑 /etc/my.cnf.d/openstack.cnf,然后完成如下动作:
bind-address
为控制节点IP地址
# 在 [mysqld] 部分,设置 ``bind-address``值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库:
# 在``[mysqld]`` 部分,设置如下键值来启用一起有用的选项和 UTF-8 字符集:
cat <<EOF >/etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 10.0.1.61
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
3.完成安装
1.启动数据库服务,并将其配置为开机自启:
systemctl enable mariadb.service
systemctl stop mariadb.service
systemctl start mariadb.service
systemctl status mariadb.service
2.初始化数据库并为root用户设置密码
mysql_secure_installation
Enter current password for root (enter for none): # 输入密码,默认为空
Set root password? [Y/n] y # 是否设置root密码
Remove anonymous users? [Y/n] y # 是否移除anonymous用户
Disallow root login remotely? [Y/n] n # 是否禁止远程登录
Remove test database and access to it? [Y/n] y # 是否移除默认的演示数据库
Reload privilege tables now? [Y/n] y # 是否重新加载权限表?
3.使用刚设置的密码登录数据库,以验证密码是否成功设置
mysql -uroot -p
show databases;
第六步:NoSQL数据库
1.设置MongoDB官方YUM源并安装
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
# 设置官方YUM源(版本:4.0)
cat <<EOF >/etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
# 安装
yum install -y mongodb-org-server
# 固定MongoDB版本,禁止YUM自动更新
# echo "exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools" >> /etc/yum.conf
2.编辑文件 /etc/mongod.conf 并完成如下动作:
bind_ip
为控制节点管理地址,请根据自己实际情况修改
# 配置 bind_ip 使用控制节点管理网卡的IP地址。
# 默认情况下,MongoDB会在``/var/lib/mongodb/journal`` 目录下创建几个 1 GB 大小的日志文件。
# 如果你想将每个日志文件大小减小到128MB并且限制日志文件占用的总空间为512MB,配置 smallfiles 的值:
# 你也可以禁用日志。更多信息,可以参考 `MongoDB 手册<http://docs.mongodb.org/manual/>`__。
vim /etc/mongod.conf
bind_ip = 10.0.1.61 # 本行在4.0里格式略有不同,已默认配置文件格式为准
# smallfiles = true # 本行在4.0版本里不适用,不添加。
3.完成安装:启动MongoDB 并配置它随系统启动
systemctl enable mongod.service
systemctl stop mongod.service
systemctl start mongod.service
systemctl status mongod.service
第七步:消息队列
OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。不过,大多数发行版本的OpenStack包支持特定的消息队列服务。本指南安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。如果你想安装不同的消息队列服务,查询与之相关的文档。
1.安装、启动消息队列服务并将其配置为随系统启动
yum install -y rabbitmq-server
systemctl enable rabbitmq-server.service
systemctl stop rabbitmq-server.service
systemctl start rabbitmq-server.service
systemctl status rabbitmq-server.service
2.添加 openstack 用户并给openstack
用户配置写和读权限
请自行修改密码
xiaoliu
rabbitmqctl add_user openstack xiaoliu
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
第八步:Memcached
认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
1.安装
yum install -y memcached python-memcached
2.编辑/etc/sysconfig/memcached文件并完成以下操作:
配置服务以使用控制器节点的管理IP地址。这是为了通过管理网络启用其他节点的访问:
这里IP地址为控制节点IP,请根据自己实际情况修改
cp /etc/sysconfig/memcached /etc/sysconfig/memcached.bak
vim /etc/sysconfig/memcached
OPTIONS="-l 127.0.0.1,::1,controller"
改为
OPTIONS="-l 10.0.1.61,::1,controller"
3.启动Memcached服务,并且配置它随机启动
systemctl enable memcached.service
systemctl stop memcached.service
systemctl start memcached.service
systemctl status memcached.service
第九步:Etcd
OpenStack服务可以使用Etcd,一种分布式可靠的键值存储,用于分布式密钥锁定,存储配置,跟踪服务生存和其他场景。
1.安装和配置组件
yum install -y etcd
2.编辑/etc/etcd/etcd.conf文件
设置ETCD_INITIAL_CLUSTER, ETCD_INITIAL_ADVERTISE_PEER_URLS,ETCD_ADVERTISE_CLIENT_URLS, ETCD_LISTEN_CLIENT_URLS控制器节点,以使经由管理网络通过其他节点的访问的管理IP地址:
cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
vim /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.0.1.61:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.1.61:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.1.61:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.1.61:2379"
ETCD_INITIAL_CLUSTER="controller=http://10.0.1.61:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
3.完成安装:启用并启动etcd服务
systemctl enable etcd
systemctl stop etcd
systemctl start etcd
systemctl status etcd
附录(本页控制节点所有yum安装摘录):
yum install -y centos-release-openstack-queens
yum upgrade -y && init 6
# 设置官方YUM源(版本:4.0)
cat <<EOF >/etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
# 安装
yum install -y python-openstackclient \
openstack-selinux \
mariadb mariadb-server \
python2-PyMySQL \
mongodb-org-server \
rabbitmq-server \
memcached python-memcached \
etcd \
chrony