OpenStack学习笔记03-OpenStack环境准备

OpenStack学习笔记03-OpenStack环境准备

对着《云操作系统(OpenStack)》第三章做的。

一、系统环境配置

1. 为什么NAT模式网关不能填写XX.XX.XX.1?

两天了,被这个问题纠缠两天了。虚拟机设置的是NAT模式,但是就是上不了外网。就是因为我把VMWare的NAT的网关改在了XX.XX.XX.1。但是,实际上这个地址是分配给wmnet8这个网卡的,已经不能再做网关了。所以这里不能设置为1这个地址。设置成2吧。

没问题了。没问题了,可以往下做了。

2. 虚拟机基本信息

2-1. 控制节点

enter description here
enter description here

主要要说明的是:

  • 内存:4G
  • 硬盘:40G
  • CPU:2颗2核,共4核,无法开启Virtualize Intel VT-x/EPT or AMD-V/RVI,开启了Virtualize CPU performance counters
  • 网卡:两个网卡,一个使用的是NAT模式,一个使用的是host-only模式。
  • 操作系统:CentOS 7.9.2009,内核版本是3.10.0-1160.el7.x86_64。
  • 系统安装过程的配置:英语,GNOME Desktop,自动分区
  • 用户名和密码:root,123456。

2-2. 计算节点

和控制节点是相同的配置。

3. 安全配置(两个节点都做)

3-1. 防火墙配置

systemctl stop firewalld
systemctl disable firewalld

enter description here
enter description here

3-2. Selinux设置

vi /etc/selinux/config,把SELINUX=enforcing修改为SELINUX=disabled
重启虚拟机。

4. 网络配置

4-1. 配置控制节点网络信息

我的虚拟机里都有两个网卡,ens33和ens34,根据两个网卡的IP地址可以判断,ens33对应的是NAT模式,ens34对应的是仅主机模式。
网口ens33:作为外部网络,配置IP地址为192.168.48.134/24网关为192.168.48.2,DNS为192.168.48.2。
网口ens34:作为管理网络,配置IP地址为192.168.58.134/24

4-1-1. ens33

vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=58dbb383-ebc5-4917-a0a0-b420481d29bd #你自己的UUID
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.48.134
PREFIX=24
GATEWAY=192.168.48.2
DNS1=192.168.48.2

4-1-2. ens34

vi /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=ens36
UUID=d221be10-6747-4586-86d7-aa865b87a737
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.58.134
PREFIX=24

4-2. 配置计算节点网络信息

我的虚拟机里都有两个网卡,ens33和ens34,根据两个网卡的IP地址可以判断,ens33对应的是NAT模式,ens34对应的是仅主机模式。
网口ens33:作为外部网络,配置IP地址为192.168.48.135/24,网关为192.168.48.2,DNS为192.168.48.2。
网口ens34:作为管理网络,配置IP地址为192.168.58.135/24

4-2-1. ens33

vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=9134a806-d400-44a7-b60a-46ada62bb356
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.48.135
PREFIX=24
GATEWAY=192.168.48.2
DNS1=192.168.48.2

4-2-2. ens34

vi /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=ens36
UUID=780cab3e-3aa2-3abd-b1f8-646f2d79a920
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.58.135
PREFIX=24

4-3. 测试配置结果

在两个节点上使用命令systemctl restart network重启网络服务,然后使用ping命令测试与百度和两节点之间是否互通。结果是可以的,如下图所示。
enter description here

5. 配置主机映射

在所有节点中,修改/etc/hosts文件,添加以下内容(这里添加的是管理网卡的IP地址)。

192.168.58.134 controller
192.168.58.135 compute

使用ping命令测试连通性。
enter description here

6. 配置yum源

按照书的上意思,应该是事先就准备好的软件包,这里要通过配置yum源和ftp服务器使controller和compute都能从事先准备的软件包中下载安装软件。但是我手头是没有书中的那个软件包的。再加上我这里是可以上网的。所以我目前没有修改yum源,就是从网上下载软件进行安装。
但是我也做了一点,那就是,创建了一个文件夹,设置yum的配置文件,把所有下载的软件包都存放在这个文件夹中,这样的话后面部署离线环境时也可以用到。

6-1. 控制节点

mkdir /root/OpenStackControllerRPMs
vi /etc/yum.conf

修改yum.conf中的cachedirkeepcache。我这里修改的结果是:

cachedir=/root/OpenStackControllerRPMS/yum/$basearch/$releasever
keepcache=1

6-2. 计算结点

mkdir /root/OpenStackComputeRPMs
vi /etc/yum.conf

修改yum.conf中的cachedirkeepcache。我这里修改的结果是:

cachedir=/root/OpenStackComputeRPMS/yum/$basearch/$releasever
keepcache=1

不确定是否会立即生效,我重启了一下系统。

二、软件环境配置

1. 安装NTP服务

以控制节点作为时钟服务器,其他节点以控制节点的时钟作为标准调整自己的时钟。

1-1. 控制节点和计算节点

yum install chrony -y

1-2. 配置控制节点

1-2-1. 编辑配置文件
vi /etc/chrony.conf

在我这里,文件的开头六行为:

# 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

进行了修改,注释了四句,添加了两句。然后文件的前8行为:

# 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
server controller iburst
allow 192.168.58.0/24

这里允许的网络地址是管理网络的地址。

1-2-2. 启动NTP服务并设置开机自动启动:
systemctl enable chronyd
systemctl restart chronyd
chronyc sources

最后一句是验证操作,如果看到controller节点则表示成功。
enter description here

1-3. 配置计算节点

1-3-1. 编辑配置文件
vi /ect/chrony.conf

注释掉已有的服务器(我这里有4个),再添加如下内容

server controller iburst

修改的结果为(开头7行):

# 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
server controller iburst
1-3-2. 启动NTP服务并设置开机自动启动:
systemctl enable chronyd
systemctl restart chronyd
chronyc sources

最后一句是验证操作,输出结果与controller节点运行结果相同,表示成功。
enter description here

NTP服务需要在每个节点上安装,并与控制节点同步。

2. 安装OpenStack包

在控制节点和计算节点上安装OpenStack包:

yum install python-openstackclient -y

提示没有可用的软件包。解决办法是给yum添加openstack-train的软件源。

vi /etc/yum.repo.d/OpenStack-Train.repo

添加如下内容:

[OpenStack-Train]
name=OpenStack Train Repository
baseurl=http://mirror.centos.org/centos-7/7.9.2009/cloud/x86_64/openstack-train/
enable=1
gpgcheck=0

执行yum install python-openstackclient -y可以正常安装。
enter description here

3. 安装并配置SQL数据库

3-1. 安装MariaDB数据库

在控制节点安装就可以了,计算节点不需要安装。当我从书上读到这个意思的时候我已经在计算节点上安装了数据库了。希望以后不要有什么问题。

yum install mariadb mariadb-server python2-PyMySQL -y

3-2. 配置数据库

3-2-1. 创建和编辑/etc/my.cnf.d/openstack.cnf

vi /etc/my.cnf.d/openstack.cnf

输入如下内容:

[mysqld]
bind-address=192.168.58.134
default-storage-engine=innodb
innodb_file_per_table
max_connections=4096
collation-server=utf8_general_ci
character-set-server=utf8

3-2-2. 启动数据库

systemctl enable mariadb
systemctl start mariadb

3-2-3. 运行mysql_secure_installation,初始化数据库并设置密码。

mysql_secure_installation

我把密码设置为abc123!。配置过程如下:

[root@localhost my.cnf.d]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@localhost my.cnf.d]# 

4. 安装并配置消息服务器

在控制节点上操作。

4-1. 安装RabbitMQ

yum install rabbitmq-server -y

enter description here
enter description here

4-2. 启动RabbitMQ服务并设置为开机自动启动

systemctl enable rabbitmq-server
systemctl start rabbitmq-server

4-3. 创建rabbitmq用户并设置密码。用户名为openstack,密码为000000。

rabbitmqctl add_user openstack 000000

4-4. 给openstack用户授予读/写访问权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

enter description here
enter description here

5. 安装Memcached

在控制节点上操作

5-1. 安装Memcached

yum install memcached python-memcached -y

5-2. 编辑/etc/sysconfig/memcached文件并完成以下操作。

配置服务器以使用控制节点的管理IP地址,这是为了允许其它节点通过管理网络进行访问。

vi /etc/sysconfig/memcached

文件的最后一行是OPTIONS="-l 127.0.0.1,::1",进行修改,修改的结果是:

OPTIONS="-l 127.0.0.1,::1,controller"

也就是加上了controller

5-3. 启动Memcached服务并设置为开机自动启动。

systemctl enable memcached
systemctl start memcached

6. 安装Etcd

在控制节点上运行

6-1. 安装软件包

yum install etcd

6-2. 编辑配置文件/etc/etcd/etcd.conf

vi /etc/etcd/tecd.conf

取消对ETCD_LISTEN_PEER_URLSETCD_INITIAL_ADVERTISE_PEER_URLSETCD_INITIAL_CLUSTER三个选项前面的注释。修改ETCD_LISTEN_PEER_URLSETCD_LISTEN_CLIENT_URLSETCD_INITIAL_ADVERTISE_PEER_URLSETCD_ADVERTISE_CLIENT_URLSETCD_INITIAL_CLUSTER五个地方的IP地址,把localhost换成控制节点的管理IP地址192.168.58.134

6-3. 设置开机启动

systemctl enable etcd
systemctl start etcd

7. 验证基础环境

使用命令查看各服务商品是否开启。

netstat -tunlp

结果如下:
enter description here

可以看到,mysqld、etcd、memcached、chronyd都已经开启,消息队列由于没有配置Web界面,所以未发现商品。
也可以使用命令查看进程是否正常运行:

systemctl status mysqld etcd memcached chronyd

至此,OpenStack基础环境配置完成。

posted @ 2024-04-01 21:24  南宫二狗  阅读(50)  评论(0编辑  收藏  举报