OpenStack系列之一:手动部署OpenStack Queens(1.环境)


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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容