OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。
在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。

OpenStack离线安装系列—0制作yum源
OpenStack离线安装系列—1控制节点-环境准备
OpenStack离线安装系列—2计算节点-环境准备
OpenStack离线安装系列—3控制节点-Keystone认证服务组件
OpenStack离线安装系列—4控制节点-Glance镜像服务组件
OpenStack离线安装系列—5控制节点-Placement服务组件
OpenStack离线安装系列—6.1控制节点-Nova计算服务组件
OpenStack离线安装系列—6.2计算节点-Nova计算服务组件
OpenStack离线安装系列—6.3控制节点-Nova计算服务组件
OpenStack离线安装系列—7.1控制节点-Neutron网络服务组件
OpenStack离线安装系列—7.2计算节点-Neutron网络服务组件
OpenStack离线安装系列—7.3控制节点-Neutron网络服务组件
OpenStack离线安装系列—8.控制节点-Horizon服务组件
OpenStack离线安装系列—9.启动一个实例

未完待续。。。。。。


控制节点环境准备

一、部署规划

官方参考链接:OpenStack安装指南:环境,OpenStack安装指南:服务组件
CSDN博客参考:CentOS7安装OpenStack(Rocky版)-01.控制节点的系统环境准备

1.系统说明

(1)服务器操作系统
系统:Centos7
版本:CentOS-7-x86_64-Minimal-1908
镜像:阿里云下载地址CentOS-7-x86_64-Minimal-1908

(2)开发环境
VMware workstation Pro

(3)OpenStack版本:Train

2.部署规划

OpenStack离线Train版安装系列—1控制节点-环境准备_第1张图片
(1)节点说明
控制节点:controller,服务组件
计算节点:compute1,服务组件
可选节点:block等,其他各种服务组件。。。等

(2)物理网络
在部署之前做好网络部署规划,相关参考OpenStack官方安装指南:环境-网络。
①管理网IP地址段选择,建议使用使用官方文档中的示例地址段;
②物理网卡1,默认使用第1张网卡ens33,作为管理网卡;
③物理网卡2,可以为供应商网络;provider network。
至少准备两张网卡,建议网卡数量≥3.

管理网络:10.0.0.0/24;
供应网络:192.168.2.0/24,(使用网卡,以及使用网段可以根据实际情况进行确定);

(3)虚拟网络

  • 供应网络:192.168.2.0/24,ens34,根据实际情况确定;参考launch-instance-networks-provider
    OpenStack离线Train版安装系列—1控制节点-环境准备_第2张图片

OpenStack离线Train版安装系列—1控制节点-环境准备_第3张图片

  • 私有网络1:172.16.0.0/24,实例私有局域网;参考launch-instance-networks-selfservice
    OpenStack离线Train版安装系列—1控制节点-环境准备_第4张图片

OpenStack离线Train版安装系列—1控制节点-环境准备_第5张图片

(4)规划概览

主机名 管理网络 网卡1 供应网络 网卡2 配置
controller 10.0.0.11 ens33 192.168.2.11 ens34 4C8G64G
compute1 10.0.0.31 ens33 192.168.2.31 ens34 4C8G64G
compute2 10.0.0.32 ens33 192.168.2.32 ens34 4C8G64G
compute3 10.0.0.33 ens33 192.168.2.33 ens34 4C8G64G

注:更多节点类型,可以依次递增,但最好完成各类网络的规划。

本教程实际测试为,在后面的教程中以下面的地址为准。

主机名 管理网络 网卡1 供应网络 网卡2 配置
controller 192.168.232.101 ens33 192.168.2.101 ens34 4C8G64G
compute1 192.168.232.111 ens33 192.168.2.111 ens34 4C8G64G
compute2 192.168.232.112 ens33 192.168.2.112 ens34 4C8G64G
compute3 192.168.232.113 ens33 192.168.2.113 ens34 4C8G64G

二、环境准备

1.基础网络

(1)网卡配置
博客参考:Centos7设置静态IP地址,CentOS7设置静态IP而且还可以上网
配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33

[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
# BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
# IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ea1c227b-1fad-48f0-942f-968d183b3523"
DEVICE="ens33"
ONBOOT="yes"

# add follow
BOOTPROTO="static"
IPADDR="192.168.232.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.232.2"
DNS1="1.1.1.1"

(2)网关配置
配置文件:/etc/networks

[root@controller ~]# cat /etc/networks
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0

#add follow
NETWORKING=yes
GATEWAY=192.168.232.2

2.主机名称

(1)文件修改

配置文件/etc/hosts
控制节点

[root@controller ~]# hostnamectl set-hostname controller
echo 192.168.232.101 controller >> /etc/hosts
echo 192.168.232.111 compute1 >> /etc/hosts
echo 192.168.232.112 compute2 >> /etc/hosts
echo 192.168.232.113 compute3 >> /etc/hosts

计算节点1

[root@compute1 ~]# hostnamectl set-hostname compute1
echo 192.168.232.101 controller >> /etc/hosts
echo 192.168.232.111 compute1 >> /etc/hosts
echo 192.168.232.112 compute2 >> /etc/hosts
echo 192.168.232.113 compute3 >> /etc/hosts

计算节点2

[root@compute2 ~]# hostnamectl set-hostname compute2
echo 192.168.232.101 controller >> /etc/hosts
echo 192.168.232.111 compute1 >> /etc/hosts
echo 192.168.232.112 compute2 >> /etc/hosts
echo 192.168.232.113 compute3 >> /etc/hosts

计算节点3

[root@compute3 ~]# hostnamectl set-hostname compute3
echo 192.168.232.101 controller >> /etc/hosts
echo 192.168.232.111 compute1 >> /etc/hosts
echo 192.168.232.112 compute2 >> /etc/hosts
echo 192.168.232.113 compute3 >> /etc/hosts

存储节点(可选),参考官方说明官方environment-networking-storage-cinder
注:
①某些发行版本在/etc/hosts 文件中添加了多余的条目,该条目将实际的主机名解析为另一个回送IP地址,例如127.0.1.1。如果有的话,则必须将其注释或删除,以防止名称解析问题。
②不要删除127.0.0.1条目。
③每一个节点都需要对其他节点进行主机名的解析配置。
主机名修改完成后,退出当前终端,重新登录服务器。

(2)验证连通性

在每一个节点都要进行连通性测试,最后一条ping qq.com,管理网络不一定需要和公用互联网络连通。

ping -c 4 controller
ping -c 4 compute1
ping -c 4 compute2
ping -c 4 compute3
ping -c 4 qq.com

3.免密登录

【可选】

  • 在此之前,需要先进行root密码的设置
  • 以及允许root的ssh远程登陆(一般为permissionrootlogin项)设置为yes,并且重启ssh服务
  • 至少保证控制节点和计算节点,(如果需要配置所有控制和计算节点相互之间的无密码登录,每个节点都 要进行以下操作。)

控制节点计算节点

[root@controller ~]# ssh-keygen -t rsa			#生成公私钥文件,连续回车
[root@controller ~]# ssh-copy-id controller		#将公钥复制到目标机器中,需要输入当前用户为root,对应controller主机的也应是root的密码
[root@controller ~]# ssh controller				#测试登录,然后exit退出测试终端

[root@controller ~]# ssh-copy-id compute1 		#将公钥复制到目标机器中,需要输入当前用户为root,对应compute1主机的也应是root的密码
[root@controller ~]# scp -r .ssh compute1:~/ 	#文件复制到compute1,完成相互免密登录。
[root@controller ~]# ssh compute1				#测试登录,然后exit退出测试终端

[root@controller ~]# ssh-copy-id compute2 		#将公钥复制到目标机器中,需要输入当前用户为root,对应compute2主机的也应是root的密码
[root@controller ~]# scp -r .ssh compute2:~/ 	#文件复制到compute2,完成相互免密登录。
[root@controller ~]# ssh compute2				#测试登录,然后exit退出测试终端
。。。

4.禁用防火墙

(1)关闭iptables

在CentOS7上面是firewalld服务,停止并且禁止开机启动firewalld.service

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

(2)关闭 selinux

setenforce 0
getenforce
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
grep SELINUX=disabled /etc/sysconfig/selinux

5.yum源配置

(1)新建repo文件

首先移除原系统自带的repo文件,避免和新建的配置文件内容冲突

cd
mkdir ori_repo-config
mv /etc/yum.repos.d/* ./ori_repo-config/
touch /etc/yum.repos.d/CentOS-PrivateLocal.repo
vim /etc/yum.repos.d/CentOS-PrivateLocal.repo

文件内容:/etc/yum.repos.d/CentOS-PrivateLocal.repo

[base]
name=CentOS-$releasever - Base
baseurl=http://192.168.2.111/yumrepository/base/
gpgcheck=0
enabled=1

[updates]
name=CentOS-$releasever - Updates
baseurl=http://192.168.2.111/yumrepository/updates/
gpgcheck=0
enabled=1

[extras]
name=CentOS-$releasever - Extras
baseurl=http://192.168.2.111/yumrepository/extras/
gpgcheck=0
enabled=1

[centos-openstack-train]
name=CentOS-7 - OpenStack train
baseurl=http://192.168.2.111/yumrepository/centos-openstack-train/
gpgcheck=0
enabled=1

[centos-qemu-ev]
name=CentOS-$releasever - QEMU EV
baseurl=http://192.168.2.111/yumrepository/centos-qemu-ev/
gpgcheck=0
enabled=1

[centos-ceph-nautilus]
name=CentOS-7 - Ceph Nautilus
baseurl=http://192.168.2.111/yumrepository/centos-ceph-nautilus/
gpgcheck=0
enabled=1

[centos-nfs-ganesha28]
name=CentOS-7 - NFS Ganesha 2.8
baseurl=http://192.168.2.111/yumrepository/centos-nfs-ganesha28/
gpgcheck=0
enabled=1

(2)更新软件源

[root@controller ~]# yum clean all
[root@controller ~]# yum makecache
[root@controller ~]# yum repolist
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                 repo name                     status
base                    CentOS-7 - Base               10097 
centos-ceph-nautilus    CentOS-7 - Ceph Nautilus      224 
centos-nfs-ganesha28    CentOS-7 - NFS Ganesha 2.8    140 
centos-openstack-train  CentOS-7 - OpenStack train    2323 
centos-qemu-ev          CentOS-7 - QEMU EV            87 
extras                  CentOS-7 - Extras             341 
updates                 CentOS-7 - Updates            1787 
repolist: 14999
[root@controller ~]# 

三、系统基础软件安装

1.Linux工具

yum install -y lsof vim net-tools wget git 

2.NTP时间同步

官方参考:OpenStack官方文档:环境-NTP
博客园参考:CentOS7安装OpenStack(Rocky版)-01.控制节点的系统环境准备

yum  -y install chrony
vim /etc/chrony.conf

(1)编辑chrony.conf文件,添加以下内容。

# add follow
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
allow 192.168.232.2/24

注意:
①替换NTP_SERVER为合适的更准确(较低层)NTP服务器的主机名或IP地址。
②该配置支持多个server键。默认情况下,控制器节点通过公共服务器池同步时间。但是也可以选择配置备用服务器,例如组织提供的服务器。
③要使其他节点能够连接到控制器节点上的chrony守护程序,请将此密钥添加到上述相同的chrony.conf文件中:allow 10.0.0.0/24,如有必要,请替换10.0.0.0/24为您的子网描述。

(2)重新启动NTP服务,并配置开机启动:

systemctl restart chronyd.service
systemctl status chronyd.service
systemctl enable chronyd.service
systemctl list-unit-files |grep chronyd.service

(3)设置时区,同步时间

timedatectl set-timezone Asia/Shanghai
chronyc sources
timedatectl status
[root@controller ~]# timedatectl set-timezone Asia/Shanghai
[root@controller ~]# chronyc sources
210 Number of sources = 6
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- 139.199.214.202               2   9   377   424  +2409us[+2409us] +/-   33ms
^- 4-53-160-75.rev.nuso.clo>     2   9   173    57    -19ms[  -19ms] +/-  165ms
^- hydra.spiderspace.co.uk       2   9   157   599  +2178us[+2178us] +/-  139ms
^- srcf-ntp.stanford.edu         2   9   137     3    +15ms[  +15ms] +/-  118ms
^* 120.25.115.20                 2   9   377   779  +1182us[+1340us] +/-   10ms
^- 203.107.6.88                  2  10   377   403  -5063us[-5063us] +/-   37ms
[root@controller ~]# timedatectl status
      Local time: Wed 2020-04-22 14:33:50 CST
  Universal time: Wed 2020-04-22 06:33:50 UTC
        RTC time: Wed 2020-04-22 06:26:21
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@controller ~]#

四、OpenStack基础软件安装

1、(省略)OpenStack仓库安装

【所有节点】
在进行本地源配置的时候已经将本地仓库中的相关yum源配置其中,故此步骤周可省略。
OpenStack官方文档environment-packages-rdo

  • On CentOS, the extras repository provides the RPM that enables the OpenStack repository.
  • CentOS includes the extras repository by default, so you can simply install the package to enable the OpenStack repository.
yum clean all
yum makecache
yum repolist
yum update -y #可选
yum install centos-release-openstack-train -y
yum clean all
yum makecache

2.OpenStack客户端相关软件

yum install python-openstackclient openstack-selinux -y
yum install openstack-utils -y #用于OpenStack配置文件的快速配置

3.数据库SQL database

(1)安装mariadb相关软件包

[root@controller ~]# yum install mariadb mariadb-server MySQL-python python2-PyMySQL -y

(2)创建openstack的数据库配置文件,/etc/my.cnf.d/mariadb_openstack.cnf

[root@controller ~]# vim /etc/my.cnf.d/mariadb_openstack.cnf

在[mysqld]添加以下配置

[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
init-connect = 'SET NAMES utf8'

配置解释:

#默认存储引擎
default-storage-engine = innodb   
#使用独享表空间模式,每一个表都会建一个表空间,都会有索引文件,查索引快,共享表空间,共用一个表空间和索引,如果有损坏很难修复,比如说zabbix用到的数据库如果不使用的独享表空间,很难进行优化
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

(3)启动数据库,初始化数据库并设置开机启动

systemctl restart mariadb.service
systemctl status mariadb.service 

systemctl enable mariadb.service 
systemctl list-unit-files |grep mariadb.service

设置数据库root账户密码,默认密码为空

/usr/bin/mysql_secure_installation
# 输入命令后,第一次按回车,Y,设置密码,然后输入root账户,密码为root,然后一路y回车,直至安装成功。
systemctl restart mariadb.service
systemctl status mariadb.service

注意:生产环境可以使用pwgen工具生成数据库密码

openssl rand -hex 10

(4)测试下数据库,相关的数据库在需要时单独创建

mysql -proot
-----------------------------------
flush privileges;
show databases;
select user,host from mysql.user;
exit
-----------------------------------

4、消息队列Message queue

消息队列( MQ)全称为 Message Queue, 是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。
队列的使用除去了接收和发送应用程序同时执行的要求。
RabbitMQ 是一个在 AMQP 基础上完整的,可复用的企业消息系统。遵循 Mozilla Public License 开源协议。

(1).安装rabbitmq-server

yum install rabbitmq-server -y

(2).启动rabbitmq,并配置自启动
端口5672,15672,用于排错

systemctl start rabbitmq-server.service
systemctl status rabbitmq-server.service

systemctl enable rabbitmq-server.service
systemctl list-unit-files |grep rabbitmq-server.service

(3).创建消息队列中openstack账号及密码
添加openstack用户和密码,配置用户权限,配置读,写权限
格式为:

rabbitmqctl add_user openstack RABBIT_PASS

将Replace RABBIT_PASS 更换为安全性合适的密码.

#这里可能会报错,修改主机名之后,需要退出当前终端重新登陆。
rabbitmqctl add_user openstack openstack
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
rabbitmqctl set_permissions -p "/" openstack ".*" ".*" ".*"

(4)启用rabbitmq_management插件实现 web 管理

#查看支持的插件
rabbitmq-plugins list
# 启用web管理插件,需要重启服务使之生效
rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server.service
systemctl status rabbitmq-server.service
rabbitmq-plugins list

lsof -i:15672

(5).浏览器访问RabbitMQ进行测试
访问地址:http://192.168.232.101:15672
默认用户名密码都是guest,web界面可以管理和创建用户,管理权限如果无法访问请查看控制节点的防火墙配置状态。
可以进入选择admin,点击openstack用户名,设置openstack用户的密码和权限,然后update user,退出当前guest用户,使用用户名openstack密码openstack登录。
至此,RabbitMQ配置完毕

5、缓存服务Memcached

认证服务使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,推荐联合启用防火墙、认证和加密保证它的安全。
(1)安装Memcached用于缓存令牌

yum install memcached python-memcached -y

(2)修改memcached配置文件

# 如果没有启用IPv6地址需要删掉::1的地址绑定
vim /etc/sysconfig/memcached
----------------------------------
OPTIONS="-l 127.0.0.1,controller"
----------------------------------

# memcached参数说明:
-d选项是作为守护进程在后台运行 
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, 
-u是运行Memcache的用户,我这里是root, 
-l是监听的服务器IP地址,如果有多个地址的话 
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口, 
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定, 
-P是设置保存Memcache的pid文件
-vv是以very vrebose模式启动,将调试信息和错误输出到控制台

(3)启动memcached并设置开机自启动

systemctl start memcached.service
systemctl status memcached.service
netstat -anptl|grep memcached

systemctl enable memcached.service
systemctl list-unit-files |grep memcached.service

至此,memcached配置完毕

6、服务发现与注册Etcd

这个Etcd服务是新加入的,用于自动化配置
(1).安装etcd服务

yum install etcd -y

(2).修改etcd配置文件

# 注意IP地址不能用controller替代,无法解析  
vim /etc/etcd/etcd.conf
-----------------------------------
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.232.101:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.232.101:2379"
ETCD_NAME="controller"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.232.101:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.232.101:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.232.101:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
------------------------------------

(3)启动etcd并设置开机自启动

systemctl start etcd.service
systemctl status etcd.service
netstat -anptl|grep etcd

systemctl enable etcd.service
systemctl list-unit-files |grep etcd.service

五、完成控制节点环境准备

至此,控制节点controller就完成基础环境的配置,后面可以开始安装 openstack 的组件。
使用VMware虚拟机的话,现在可以关机做快照 。

你可能感兴趣的:(OpenStack)