参考资料
-
OpenStack 官方网站
-
Openstack 文档库
-
OpenStack 版本更新频次
-
半年更新一次版本 -
A,B,C,D….K 版 L M N O Pike Q R S T U V W X Y Z 版 -
VMware workstation 软件
-
关闭 DHCP 功能 -
开启虚拟机 CPU 虚拟化功能:“虚拟化 Intel VT-x/EPT 选项或 AMD-V/RVI(V)”
操作系统版本选择
-
Linux 分发版:centos7.9 Minimal -
Centos7.9 Minimal 版本,Centos 官方网站下载;Openstack Queen 版可以安装到 Centos7 系统上,T 版及以后的版本需要 Centos8 系统(Cenos8 版本已停止维护,不建议使用);当然也可以选择 Debian、SUSE 及 Ubuntu 系统,不过生产环境中 Ubuntu 用的还很少。如果大家熟悉 Debian 系统,推荐 Debian。 -
OpenStack 的选择版本 -
Openstack Queen 版;当然其他的版本也可以,它们之间的安装过程差异极小,只要学会一个版本,其他任何版本都将没有任何问题。 -
内核版本 -
默认即可
OpenStack 逻辑架构
OpenStack 组件间逻辑关系架构图
Openstack 八大核心组件
-
Keystone – 身份识别服务(identy service) -
Glance – 镜像服务(Image service) -
Nova – 计算机服务 (Compute) -
Neutron – 网络服务 (networking service) -
Cinder – 块存储服务(block storage service) -
Swift – 对象存储服务 (object storage service) -
Ceilometer – 计费服务 (Telemetry) -
Horizon – UI 界面,控制面板服务 (Dashboard)
❝
安装配置 OpenStack 之前,一定要先彻底理解各大服务组件之间的关系!然后整个安装过程将变得相对容易的多,而且也方便排错。
❞
实验环境集群架构设计
硬件环境需求设计
使用 2 台虚拟机作为 OpenStack 核心服务器:Controller 节点、Compute 节点
角色 | 主机名 | IP | 内存 | CPU | 硬盘 | 网卡 |
---|---|---|---|---|---|---|
控制节点 | controller | 管理地址:10.0.0.11 业务地址:172.17.2.114 |
4G | 2 核 | 1 块 20G | 2 |
计算节点 | compute1 | 管理地址:10.0.0.31 业务地址:172.17.2.31 |
2G | 2 核 | 2 块 20G | 2 |
网络架构需求设计
虚拟机网卡工作模式
-
第 1 块网卡工作在“NAT 模式”,作为业务网络,可以连接互联网; -
第 2 块网卡:工作在“仅主机模式”,作为管理网络,实现 OpenStack 服务内部件通信。
IP 地址分配
-
业务网络:172.17.2.0/24,分配给第 1 块网卡; -
管理网络:10.0.0.0/24,分配给第 2 块网卡。
OpenStack 各服务组件
-
「controller node」
-
Mariadb – 数据库服务 -
RabbitMQ-消息队列 -
Keystone – 身份识别服务(identy service) -
Glance – 镜像服务(Image service) -
Nova – 计算服务 (Compute) -
Neutron – 网络服务 (networking service) -
Horizon – 控制面板服务 (Dashboard)
-
「compute node」
-
Nova – 计算服务 (Compute) -
Neutron – 网络服务 (networking service)
OpenStack 服务默认密码参考
OpenStack 各服务组件默认使用的相关密码,我们刚开始学习 OpenStack,建议保持默认,否则容易出错。
密码名称 | 描述 |
---|---|
数据库密码(不能使用变量) | 数据库的 root 密码 |
ADMIN_PASS |
admin 用户密码 |
CINDER_DBPASS |
块设备存储服务的数据库密码 |
CINDER_PASS |
块设备存储服务的 cinder 密码 |
DASH_DBPASS |
Database password for the Dashboard |
DEMO_PASS |
demo 用户的密码 |
GLANCE_DBPASS |
镜像服务的数据库密码 |
GLANCE_PASS |
镜像服务的 glance 用户密码 |
KEYSTONE_DBPASS |
认证服务的数据库密码 |
METADATA_SECRET |
Secret for the metadata proxy |
NEUTRON_DBPASS |
网络服务的数据库密码 |
NEUTRON_PASS |
网络服务的 neutron 用户密码 |
NOVA_DBPASS |
计算服务的数据库密码 |
NOVA_PASS |
计算服务中nova 用户的密码 |
PLACEMENT_PASS |
Password of the Placement service user placement |
RABBIT_PASS |
Password of RabbitMQ user openstack |
基础环境配置
VMware 虚拟网络
「VMnet8:NAT 模式,172.17.2.0/24」
「VMnet1:仅主机模式,10.0.0.0/24」
关闭防火墙与 SeLinux
controller 与 compute1 都要执行
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭SeLinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled' /etc/sysconfig/selinux
修改主机名
controller
hostnamectl set-hostname controller
bash
compute1
hostnamectl set-hostname compute1
bash
修改 IP 地址
controller
#查看本机网卡命名,分别是:ens32、ens34
[root@controller ~]#ip link
1: lo:
...
2: ens32:
...
3: ens34:
...
#修改/etc/sysconfig/network-scripts/ifcfg-ens3N配置文件,第一块网卡配置业务IP,可以上网;第二块网卡配置管理IP。
[root@controller ~]#cd /etc/sysconfig/network-scripts
[root@controller network-scripts]#cat <<EOF >ifcfg-ens32
DEVICE=ens32
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
IPADDR=172.17.2.11
PREFIX=24
GATEWAY=172.17.2.2
DNS1=223.5.5.5
DNS2=223.6.6.6
EOF
[root@controller network-scripts]#cat <<EOF >ifcfg-ens34
DEVICE=ens34
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
IPADDR=10.0.0.11
PREFIX=24
EOF
#启动网卡服务
[root@controller network-scripts]# systemctl restart network
[root@controller network-scripts]# ifup ens34
[root@controller ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:af:89:da brd ff:ff:ff:ff:ff:ff
inet 172.17.2.11/24 brd 172.17.2.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feaf:89da/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:af:89:e4 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.11/24 brd 10.0.0.255 scope global ens34
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feaf:89e4/64 scope link
valid_lft forever preferred_lft forever
#测试网络连通性
[root@controller ~]# ping -c 2 www.openstack.org
PING www.openstack.org.cdn.cloudflare.net (104.20.15.8) 56(84) bytes of data.
64 bytes from 104.20.15.8 (104.20.15.8): icmp_seq=1 ttl=128 time=202 ms
64 bytes from 104.20.15.8 (104.20.15.8): icmp_seq=2 ttl=128 time=204 ms
--- www.openstack.org.cdn.cloudflare.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 202.523/203.313/204.103/0.790 m
compute1
#查看本机网卡命名,分别是:ens32、ens34
[root@compute1 ~]#ip link
1: lo:
...
2: ens32:
...
3: ens34:
...
#修改/etc/sysconfig/network-scripts/ifcfg-ens3N配置文件,第一块网卡配置业务IP 172.17.2.31,可以上网
[root@controller ~]#cd /etc/sysconfig/network-scripts
[root@controller network-scripts]#cat <<EOF >ifcfg-ens32
DEVICE=ens32
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
IPADDR=172.17.2.31
PREFIX=24
GATEWAY=172.17.2.2
DNS1=223.5.5.5
DNS2=223.6.6.6
EOF
#第二块网卡配置管理IP 10.0.0.31,OpenStack内部服务互通。
[root@controller network-scripts]#cat <<EOF >ifcfg-ens34
DEVICE=ens34
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
IPADDR=10.0.0.31
PREFIX=24
EOF
#启动网卡服务
[root@controller network-scripts]# systemctl restart network
[root@controller network-scripts]# ifup ens34
[root@controller ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:af:89:da brd ff:ff:ff:ff:ff:ff
inet 172.17.2.31/24 brd 172.17.2.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feaf:89da/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:af:89:e4 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.31/24 brd 10.0.0.255 scope global ens34
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feaf:89e4/64 scope link
valid_lft forever preferred_lft forever
#测试网络连通性
[root@controller ~]# ping -c 2 www.openstack.org
PING www.openstack.org.cdn.cloudflare.net (104.20.15.8) 56(84) bytes of data.
64 bytes from 104.20.15.8 (104.20.15.8): icmp_seq=1 ttl=128 time=202 ms
64 bytes from 104.20.15.8 (104.20.15.8): icmp_seq=2 ttl=128 time=204 ms
--- www.openstack.org.cdn.cloudflare.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 202.523/203.313/204.103/0.790 m
配置/etc/hosts 文件
「controller node 配置」
[root@controller ~]# cat <<EOF >> /etc/hosts
10.0.0.11 controller
10.0.0.31 compute1
EOF
[root@controller ~]# tail -2 /etc/hosts
10.0.0.11 controller
10.0.0.31 compute1
「compute node 配置」
[root@compute1 ~]# cat <<EOF >> /etc/hosts
10.0.0.11 controller
10.0.0.31 compute1
EOF
[root@compute1 ~]# tail -2 /etc/hosts
10.0.0.11 controller
10.0.0.31 compute1
#测试
[root@controller ~]# ping -c 1 controller
PING controller (10.0.0.11) 56(84) bytes of data.
64 bytes from controller (10.0.0.11): icmp_seq=1 ttl=64 time=0.011 ms
--- controller ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.011/0.011/0.011/0.000 ms
阿里云 yum 源
「controller 与 compute1 都要执行」
#获取阿里云yum配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#构建yum索引缓存
yum makecache
#系统升级
yum update -y
#重启
reboot
❝
实际配置前,最好先看下阿里云官方的参考资料,以防 yum 源配置发生了改变。具体查看官方参考链接,选择“centos”!
❞
NTP 时间服务:chrony
集群环境必须保证各节点时间一致。
controller,对时中心指向互联网阿里云对时服务器;compute,对时中心指向 controller。
「controller node 作为 NTP Server」
[root@controller ~]# yum -y install chrony
[root@controller ~]# vim /etc/chrony.conf
# Please consider joining the pool (http://www.pool.ntp.org/join.html).指定阿里云对时服务器作为对时中心。
server ntp.aliyun.com iburst
...
# Allow NTP client access from local network.指定允许对时的局域网IP地址范围
allow 10.0.0.0/24
...
[root@controller ~]# systemctl restart chronyd
[root@controller ~]# systemctl enable chronyd
「compute node 作为 NTP Client」
[root@compute1 ~]# yum -y install chrony
[root@compute1 ~]# vim /etc/chrony.conf
# Please consider joining the pool (http://www.pool.ntp.org/join.html).指定阿里云对时服务器作为对时中心。
server 10.0.0.11 iburst
...
[root@compute1 ~]# systemctl restart chronyd
[root@compute1 ~]# systemctl enable chronyd
验证
「controller node:」
[root@controller ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 10 377 524 -1381us[-1715us] +/- 26ms
「compute node」
[root@compute1 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 10.0.0.11 3 6 377 62 +94us[ +214us] +/- 25ms
#随便修改一个错误的时间,然后重启chrony服务,验证看看是否可以正确对时。
[root@compute1 ~]# date -s "2020-10-1"
Thu Oct 1 00:00:00 CST 2020
[root@compute1 ~]# systemctl restart chronyd
#对时成功
[root@compute1 ~]# date
Wed Dec 29 12:38:41 CST 2021
安装基础软件包
「controller node」与「compute node」都要执行
#
yum -y install net-tools bash-completion vim pcre pcre-devel expat-devel unzip lrzsz
#---------------------
net-tools ifconfig命令行工具
bash-completion bash自动补全工具
vim vim工具
pcre pcre-devel 是一个Perl库,包括 perl 兼容的正则表达式库
expat-devel Expat库,Expat是一个面向流的xml解析器
unzip zip压缩包解压工具
lrzsz 可使用rz、sz命令上传、下载数据
安装 OpenStack 基础软件包
「controller node」 与「compute node」 都要执行
#安装配置OpenStack yum软件库(queen版本),其他版本同理;安装openstack-utils,后续直接可以通过命令行方式修改配置文件。
yum -y install centos-release-openstack-queen openstack-utils
#查看/etc/yum.repos.d/目录中OpenStack yum库配置文件
ll /etc/yum.repos.d/ |grep queens
-rw-r--r-- 1 root root 1201 Aug 13 2018 CentOS-OpenStack-queens.repo
#升级
yum upgrade -y
#安装OpenStack client及 openstack-selinux
yum install python-openstackclient openstack-selinux
OpenStack 基础服务组件安装
Mariadb 数据库
安装配置 Mariadb 数据库
「controller node 安装」
-
安装包
[root@controller ~]#yum install mariadb mariadb-server python2-PyMySQL -y
-
创建 /etc/my.cnf.d/openstack.cnf
配置文件
[mysqld]
段,重点bind-address
地址为 OpenStack 管理地址:10.0.0.11
[root@controller ~]# cd /etc/my.cnf.d/
[root@controller my.cnf.d]# vim openstack.cnf
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
启动 mariadb 服务
-
启动数据库服务,并将其配置为开机自启:
[root@controller ~]# systemctl enable mariadb.service
[root@controller ~]# systemctl start mariadb.service -
安全初始化数据库
[root@controller my.cnf.d]# mysql_secure_installation
Enter current password for root (enter for none): ##当前数据库密码,回车;
Set root password? [Y/n] n ##设置数据库root密码,为了方便,可以设置为空密码
Remove anonymous users? [Y/n] y ##移除匿名账号
Disallow root login remotely? [Y/n] y ##禁用root账号的远程登录
Remove test database and access to it? [Y/n] y ##移除test数据库
Reload privilege tables now? [Y/n] y ##重新刷新权限
-
验证
[root@controller ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 10
Server version: 10.1.20-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [(none)]> exit
Bye
消息阵列:rabbitmq
controller node 安装
安装配置 rabbitmq
-
安装软件包
[root@controller ~]# yum install rabbitmq-server -y
-
启动消息队列服务并将其配置为随系统启动:
[root@controller ~]#systemctl enable rabbitmq-server.service
[root@controller ~]#systemctl start rabbitmq-server.service
-
添加 openstack
用户:
[root@controller ~]#rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ...
-
给 openstack
用户配置写和读权限:
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"
验证
#查看当前用户
[root@controller ~]# rabbitmqctl list_users
Listing users
openstack []
guest [administrator]
#查看开启端口
[root@controller ~]# ss -lntp |grep -E "(beam|epmd)"
LISTEN 0 128 *:25672 *:* users:(("beam.smp",pid=2607,fd=46))
LISTEN 0 128 *:4369 *:* users:(("epmd",pid=2702,fd=3),("systemd",pid=1,fd=66))
LISTEN 0 128 [::]:5672 [::]:* users:(("beam.smp",pid=2607,fd=55))
❝
rabbitmq 端口:
数据端口:tcp 5672;管理端口:tcp 25672
❞
Memcached 服务
各类服务的身份认证机制使用 Memcached 缓存令牌。缓存服务 memecached 通常运行在控制节点。
安装配置 Memcached 服务
「controller node 安装」
-
安装软件包
[root@controller ~]# yum install memcached python-memcached -y
-
编辑 /etc/sysconfig/memcached
文件并完成如下操作:
-
为了使其他节点能够通过管理网络(10.0.0.0/24 网段)访问这些服务,请使用控制节点的管理 IP 配置这些服务.
OPTIONS="-l 127.0.0.1,::1,controller"
❝
注解:
修改包含
OPTIONS="-l 127.0.0.1,::1"
的那一行。❞
启动 Memcached 服务
[root@controller ~]# systemctl enable memcached.service
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@controller ~]# systemctl start memcached.service
验证
memcached 服务开启 tcp11211 端口
[root@controller ~]# ss -lnutp |grep 11211
tcp LISTEN 0 128 10.0.0.11:11211 *:* users:(("memcached",pid=5140,fd=28))
tcp LISTEN 0 128 127.0.0.1:11211 *:* users:(("memcached",pid=5140,fd=26))
tcp LISTEN 0 128 [::1]:11211 [::]:* users:(("memcached",pid=5140,fd=27))
Etcd 服务
「controller node 安装」
安装 etcd 软件包
[root@controller ~]# yum install etcd -y
编辑“/etc/etcd/etcd.conf`
[root@controller ~]# cd /etc/etcd/
[root@controller etcd]# cp -a etcd.conf etcd.conf.bak
[root@controller etcd]# cat <<EOF >etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
启动 etcd 服务
[root@controller etcd]# systemctl enable etcd
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
[root@controller etcd]# systemctl start etcd
验证
[root@controller etcd]# ps -ef |grep etcd
etcd 7493 1 0 22:27 ? 00:00:00 /usr/bin/etcd --name=controller --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://10.0.0.11:2379
root 7582 1447 0 22:29 pts/0 00:00:00 grep --color=auto etcd
[root@controller etcd]# ss -lntup |grep 7493
tcp LISTEN 0 128 10.0.0.11:2379 *:* users:(("etcd",pid=7493,fd=6))
tcp LISTEN 0 128 10.0.0.11:2380 *:* users:(("etcd",pid=7493,fd=5))
❝
注解:
etcd 开启 2 个 tcp 端口,分别是:tcp2379、tcp2380
❞
往期推荐
原文始发于微信公众号(带米的笨老头):
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/20861.html