1 学习openstack 目标

使用OpenStack 构建企业私有云,本教程偏重于动手实操能力,主要用于帮助那些 OpenStack 初学者能更加熟练地使用OpenStack,同时也适用于刚刚从事 Linux 运维/开发的童鞋,去更加了解 OpenStack。本教程全是个人工作实践经验分享,若需了解

OpenStack 安装组件较多,配置文件也多,尤其是

 

1、环境说明:

a:生产环境尽量要选配置高一些的服务器,如配置:双 CPU 2.4GHz 24cores*2/64GB*8/600GB SAS*2 或者更高主频的 CPU,网络至少是

b:实验环境规划及说明

宿主机硬件配置:i7-10750H / 32GB / TOSHIBA 500G SSD / WD 1TB SSD

宿主机操作系统:Windows 10 64 位专业版

OpenStack 版本:Train

Ceph 版本:

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf

 

虚拟机规划见下表:

 

OpenStack 配额管理 pdf openstack硬件最佳配置_html_02

 

其中,template 主机在完成系统安装以及相关参数设置后,就可以关闭,后面仅用作模板克隆用,使用模板的目的是保证所有主机软件包及参数一致。生产环境一般是使用 cobbler 或

创建虚拟机存放目录

E:\virtual_system\openstack> md cpeh01 cpeh02 ceph03 yum01 controller compute01 compute02 template

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_03

 学习思维导图

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_04

系统安装及设置

2.1 系统安装

1、制作主机模板

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_html_05

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_06

 

  • 删除不用硬件设备,例如 打印机、声卡。vxlan 和
  • 操作系统镜像:CentOS-7-x86_64-DVD-2009.iso
  • 时区修改为:Asia/Shanghai
  • 语言勾选支持:中文
  • 软件包选择:Development and Create Workstation
  • Addiional Development
  • Compatibility Libraries
  • Development Tools
  • Hardware Monitoring Utilities
  • Large Systems Performance
  • Legacy X Windows System Compatibility
  • Platform Development
  • System Administration Tools

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_07

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_08

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_09

 

磁盘分区,先使用

 

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_10

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_html_11

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_12

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_html_13

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_14

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_15

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_16

 

开始安装系统,安装过程中大概持续 5-10mins,此时可以为

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_17

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_18

 

安装完成后,进行系统初始化参数设置

2.2 系统初始化参数设置

1、设置主机名及hosts

hostnamectl set-hostname template

# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 # openstack

192.168.59.20 controller

192.168.59.31 compute01

192.168.59.32 compute02

# cpeh-public

192.168.59.11 ceph01

192.168.59.12 ceph02

192.168.59.13 ceph03

# ceph-cluster

20.168.59.11 ceph01-cluster

20.168.59.12 ceph02-cluster

20.168.59.13 ceph03-cluster

# yum

192.168.59.250 yum01

 

2、配置IP 地址并且关闭NetworkMnanager

各主机第一块网卡按规划用作 Provider IP (使用

 

# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

IPV6INIT=no

NAME=ens33

DEVICE=ens33

ONBOOT=yes

# ip 地址,不同主机修改成不同

IPADDR=192.168.59.251

NETMASK=255.255.255.0

GATEWAY=192.168.59.2

DNS1=223.5.5.5

EOF

 

# 如何查看 vmNet8 网段的网关,可通过

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_19

# systemctl restart network

# systemctl stop NetworkManager && systemctl disable NetworkManager

3、关闭防火墙和selinux

# systemctl stop firewalld && systemctl disable firewalld

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

上述

4、设置内核参数及文件句柄等资源限制参数

# cat <<EOF >> /etc/sysctl.conf

## default 1

net.ipv4.tcp_syncookies = 1

## default 0

net.ipv4.tcp_tw_reuse = 1

## default 0

net.ipv4.tcp_tw_recycle = 1

## default 60

net.ipv4.tcp_fin_timeout = 30

## default 256

net.ipv4.tcp_max_syn_backlog = 4096

## default 32768 60999

net.ipv4.ip_local_port_range = 1024 65535

## default 129=8

net.core.somaxconn = 32768

EOF

 

# cat <<EOF >> /etc/security/limits.conf

* hard nofile 655360

* soft nofile 655360

* hard nproc 655360

* soft nproc 655360

* soft core 655360

* hard core 655360

EOF

 

# sed -i 's/4096/unlimited/g' /etc/security/limits.d/20-nproc.conf

# cat /etc/security/limits.d/20-nproc.conf

* soft nproc unlimited

root soft nproc unlimited

 

5、设置CPU 嵌套虚拟化,让虚拟机中再支持虚拟化

# cat /sys/module/kvm_intel/parameters/nested

/*

说明:如果是 N,表示未开启。如果连/sys/module 目录都没有,说明主机没有开启虚拟化(vmware workstation 是主机创建时没有勾选

*/

 

# cat <<EOF > /etc/modprobe.d/kvm-nested.conf

options kvm_intel nested=1 ept=0 unrestricted_guest=0

EOF

 

即时生效

# rmmod kvm_intel // 需要所有虚拟机是停止状态才能执行卸载

# modprobe kvm-intel ept=0 unrestricted_guest=0

# cat /sys/module/kvm_intel/parameters/nested //开启后状态为Y。

/*

说明:ept=0 用于关闭Intel EPT 硬件辅助虚拟化,可有效解决

*/

2.3 克隆第1 台虚拟机

完成系统初始化参数设置后,克隆第 1 台虚拟机用作离线 yum 源服务端,然后 template 模板虚拟机使用离线

右键点击模板主机,选择“管理”-->“克隆”

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_20

 

勾选“虚拟机中的当前状态”,勾选“创建完整克隆”

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_21

 

输入克隆后的虚拟机名称以及虚拟机系统保存位置。

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_22

 

完成克隆后,编辑虚拟机,调整下内存以及 CPU 配置,用作

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_23

3 制作离线yum 源

3.1 配置离线yum 源服务端

在上一节视频有 2 处错误,第 1 处是设置/boot 分区时,本意是设置成 2GB,但在设置 VG 名时,大小还原成了 1024MB,然后就是设置 yum01 的

使用了追加,本意是覆盖,所以重新制作了虚拟机模板。

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_24

1、启动克隆好的虚拟机,改hostname、ip

# hostnamectl set-hostname yum01

# sed -i 's/59.251/59.250/g' /etc/sysconfig/network-scripts/ifcfg-ens33

# systemctl restart network

# ping www.baidu.com

再次检查一下

 

2、从阿里云下载yum 配置文件

# cd /etc/yum.repos.d && mkdir backup && mv *.repo backup/

# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

# yum -y install centos-release-openstack-train

添加

vim /etc/yum.repos.d/ceph.repo

[ceph]

name=Ceph packages for $basearch

baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64 

enabled=1

gpgcheck=0

[ceph-noarch]

name=Ceph noarch packages

baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch

enabled=1

gpgcheck=0

[ceph-source]

name=Ceph source packages

baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS 

enabled=1

gpgcheck=0

 

3、安装相关软件包

# yum -y install createrepo yum-utils httpd reposync

# systemctl enable httpd && systemctl start httpd

 

4、创建仓库目录

# mkdir -p /var/www/html/yumrepos

4、根据CentOS-Base.repo 同步阿里云软件包到本地

# reposync -p /var/www/html/yumrepos/

如果只想同步CentOS-Base.repo 中指定块[section]中的rpm 包,可以指定名称同步

# reposync -n --repoid=base --repoid=updates -p /var/www/html/yumrepos/

# reposync -n --repoid=ceph --repoid=ceph-noarch -p /var/www/html/yumrepos/

# reposync -n --repoid=centos-openstack-train -p /var/www/html/yumrepos/

# reposync -n --repoid=centos-qemu-ev -p /var/www/html/yumrepos/

 

说明:以上仓库必须同步到本地此处再以

安装 zabbix-4.0 的

# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

安装好

# cat /etc/yum.repos.d/zabbix.repo

[zabbix]

name=Zabbix Official Repository - $basearch

baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/ 

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-debuginfo]

name=Zabbix Official Repository debuginfo - $basearch

baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/debuginfo/ 

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

gpgcheck=1

[zabbix-non-supported]

name=Zabbix Official Repository non-supported - $basearch

baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/ 

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

gpgcheck=1

 

只同步[zabbix]块中的rpm 包到本地

# reposync -n --repoid=zabbix -p /var/www/html/yumrepos/

 

5、使用createrepo命令创建本地yum源,即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据

进到

# cd /var/www/html/yumrepos/base

# createrepo .

6、定期更新

# reposync -n --repoid=base -p /var/www/html/yumrepos/

# cd /var/www/html/yumrepos/base

# createrepo --update . // 或者使用命令 createrepo --update /var/www/html/yumrepos/base

按上述方法,将openstack所依赖的rpm包全部下载到本地

3.2 使用离线yum 源

1、在template 模板主机上执行

# cd /etc/yum.repos.d/ && mkdir backup && mv *.repo backup/

# wget http://yum01/private.repo -O /etc/yum.repos.d/private.repo

yum 客户端在执行

 

OpenStack 配额管理 pdf openstack硬件最佳配置_html_25

 

处理方法:根据提示卸载对应包,再执行

# yum erase PyQt4-4.10.1-13.el7.x86_64 sip-4.14.6-4.el7.x86_64 -y

# yum update -y

/*

说明:系统更新完成后, 在/etc/yum.repos.d/目录下会重新生成缺省的

*/

 

安装

yum -y install python-openstackclient

 

完成更新后,重启一下系统,确保没有问题。

关闭 template 虚拟机,基于更新后的 template 虚拟机进行克隆,需克隆 6 台主机,包括

/*

Private.repo

[base]

name=CentOS-$releasever - Base

baseurl=http://yum01/yumrepos/base/ 

gpgcheck=0

enabled=1

 

[epel]

name=CentOS-$releasever - epel

baseurl=http://yum01/yumrepos/epel/ 

gpgcheck=0

enabled=1

 

[docker-ce-stable]

name=CentOS-$releasever - docker-ce-stable

baseurl=http://yum01/yumrepos/docker-ce-stable/ 

gpgcheck=0

enabled=1

 

[updates]

name=CentOS-$releasever - Updates

baseurl=http://yum01/yumrepos/updates/ 

gpgcheck=0

enabled=1

 

[extras]

name=CentOS-$releasever - Extras

baseurl=http://yum01/yumrepos/extras/ 

gpgcheck=0

enabled=1

 

[centos-openstack-train]

name=CentOS-7 - OpenStack train

baseurl=http://yum01/yumrepos/centos-openstack-train/ 

gpgcheck=0

enabled=1

 

[centos-qemu-ev]

name=CentOS-$releasever - QEMU EV

baseurl=http://yum01/yumrepos/centos-qemu-ev/ 

gpgcheck=0

enabled=1

 

[ceph]

name=ceph-Nautilus

baseurl=http://yum01/yumrepos/ceph/ 

gpgcheck=0

enabled=1

 

[ceph-noarch]

name=ceph-noarch Nautilus

baseurl=http://yum01/yumrepos/ceph-noarch/ 

gpgcheck=0

enabled=1

 

[centos-nfs-ganesha28]

name=CentOS-7 - NFS Ganesha 2.8

baseurl=http://yum01/yumrepos/centos-nfs-ganesha28/ 

gpgcheck=0

enabled=1

 

[openresty]

name=Official OpenResty Open Source Repository for CentOS

baseurl=http://yum01/yumrepos/openresty/ 

skip_if_unavailable=False

gpgcheck=0

repo_gpgcheck=0

gpgkey=file:///etc/yum.repos.d/pubkey.gpg

enabled=1

enabled_metadata=1

*/

 

2、完成克隆后,启动克隆好的虚拟机,修改hostname、IP

# hostnamectl set-hostname controller

# sed -i 's/59.251/59.20/g' /etc/sysconfig/network-scripts/ifcfg-ens33

# systemctl restart network

# ping 192.168.59.2

# 关闭主机

# init 0

# hostnamectl set-hostname compute01

# sed -i 's/59.251/59.31/g' /etc/sysconfig/network-scripts/ifcfg-ens33

# systemctl restart network

# ping 192.168.59.2

# 关闭主机

# init 0

# hostnamectl set-hostname compute02

# sed -i 's/59.251/59.32/g' /etc/sysconfig/network-scripts/ifcfg-ens33

# systemctl restart network

# ping 192.168.59.2

# 关闭主机

# init 0

 

ceph01/ceph02/ceph03 此处先不修改,等在后面安装

按照规划,为 compute01、compute02 添加硬盘,controller、compute01、compute02 各增加 2 块网卡,此处以 controller 截图为例编辑 controller 虚拟机,添加 网络适配器

 

OpenStack 配额管理 pdf openstack硬件最佳配置_html_26

添加 Lan 区段,即自定义网段(类似 hub 或网桥),也可以通过添加网络,vmware 全局支持添加

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_27

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_28

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_29

按上述操作完成 compute01 和 compute02 的

compute01、compute02 各增加一块 50G 硬盘(用作 cinder 存储)

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_30

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_31

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_32

 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_33

 

以同样方式完成

说明:若在系统运行时添加磁盘,则添加完成后,需要运行命令发现硬盘

检查并完成上述操作后,启动 controller、compute01、compute02,开始进入

完成 controller、compute01、compute02 上的第

在所有节点上分别执行

# dhclient

再使用 ifconfig 获到第 2、3 网卡名称,此处分别为 ens37 和

在controller 节点上执行

# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens37

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

IPV6INIT=no

NAME=ens37

DEVICE=ens37

ONBOOT=yes

IPADDR=10.168.59.20

NETMASK=255.255.255.0

EOF

 

# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens38

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

IPV6INIT=no

NAME=ens38

DEVICE=ens38

ONBOOT=yes

IPADDR=20.168.59.20

NETMASK=255.255.255.0

EOF

 

# systemctl restart network

compute01 节点上执行

# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens37

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

IPV6INIT=no

NAME=ens37

DEVICE=ens37

ONBOOT=yes

IPADDR=10.168.59.31

NETMASK=255.255.255.0

EOF

 

# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens38 TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

IPV6INIT=no

NAME=ens38

DEVICE=ens38

ONBOOT=yes

IPADDR=20.168.59.31

NETMASK=255.255.255.0

EOF

 

# systemctl restart network

在compute02 节点上执行

# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens37

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

IPV6INIT=no

NAME=ens37

DEVICE=ens37

ONBOOT=yes

IPADDR=10.168.59.32

NETMASK=255.255.255.0

EOF

 

# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens38

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

IPV6INIT=no

NAME=ens38

DEVICE=ens38

ONBOOT=yes

IPADDR=20.168.59.32

NETMASK=255.255.255.0

EOF

 

# systemctl restart network

确认网络配置正常

# ping 10.168.59.31

# ping 10.168.59.32

# ping 20.168.59.31

# ping 20.168.59.32

 

前期准备工作越充分,后期使用维护就越轻松从容。

4 openstack 基础组件安装

 4.1 NTP 安装及配置

1、统一时区,在所有节点(controller、compute01、compute02)上执行

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

注:安装时若有选择正确时区,可忽略上述设置

2、在控制节点controller 安装chrony,将控制节点作为NTP 服务端,默认已经安装。

# yum -y install chrony

修改配置

指定时间同步服务器,这里采用阿里云时钟源。如果无外网,则指向本机主机名

# vi /etc/chrony.conf

# server ntp.aliyun.com iburst

# server ntp1.aliyun.com iburst

#server controller iburst

...

...

allow 192.168.59.0/24

allow 10.168.59.0/24

allow 20.168.59.0/24

local stratum 10

3、设置开机自启动

# systemctl enable chronyd.service

# systemctl start chronyd.service

4、在ntp 服务器上启用NTP 同步。

# timedatectl set-ntp yes

# timedatectl status

5、在所有计算节点(compute01、compute02)安装chrony,默认已安装

# yum -y install chrony

然后,修改配置/etc/chrony.conf 中服务器为 controller,即

#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

 

设置开机自启动

# systemctl enable chronyd

# systemctl start chronyd

验证时间同步:

# chronyc sources

4.2 MariaDB 安装及配置

1、安装与配置数据库

在控制节点(controller)执行以下操作。

# yum -y install mariadb mariadb-server python2-PyMySQL

2、配置数据库。

创建并编辑文件/etc/my.cnf.d/openstack.cnf

vim /etc/my.cnf.d/openstack.cnf

[mysqld]

# 此处可只 bind 为内网管理 IP,限制外部访问

bind-address = 0.0.0.0

default-storage-engine = innodb

innodb_file_per_table = on

max_connections = 8192

collation-server = utf8_general_ci

character-set-server = utf8

修改“/usr/lib/systemd/system/mariadb.service”文件,在文件[Service]下添加如下内容:

# vim /usr/lib/systemd/system/mariadb.service

LimitNOFILE=65535

LimitNPROC=65535

注:不修改此配置,max_connections 参数不会生效

3、设置开机自启动

# systemctl daemon-reload

# systemctl enable mariadb.service

# systemctl start mariadb.service

4、数据库初始化设置(可选设置)。

# 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:      #密码我设置的是 mysql

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 密码为:mysql 或者其他复杂密码,允许 root 登录,不管在 Disallow root login remotely 选择了 N 还是 Y,都只允许在本机登录。可以使用以下 sql 进行

update user set Host='%' where User='root' and Host='localhost' and user='root';

flush privileges;

5、登录验证

# mysql -uroot -pmysql

Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 15

Server version: 10.3.20-MariaDB MariaDB Server

 

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit

4.3 RabbitMQ 安装及配置

1、安装与配置rabbitMQ

在控制节点(controller)执行以下操作

# yum -y install rabbitmq-server

2、配置rabbitmq,修改rabbitmq 默认打开文件句柄数限制

# vi /usr/lib/systemd/system/rabbitmq-server.service

[Service]

LimitNOFILE=32768

3、设置开机自启动

# systemctl daemon-reload

# systemctl enable rabbitmq-server.service

# systemctl restart rabbitmq-server.service

4、在rabbitMQ 中添加用于openstack 的用户并授予管理员权限。

# rabbitmqctl add_user openstack openstack

# rabbitmqctl set_user_tags openstack administrator

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

也可在

注:为

5、启用rabbitmq-manager 插件,开启Web 控制台

# rabbitmq-plugins enable rabbitmq_management

6、登录验证

控制台登录:http://controller:15672

guest/guest (缺省账户)

openstack/openstack

/*

注:使用 hosts 访问,需要修改

192.168.59.20 controller

*/

4.4 Memcache 安装及配置

1、安装与配置memcached

在控制节点(controller)执行以下操作

# yum -y install memcached python-memcached

2、修改配置

# vi /etc/sysconfig/memcached

PORT="11211"

USER="memcached"

MAXCONN="4096"

CACHESIZE="256"

OPTIONS="-l 0.0.0.0,::1"

注意监听 IP 地址,也可以设置成

3、设置服务开机自启

# systemctl enable memcached.service

# systemctl restart memcached.service

4、验证

# systemctl status memcached

  • memcached.service - memcached daemon

Loaded: loaded (/usr/lib/systemd/system/memcached.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2021-12-28 15:59:20 CST; 26s ago

Main PID: 7451 (memcached) Tasks: 10

CGroup: /system.slice/memcached.service

└─7451 /usr/bin/memcached -p 11211 -u memcached -m 64 -c 4096 -l 0.0.0.0,::1 Dec 28 15:59:20 controller systemd[1]: Started memcached daemon.

 

# netstat -atnp |grep 11211

tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 7451/memcached

tcp6 0 0 ::1:11211 :::* LISTEN 7451/memcached

4.5 etcd 安装及配置(可选安装)

1、安装与etcd

在控制节点(controller)执行以下操作

yum -y install etcd

2、配置etcd

# vi /etc/etcd/etcd.conf

修改如下9项参数,其余的全部注释掉。

#[Member]

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_PEER_URLS="http://192.168.59.20:2380"

ETCD_LISTEN_CLIENT_URLS="http://192.168.59.20:2379"

ETCD_NAME="controller"

#[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.59.20:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.59.20:2379"

ETCD_INITIAL_CLUSTER="controller=http://192.168.59.20:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"

ETCD_INITIAL_CLUSTER_STATE="new"

3、设置服务开机自启

# systemctl enable etcd

# systemctl start etcd

4.6 安装openstack 客户端

1、确保所有节点上已经安装了

# yum -y install python-openstackclient

在模板主上就已经安装,此处忽略该安装步骤。

5 openstack 业务组件安装

5.1 安装keystone(控制节点)

keystone 是 OpenStack 的身份认证服务(Identity Service),OpenStack 中的认证、鉴权、角色管理都是由 keystone 来完成,同时还提供服务目录注册功能。keystone 是一个关键服务,同时也是安装

配置 keystone 时,需要为用户创建合适的角色、服务、租户、用户账号和服务

keystone 里有相关概念需要了解。比如,租户、角色、用户。

1、租户对应项目,它有一些资源,包括用户、镜像、实例,还有仅对该项目可见的网络(如果创建网络时没有勾选“共享”)

2、一个用户可隶属于一个或多个项目(租户),并且可以在这些项目间进行切换,部署 Openstack 至少要创建admin 和

3、service 项目是一个特殊的项目,Openstack 自身服务都配置在

4、一个用户可以被指定成多种角色,即一个用户可能会有多个项目,在不同项目中角色不同。例如,user1 同时在project1 和 project2 中,在

的角色是 admin,在

5、openstack 中默认只有 4 种角色,包括

OpenStack keystone 服务托管在

一、在控制节点(controller)安装Keystone

1、登录数据库创建keystone 数据库

MariaDB [(none)]> CREATE DATABASE keystone default character set utf8;

创建并授予keystone 用户完全操作

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'openstack';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'openstack';

/*

说明:

openstack 的账户密码设置中,不支持部分特殊符号,如“#”;openstack 本身对密码的复杂度也没有要求,可以设置为不带特殊字符的密码;若在设置密码时,一定要包含特殊符号,openstack 仅支持如下如下特殊字符:& = $ - _ . + ! * ( )

也可以对照官方文档做实验验证,https://docs.openstack.org/install-guide/environment-security.html

*/

2、安装Keystone 软件包并修改配置文件

# yum -y install openstack-keystone httpd mod_wsgi

/*

说明:

配置文件中能写成主机名的就改成主机名,增强配置文件通用性,便于快速部署。

*/

# cd /etc/keystone/ && mv keystone.conf keystone.conf.source && cat keystone.conf.source |grep -Ev "^#|^$" > keystone.conf && chown root:keystone keystone.conf

# vi /etc/keystone/keystone.conf

在[database]部分添加如下内容:

connection = mysql+pymysql://keystone:openstack@controller/keystone

 

在[token]部分添加如下内容:

expiration = 86400

# 令牌提供者为 fernet,即生成令牌方式

配置可直接参考

3、同步Identity 服务的初始数据到keystone 库

# su -s /bin/sh -c "keystone-manage db_sync" keystone

4、初始化Fernet 密钥存储库

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

 

5、执行身份引导服务(会创建endpoint)。

# keystone-manage bootstrap --bootstrap-password openstack2022 \

--bootstrap-admin-url http://controller:5000/v3/ \

--bootstrap-internal-url http://controller:5000/v3/ \

--bootstrap-public-url http://controller:5000/v3/ \

--bootstrap-region-id RegionOne

/*

说明:

i、OpenStack 中每一个服务都运行在一个特定的URL 和端口上,即有一个 API 地址,通常称之为 API 服务端点,当一个客户端访问 openstack 时,keystone身份认证服务负责向其返回 openstack 环境中各个服务的 API 地址,以便客户端使用这些服务。所以配置每一个服务时都需要向 keystone 注册其API 地址。Openstack 中可以定义多个区域,可以把不同的区域理解成不同的数据中心,它们有各自同不的 URL 或 IP 地址,在 Openstack 身份认证服务里,可以为每一个区域分别定义 API。默认只有一个区域,且标识为

ii、修改--bootstrap-password 后为用户 admin 的密码,此处设置为

iii、执行身份引导服务后,就不需要再手功创建 identity 的 API,即以下 3 条命令不需要执行

每个服务的API 都会有 3 个 API 地址,公共(面向终端用户)、内部(仅在本地局域网内)、管理员(可以被有管理员权限的用户使用),通过配置在不同的

*/

 二、在控制节点(controller配置Apache 服务

1、修改apache 配置文件

# vi /etc/httpd/conf/httpd.conf

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_34

 

 

 

ServerName controller:80

2、创建软链接。

# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

3、启动Apache HTTP 服务并配置其随系统启动。

# systemctl enable httpd.service

# systemctl restart httpd.service

4、配置管理员帐户,并创建项目、域、用户、角色

cat > /etc/keystone/admin-openrc.sh <<EOF

export OS_USERNAME=admin

export OS_PASSWORD=openstack2022

export OS_PROJECT_NAME=admin

export OS_USER_DOMAIN_NAME=Default

export OS_PROJECT_DOMAIN_NAME=Default

export OS_AUTH_URL=http://controller:5000/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

EOF

 

说明:admin-openrc.sh 用来定义相关环境变量

# source admin-openrc.sh

5、创建service 项目、user 角色、域,default 域默认已经存在

# openstack domain list

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_35

 

 

/*

创建新域

# openstack domain create --description "An Example Domain" example

# openstack domain list

创建普通项目

# openstack project create --domain default --description "Demo Project" myproject

创建普通用户 myuser(仅用于测试,可以不创建),密码为 myuser。

# openstack user create --domain default --password-prompt myuser

 

创建角色(仅用于测试,可以不创建)

# openstack role create myrole

 

将 myrole 角色添加到 myproject 项目和

# openstack role add --project myproject --user myuser myrole

# openstack role list

*/

 

一个租户在OpenStack 里就是一个项目,创建用户时必须先要有租户(项目),同时还需要一个能分配给该用户的角色,这样创建的用户才有意义。创建 service 项目(租户),service 项目将作为 OpenStack 的系统项目,所有系统服务都要加入到

# openstack project create --domain default --description "Service Project" service

# openstack project list

OpenStack 配额管理 pdf openstack硬件最佳配置_html_36

创建

# openstack role create user

# openstack role list

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_37

6、验证Keystone

# source /etc/keystone/admin-openrc.sh

# openstack token issue

 

取消环境变量,验证

# unset OS_AUTH_URL OS_PASSWORD

使用

# openstack --os-auth-url http://controller:5000/v3 \

--os-project-domain-name Default \

--os-user-domain-name Default \

--os-project-name admin \

--os-username admin token issue

输入

 

5.2 安装placement(控制节点)

Placement 在 Openstack 中主要用于跟踪和监控各种资源的使用情况,例如,在

Placement 服务在 Openstack 14.0.0 Newton 版本中被引入到 nova 库,并在 19.0.0 Stein 版本中被独立到 Placement 库中,即在 stein 版被独立成组件。 Placement 服务提供 REST API 堆栈和数据模型,用于跟踪资源提供者不同类型的资源的库存和使用情况。 资源提供者可以是计算资源、共享存储池、 IP 池等。例如,创建一个实例时会消耗计算节点的CPU、内存,会消耗存储节点的存储;同时还会消耗网络节点的 IP 等等,所消耗资源的类型被跟踪为类。Placement 提供了一组标准资源类(例如 DISK_GB、MEMORY_MB 和

placement 服务托管在httpd 上,修改配置需重启

一、在控制节点(controller)安装Placement

1、登录数据库创建placement 数据库

MariaDB [(none)]> CREATE DATABASE placement default character set utf8;

创建并授予placement 用户完全操作

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'openstack';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'openstack';

 

2、创建用户和API 服务端点

# source /etc/keystone/admin-openrc.sh

 

# openstack user create --domain default --password-prompt placement

密码设置为:openstack2022

 

将 placement 加入到 service 项目以及

# openstack role add --project service --user placement admin

创建服务实体

# openstack service create --name placement --description "Placement API" placement

 

创建

# openstack endpoint create --region RegionOne placement public http://controller:8778

# openstack endpoint create --region RegionOne placement internal http://controller:8778

# openstack endpoint create --region RegionOne placement admin http://controller:8778

 

3、安装配置Placement

# yum -y install openstack-placement-api

注:https://docs.openstack.org/api-ref/placement/?expanded=

修改配置文件

# cd /etc/placement/ && mv placement.conf placement.conf.source && cat placement.conf.source |grep -Ev "^#|^$" > placement.conf && chown root:placement placement.conf

# vi /etc/placement/placement.conf

在[placement_database]部分,配置数据库访问

[placement_database]

connection = mysql+pymysql://placement:openstack@controller/placement

在[api]和[keystone_authtoken]部分,配置身份认证服务。

[api]

auth_strategy = keystone

[keystone_authtoken]

auth_url = http://controller:5000/v3

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = placement

password = openstack2022

 

修改配置文件/etc/httpd/conf.d/00-placement-api.conf

# vi /etc/httpd/conf.d/00-placement-api.conf

 

<Directory /usr/bin>

<IfVersion >= 2.4>

Require all granted

</IfVersion>

<IfVersion < 2.4>

Order allow,deny

Allow from all

</IfVersion>

</Directory>

4、同步placement 数据库

# su -s /bin/sh -c "placement-manage db sync" placement

/*

说明:忽略同步数据时报的

*/

 

5、重启 httpd 服务并验证

# systemctl restart httpd

执行

# placement-status upgrade check

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_38

安装 pip(如果无外网则跳过该设置,使用离线安装)

yum install -y epel-release

yum install -y python-pip

rm -rf /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo 

 

配置国内

cat > /etc/pip.conf <<EOF

[global]

index-url = https://pypi.douban.com/simple/

[install]

trusted-host = https://pypi.douban.com

EOF

安装

# pip install osc-placement==2.2.0

 

离线安装

在 yum01 主机上通过

# yum install -y python-pip

# wget http://yum01/yumrepos/pip/osc-placement-2.2.0.tar.gz 

# pip install osc-placement-2.2.0.tar.gz

列出可用的资源类和特征。

# openstack --os-placement-api-version 1.2 resource class list --sort-column name

# openstack --os-placement-api-version 1.6 trait list --sort-column name

 

5.3 安装配置并验证Glance(控制节点)

OpenStack 镜像服务就是 Glance,可以让用户上传、导出、修改、删除虚拟机镜像。另外,openstack 镜像服务支持将镜像文件存储在各种类型的存储中,如本地文件系统、Openstack 对象存储服务

OpenStack 镜像服务包括 glance-api、glance-registry 两个子服务。glance-api 对外提供通信接口,与其他服务交互;glance-registry 用于管理存储在硬盘或

修改好配置后,需要重启 openstack-glance-api.service 或

一、在控制节点(controller)安装Glance 1、登录数据库创建glance 数据库

MariaDB [(none)]> CREATE DATABASE glance default character set utf8;

创建并授予 glance 用户完全操作

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'openstack';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'openstack';

 

2、创建用户和API 服务端点

# source /etc/keystone/admin-openrc.sh

创建

# openstack user create --domain default --password openstack2022 glance

 

# openstack role add --project service --user glance admin

 

创建

openstack service create --name glance --description "OpenStack Image" image

 

创建

# openstack endpoint create --region RegionOne image public http://controller:9292

# openstack endpoint create --region RegionOne image internal http://controller:9292

# openstack endpoint create --region RegionOne image admin http://controller:9292

 

3、安装配置Glance

# yum -y install openstack-glance

 

修改/etc/glance/glance-api.conf

# cd /etc/glance/ && mv glance-api.conf glance-api.conf.source && cat glance-api.conf.source |grep -Ev "^#|^$" > glance-api.conf && chown root:glance glance-api.conf

# vi /etc/glance/glance-api.conf

 

在[DEFAULT]部分,增加

[DEFAULT]

show_image_direct_url = True

transport_url = rabbit://openstack:openstack@controller

 

在[database]部分中,配置数据库访问。

[database]

connection = mysql+pymysql://glance:openstack@controller/glance

 

在[keystone_authtoken]和[paste_deploy]部分中,配置身份认证服务

[keystone_authtoken]

www_authenticate_uri = http://controller:5000

auth_url = http://controller:5000

memcached_servers = controller:11211

auth_type = password

project_domain_name = Default

user_domain_name = Default

project_name = service

username = glance

password = openstack2022

 

[paste_deploy]

flavor = keystone

 

在该[glance_store]部分,配置镜像使用哪种存储来存储镜像,默认使用文件系统存储,路径为

[glance_store]

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

 

修改/etc/glance/glance-registry.conf

# cd /etc/glance/ && mv glance-registry.conf glance-registry.conf.source && cat glance-registry.conf.source |grep -Ev "^#|^$" > glance-registry.conf && chown root:glance glance-registry.conf

# vi /etc/glance/glance-registry.conf

在该[database]部分中,配置数据库访问。

[database]

connection = mysql+pymysql://glance:openstack@controller/glance

 

在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问。

[keystone_authtoken]

www_authenticate_uri = http://controller:5000

auth_url = http://controller:5000

memcached_servers = controller:11211

auth_type = password

project_domain_name = Default

user_domain_name = Default

project_name = service

username = glance

password = openstack2022

 

[paste_deploy]

flavor = keystone

 

4、同步Glance 数据库

su -s /bin/sh -c "glance-manage db_sync" glance

 输出Database is synced successfully.

5、启动Glance 服务并设置成开机自启动

# systemctl enable openstack-glance-api.service openstack-glance-registry.service && systemctl start openstack-glance-api.service openstack-glance-registry.service

#systemctl status openstack-glance-api.service openstack-glance-registry.service 

6、验证Glance 服务

# source /etc/keystone/admin-openrc.sh

 

下载测试镜像

# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

 

使用本地

# wget http://yum01/yumrepos/cirros-0.4.0-x86_64-disk.img

说明:cirros 是一个裁剪过的镜像,用于

 

上传镜像到glance。

# openstack image create "cirros-0.4.0-x86_64" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --public

上传的镜像分私有镜像和公有镜像。私有镜像只有上传者才拥有权限使用;如果要设置成公有镜像,则只需要加上--public 参数即可。确认上传的镜像和属性。

# openstack image list

# glance image-list

 

# openstack image show ${image_id}

# glance image-show ${image_id}

 

设置镜像为公有镜像

# openstack image set cirros-0.4.0-x86_64 --public

 

删除镜像

# openstack image delete ${image_name}

 

5.4 安装配置Neutron(控制节点)

OpenStack 网络使用的是一个 SDN(Software Defined Networking)组件,即

前期规划,将 ens33 网口作为外部网络(在 Openstack 术语中,外部网络常被称之为Provider 网络),同时也用作管理网络,便于测试访问,生产环境建议分开;ens37 网络作为租户网络,即vxlan 网络;ens38 作为

 

OpenStack 网络部署方式可选的有 OVS 和 LinuxBridge。此处选择 LinuxBridge 模式,部署大同小异。在控制节点上要启动的服务

neutron-server.service

neutron-linuxbridge-agent.service

neutron-dhcp-agent.service

neutron-metadata-agent.service

neutron-l3-agent.service

 

一、在控制节点(controller)安装Neutron 服务,同时配置支持vxlan 1、登录数据库创建neutron 数据库

MariaDB [(none)]> CREATE DATABASE neutron default character set utf8;

创建并授予 neutron 用户完全操作

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'openstack';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'openstack';

 

2、创建用户和API 服务端点

# source /etc/keystone/admin-openrc.sh

 

创建 Neutron 用户,密码设置为

openstack user create --domain default --password openstack2022 neutron

 

/*

说明:使用 --password openstack2022 neutron 是非交互式方式,而 --password-prompt 是交互式,需要在窗口输入

*/

 

# openstack role add --project service --user neutron admin

 

创建

# openstack service create --name neutron --description "OpenStack Networking" network

 

创建

# openstack endpoint create --region RegionOne network public http://controller:9696

# openstack endpoint create --region RegionOne network internal http://controller:9696

# openstack endpoint create --region RegionOne network admin http://controller:9696

 

3、安装配置Neutron

采用

# yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

 

修改配置文件/etc/neutron/neutron.conf

# cd /etc/neutron/ && mv neutron.conf neutron.conf.source && cat neutron.conf.source |grep -Ev "^#|^$" > neutron.conf && chown root:neutron neutron.conf

# vi /etc/neutron/neutron.conf

修改[DEFAULT]部分,增加如下配置

[DEFAULT]

# 启用 Modular Layer 2 (ML2)插件

core_plugin = ml2

# service_plugins 默认为空,如果值是 router 表示支持路由模式,即

service_plugins = router

transport_url = rabbit://openstack:openstack@controller

# 设置验证策略

auth_strategy = keystone

# 通知计算节点的网络拓扑变化

notify_nova_on_port_status_changes = true

notify_nova_on_port_data_changes = true

allow_overlapping_ips = true

 

修改[database]部分,配置数据库访问。

[database]

connection = mysql+pymysql://neutron:openstack@controller/neutron

 

修改[keystone_authtoken]部分,配置身份认证

[keystone_authtoken]

www_authenticate_uri = http://controller:5000

auth_url = http://controller:5000

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = openstack2022

token_cache_time=3600

 

增加[nova]部分,通知计算节点网络拓扑变化

[nova]

auth_url = http://controller:5000

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = nova

password = openstack2022

说明:配置文件中默认没有该模块,需要新增

修改[oslo_concurrency]部分,配置锁定路径。

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

 

修改ML2 插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini

参考:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option2.html

# cd /etc/neutron/plugins/ml2 && mv ml2_conf.ini ml2_conf.ini.source && cat ml2_conf.ini.source |grep -Ev "^#|^$" > ml2_conf.ini && chown root:neutron ml2_conf.ini

# vi /etc/neutron/plugins/ml2/ml2_conf.ini

 

启用 flat 和 vlan、vxlan 网络,需要新增加

增加[ml2]部分,配置支持

[ml2]

type_drivers = flat,vlan,vxlan

tenant_network_types = vxlan

mechanism_drivers = linuxbridge,l2population

extension_drivers = port_security

 

增加[ml2_type_flat]部分,将 provider 配置为

[ml2_type_flat]

flat_networks = provider

 

增加[ml2_type_vlan]部分,将

[ml2_type_vlan]

network_vlan_ranges = provider

 

增加[ml2_type_vxlan]部分,配置

[ml2_type_vxlan]

# 取值范围

vni_ranges = 1:3000

 

增加[securitygroup]部分,启用

[securitygroup]

enable_ipset = true

修改/etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,配置Linux 桥代理


# cd /etc/neutron/plugins/ml2 && mv linuxbridge_agent.ini linuxbridge_agent.ini.source && cat linuxbridge_agent.ini.source |grep -Ev "^#|^$" > linuxbridge_agent.ini && chown root:neutron linuxbridge_agent.ini

# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

增加[linux_bridge]部分,将Provider 虚拟网络映射到物理网络(能与外网通信的网段)

[linux_bridge]

physical_interface_mappings = provider:ens33

 

增加[vxlan]部分,启用

[vxlan]

# 如果要禁用 vxlan,则设置为 false,同时注释 local_ip 和

enable_vxlan = true

# 每个(控制和计算)节点都要添加一个网卡,给 vxlan 专用,并且要配置 IP 地址(不需要配置网关,配置 IP 后,各节点可以使用对应

local_ip = 10.168.59.20

l2_population = true

增加[securitygroup]部分,启用安全组并配置

[securitygroup]

enable_security_group = true

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

 

/*

说明:local_ip 要修改成控制节点/计算节点实际用于

provider 网络使用的是 ens33 网口,部署时根据实际情况调整,provider 网络可以理解为能与外部互联网相通的网络,后面在创建

--provider-physical-network 要指定是provider。

*/

修改内核配置文件/etc/sysctl.conf,确保系统内核支持网桥过滤器

# vi /etc/sysctl.conf

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-ip6tables = 1

 

执行以下命令,添加网桥过滤器,并设置开机加载

# modprobe br_netfilter

# sysctl -p

# sed -i '$amodprobe br_netfilter' /etc/rc.local

# chmod +x /etc/rc.d/rc.local

 

修改/etc/neutron/dhcp_agent.ini 文件,配置DHCP 代理

# cd /etc/neutron/ && mv dhcp_agent.ini dhcp_agent.ini.source && cat dhcp_agent.ini.source |grep -Ev "^#|^$" > dhcp_agent.ini && chown root:neutron dhcp_agent.ini

 

# vi /etc/neutron//dhcp_agent.ini

在[DEFAULT]部分,配置

[DEFAULT]

interface_driver = linuxbridge

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = true

 

修改/etc/neutron/metadata_agent.ini 文件,配置元数据代理

# cd /etc/neutron/ && mv metadata_agent.ini metadata_agent.ini.source && cat metadata_agent.ini.source |grep -Ev "^#|^$" > metadata_agent.ini && chown root:neutron metadata_agent.ini

# vi /etc/neutron/metadata_agent.ini

在[DEFAULT]部分,配置元数据主机和共享秘钥

[DEFAULT]

nova_metadata_host = controller

metadata_proxy_shared_secret = openstack2022

修改/etc/neutron/l3_agent.ini 文件,配置layer-3 代理

# cd /etc/neutron/ && mv l3_agent.ini l3_agent.ini.source && cat l3_agent.ini.source |grep -Ev "^#|^$" > l3_agent.ini && chown root:neutron l3_agent.ini

# vi /etc/neutron/l3_agent.ini

在[DEFAULT]部分,配置

[DEFAULT]

interface_driver = linuxbridge

external_network_bridge =

 

配置计算服务以使用Neutron 网络(此步可以放到安装并配置nova)

(前提:已经安装了nova 服务yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy 

openstack-nova-scheduler)

# cd /etc/nova/ && mv nova.conf nova.conf.source && cat nova.conf.source |grep -Ev "^#|^$" > nova.conf && chown root:nova nova.conf

# vi /etc/nova/nova.conf

在[neutron]部分,配置访问参数

[neutron]

url = http://controller:9696

auth_url = http://controller:5000

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = neutron

password = openstack2022

 

service_metadata_proxy = true

metadata_proxy_shared_secret = openstack2022

4、初始化创建网络

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

 

5、同步neutron 数据库

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron


6、启动neutron 各服务并设置为开机自启动

# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service

# systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service

# systemctl status neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service

 

二、在计算节点(compute01、compute02)安装Neutron 服务,同时配置支持vxlan

说明:如果想把 controller 节点也作为计算节点,在

1、安装组件,由于neutron 和nova 之间有相互调用配置,此处将计算服务一并安装

# yum -y install openstack-nova-compute

# yum -y install openstack-neutron-linuxbridge ebtables ipset

 

2、修改配置文件/etc/neutron/neutron.conf

# cd /etc/neutron/ && mv neutron.conf neutron.conf.source && cat neutron.conf.source |grep -Ev "^#|^$" > neutron.conf && chown root:neutron neutron.conf

# vi /etc/neutron/neutron.conf

在[DEFAULT]部分,配置

[DEFAULT]

transport_url = rabbit://openstack:openstack@controller

 

在[DEFAULT]部分,配置身份认证服务

[DEFAULT]

auth_strategy = keystone

 

在[keystone_authtoken]部分,配置身份认证服务

[keystone_authtoken]

www_authenticate_uri = http://controller:5000

auth_url = http://controller:5000

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = openstack2022

token_cache_time=3600

 

在[oslo_concurrency]部分,配置锁定路径

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

 

3、修改配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini

为实例建立layer2 虚拟网络并且处理安全组规则,并将Flat 网络和外部物理业务网络接口对应起来


# cd /etc/neutron/plugins/ml2 && mv linuxbridge_agent.ini linuxbridge_agent.ini.source && cat linuxbridge_agent.ini.source |grep -Ev "^#|^$" > linuxbridge_agent.ini && chown root:neutron linuxbridge_agent.ini

# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]

physical_interface_mappings = provider:ens33

[vxlan]

enable_vxlan = true

local_ip = 10.168.59.31

l2_population = true

[securitygroup]

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

enable_security_group = True

 

说明:local_ip 要修改成计算节点实际用于

provider 网络使用的是 ens33 网口,部署时根据实际情况调整,provider 网络可以理解为能与外部互联网相通的网络,后面在创建 Flat 类型网络时物理网络 --provider-physical-network 要指定是

 

4、修改内核配置文件/etc/sysctl.conf,确保系统内核支持网桥过滤器

# vi /etc/sysctl.conf

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-ip6tables = 1

 

执行以下命令,添加网桥过滤器,并设置开机加载

# modprobe br_netfilter

# sysctl -p

# sed -i '$amodprobe br_netfilter' /etc/rc.local

# chmod +x /etc/rc.d/rc.local

 

5、启动neutron-linuxbridge-agent 服务并设置开机自启动

# systemctl enable neutron-linuxbridge-agent.service && systemctl restart neutron-linuxbridge-agent.service

 # systemctl status neutron-linuxbridge-agent.service

6、将上述1-5 步在计算节点compute02 上执行一次或者使用以下步骤

a、安装组件

# yum -y install openstack-nova-compute

# yum -y install openstack-neutron-linuxbridge ebtables ipset

 

b、在计算节点 compute01 上直接拷贝配置文件到

# scp /etc/neutron/neutron.conf root@compute02:/etc/neutron/

# scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini root@compute02:/etc/neutron/plugins/ml2/

# scp /etc/sysctl.conf root@compute02:/etc

c、在

# sed -i 's/59.31/59.32/g' /etc/neutron/plugins/ml2/linuxbridge_agent.ini

# modprobe br_netfilter

# sysctl -p

# sed -i '$amodprobe br_netfilter' /etc/rc.local

# chmod +x /etc/rc.d/rc.local

 

d、启动

# systemctl enable neutron-linuxbridge-agent.service

# systemctl restart neutron-linuxbridge-agent.service

 

三、验证Neutron

在控制节点执行以下操作进行验证。

# source /etc/keystone/admin-openrc.sh

1、列出成功启动的

# openstack network agent list

+ + + + + + + +

| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |

+ + + + + + + +

| 1334a7b0-5436-4041-bc36-95f194a140f0 | Linux bridge agent | compute01 | None | :-) | UP | neutron-linuxbridge-agent |

| 5667c78a-19dd-40b1-a2df-5f361e5a04c4 | Linux bridge agent | compute02 | None | :-) | UP | neutron-linuxbridge-agent |

| d314afcc-2604-4b56-a4eb-4b9076de017f | DHCP agent | controller | nova | :-) | UP | neutron-dhcp-agent |

| d93948d3-3e1b-488f-9e58-5c8d53e626a1 | Linux bridge agent | controller | None | :-) | UP | neutron-linuxbridge-agent |

| f7927a9f-da78-4a38-8f59-9e78382dd26c | Metadata agent | controller | None | :-) | UP | neutron-metadata-agent |

+ + + + + + + +

 

/*

说明:上面agent list 中没有L3 agent,说明

*/

2、创建一个

# openstack network create --share --external --provider-network-type flat public --provider-physical-network provider

OpenStack 配额管理 pdf openstack硬件最佳配置_html_39

说明:在 linuxbridge_agent.ini 文件中的 physical_interface_mappings = provider:ens33,所以当前创建的

--provider-physical-network 要指定为

 

创建子网

在类型为

# openstack subnet create --network public \

--allocation-pool start=192.168.59.100,end=192.168.59.240 \

--dns-nameserver 223.5.5.5 \

--gateway 192.168.59.2 \

--subnet-range 192.168.59.0/24 subnet_192.168.59

OpenStack 配额管理 pdf openstack硬件最佳配置_html_40

 

创建网络接口

# openstack port create --network public --fixed-ip subnet=subnet_192.168.59 ip-address=192.168.59.110

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_41

 

 

查看网络

# openstack network list

 

查看子网

# openstack subnet list

 

查看网络接口

# openstack port list

 

删除网络

# openstack port delete ip-address=192.168.59.110

# openstack subnet delete subnet_192.168.59

# openstack network delete public

说明:删除网络前,要先后顺序删除,即先要删除子网下的网络接口-->删除子网-->删除网络

 

# openstack network create --share --external --provider-network-type flat public --provider-physical-network provider

# openstack subnet create --network public \

--allocation-pool start=192.168.59.100,end=192.168.59.240 \

--dns-nameserver 223.5.5.5 \

--gateway 192.168.59.2 \

--subnet-range 192.168.59.0/24 subnet_192.168.59

 

5.5 安装并验证Nova(计算节点+控制节点)

Nova 是 OpenStack 中的计算服务。OpenStack 中虚拟机实例(instance)生命周期都是由

nova 服务包含一系列组件,其中有

nova-scheduler:把 nova-api 调用请求映射为 OpenStack 将要调度哪个服务器来响应运行实例的请求,会根据诸如

nova-api:对外提供

nova-conductor:nova-compute 和数据库之间的一个组件,nova-conductor 建立的初衷是基于安全考虑,避免

nova-novncproxy:提供控制台服务,允许最终用户以 vnc 方式访问实例控制台,后续如果使用 spice-server,需要停止。

综合对上面组件的介绍,可以看出

一、在控制节点(controller安装nova 服务

1、登录数据库创建nova,nova_api,nova_cell0 数据库

MariaDB [(none)]> CREATE DATABASE nova_api default character set utf8;

MariaDB [(none)]> CREATE DATABASE nova default character set utf8;

MariaDB [(none)]> CREATE DATABASE nova_cell0 default character set utf8;

 

创建并授予 nova 用户完全操作

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'openstack';

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'openstack';

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'openstack';

 

/*

说明:OpenStack Rocky 版本需添加 Placement 数据库,在

CREATE DATABASE placement;

GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'openstack';

GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'openstack';

*/

 

2、创建用户和API 服务端点

# source /etc/keystone/admin-openrc.sh

# openstack user create --domain default --password-prompt nova

密码: openstack2022

 

将 nova 加入到 service 项目以及

# openstack role add --project service --user nova admin

创建

# openstack service create --name nova --description "OpenStack Compute" compute

创建

# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1

# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1

# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

 

使用命令查看

# openstack endpoint list

 

/*

说明:OpenStack Rocky 版本需添加 placement 用户,Stein 版本已在单独的 Placement 组件添加,请忽略以下操作(可以使用

创建用户

openstack user create --domain default --password-prompt placement

添加角色。

openstack role add --project service --user placement admin

创建

openstack service create --name placement --description "Placement API" placement

openstack endpoint create --region RegionOne placement public http://controller:8778

openstack endpoint create --region RegionOne placement internal http://controller:8778

openstack endpoint create --region RegionOne placement admin http://controller:8778

*/

 

3、安装配置Nova

安装组件

# yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler

 

/*

说明:

OpenStack Rocky 版本需在这里安装 placement,Stein 版本之后已在单独的

yum -y install openstack-nova-placement-api

*/

 

修改配置文件/etc/nova/nova.conf

说明:在配置 neutron 时已经配置过 nova.conf,所以此处直接修改

在[DEFAULT]部分,开启计算和元数据

[DEFAULT]

enabled_apis = osapi_compute,metadata

transport_url = rabbit://openstack:openstack@controller

my_ip = 192.168.59.20

use_neutron = true

firewall_driver = nova.virt.firewall.NoopFirewallDriver

allow_resize_to_same_host = true

 

说明:my_ip 为控制节点的管理

 

在[api_database]部分,配置数据库访问

[api_database]

connection = mysql+pymysql://nova:openstack@controller/nova_api

 

在[database]部分,配置数据库访问

[database]

connection = mysql+pymysql://nova:openstack@controller/nova

 

在[api]部分,配置身份认证服务

[api]

auth_strategy = keystone

token_cache_time=3600

 

在[keystone_authtoken]部分,配置身份认证信息

[keystone_authtoken]

auth_url = http://controller:5000/v3

memcached_servers = controller:11211

auth_type = password

project_domain_name = Default

user_domain_name = Default

project_name = service

username = nova 

password = openstack2022

token_cache_time=3600

 

在[neutron]部分,启用元数据代理并配置密码

说明:此部分在安装配置

 

[neutron]

url = http://controller:9696

auth_url = http://controller:5000

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = neutron

password = openstack2022

service_metadata_proxy = true

metadata_proxy_shared_secret = openstack2022

 

在[vnc]部分,配置 VNC 代理以使用控制器节点的管理接口

[vnc]

enabled = true

server_listen = $my_ip

server_proxyclient_address = $my_ip

novncproxy_host=0.0.0.0

novncproxy_port=6080

novncproxy_base_url=http://controller:6080/vnc_auto.html

 

说明:访问者本地要写 hosts,将 controller 的 IP 写到本地

 

在[glance]部分,配置 glance 服务

[glance]

api_servers = http://controller:9292

 

在[oslo_concurrency]部分,配置锁定路径

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

 

在[placement]部分,配置对

[placement]

region_name = RegionOne

project_domain_name = Default

project_name = service

auth_type = password

user_domain_name = Default

auth_url = http://controller:5000/v3

username = placement

password = openstack2022

 

在[scheduler]部分,配置周期性发现计算节点间隔

[scheduler]

discover_hosts_in_cells_interval = 180

 

说明:如果未加上述参数,则在控制节点需要执行以下命令:nova-manage cell_v2 discover_hosts

 

修改配置文件/etc/neutron/metadata_agent.ini

说明:此部分在安装配置

[DEFAULT]

nova_metadata_host = controller

metadata_proxy_shared_secret = openstack2022

 

4、同步nova 数据库并验证

# su -s /bin/sh -c "nova-manage api_db sync" nova

# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

# su -s /bin/sh -c "nova-manage db sync" nova

 

说明:忽略

 

验证 cell0 和

# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

 

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_42

 

 

6、启动nova 服务并设置为开机自启动

# systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

# systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

# systemctl status openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

 

二、在计算节点(compute01、compute02)安装配置Nova

在计算节点执行以下操作

1、安装组件

# yum -y install openstack-nova-compute

 

2、修改配置文件/etc/nova/nova.conf

# cd /etc/nova/ && mv nova.conf nova.conf.source && cat nova.conf.source |grep -Ev "^#|^$" > nova.conf && chown nova:root nova.conf

# vi /etc/nova/nova.conf

 

在[DEFAULT]部分,配置计算和元数据

[DEFAULT]

enabled_apis = osapi_compute,metadata

transport_url = rabbit://openstack:openstack@controller

my_ip = 192.168.59.31

use_neutron = true

firewall_driver = nova.virt.firewall.NoopFirewallDriver

 

说明:

此处的 my_ip 设置为 计算节点的管理

 

在[api]部分,配置身份认证服务

[api]

auth_strategy = keystone

 

在[keystone_authtoken]部分,配置身份认证服务

[keystone_authtoken]

auth_url = http://controller:5000/v3

memcached_servers = controller:11211

auth_type = password

project_domain_name = Default

user_domain_name = Default

project_name = service

username = nova 

password = openstack2022

token_cache_time=3600

 

在 [neutron]部分,配置访问参数

[neutron]

url = http://controller:9696 

auth_url = http://controller:5000/v3

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = neutron

password = openstack2022

 

在[vnc]部分,启用并配置远程访问控制台。

[vnc]

enabled = true

 

# 此处监听 ip 不能写当前计算节点 ip,因为如果要做实例迁移,迁移后实例

server_listen = 0.0.0.0

server_proxyclient_address = $my_ip

novncproxy_base_url = http://controller:6080/vnc_auto.html

vncserver_proxyclient_address = $my_ip

 

在[glance]部分,配置 glance 服务

[glance]

api_servers = http://controller:9292

 

在[oslo_concurrency]部分,配置锁定路径

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

 

在[placement]部分,配置

[placement]

region_name = RegionOne

project_domain_name = Default

project_name = service

auth_type = password

user_domain_name = Default

auth_url = http://controller:5000/v3

username = placement

password = openstack2022

 

在[scheduler]部分,配置周期性发现计算节点间隔

[scheduler]

discover_hosts_in_cells_interval = 180

 

在[libvirt]部分,配置虚拟化类型。

# 虚拟机模拟 openstack 可能需要将 virt_type 设置为qemu,否则创建虚拟机后,一直停在

[libvirt]

# virt_type = qemu

virt_type = kvm

num_pcie_ports=10

 

说明:num_pcie_ports 为虚拟机的 pci 数量,最多支持设置

 

3、安装并配置kvm 组件

# yum -y install qemu-kvm-common-ev qemu-kvm-tools qemu-kvm-ev libvirt-daemon-kvm qemu-guest-agent qemu-img-ev

 

修改配置文件/etc/libvirt/libvirtd.conf

# cat libvirtd.conf |grep -v "^#" |grep -v "^$"

listen_tls = 0

listen_tcp = 1

tcp_port = "16509"

# 计算节点 compute02 上要修改成

listen_addr = "192.168.59.31"

auth_tcp = "none"

 

修改/etc/sysconfig/libvirtd

LIBVIRTD_ARGS="--listen"

 

4、启动libvirtd、nova-compute 服务,并设置成开机自启动

# systemctl enable libvirtd.service openstack-nova-compute.service

# systemctl restart libvirtd.service openstack-nova-compute.service

# systemctl status libvirtd.service openstack-nova-compute.service

# netstat -atnp |grep 16509

# virsh version

Compiled against library: libvirt 4.5.0

Using library: libvirt 4.5.0

Using API: QEMU 4.5.0

Running hypervisor: QEMU 2.12.0

 

三、验证Nova

在控制节点执行以下操作进行验证。


# source /etc/keystone/admin-openrc.sh

 

查看计算服务组件状态

# openstack compute service list 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_43

 

 

查看已注册的计算节点

# openstack compute service list --service nova-compute 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_44

 

 

/*

说明:执行 openstack compute service list --service nova-compute 可能会遇到以下报错:

[23:35:07]The server is currently unavailable. Please try again at a later time.<br /><br /> 

[23:35:07]The Keystone service is temporarily unavailable.

 

原因是在创建

没有给 nova 用户授予

openstack role add --project service --user nova admin

 

在增加新的计算节点时,需要在控制器节点手动执行以下命令,用于发现新计算节点

# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

如果已经配置了 discover_hosts_in_cells_interval = 180,则会周期性注册新增的计算节点,不需要手动执行上述命令

[scheduler]

discover_hosts_in_cells_interval = 180

*/

 

列出 keystone 服务中的 API 端点以验证与

# openstack catalog list

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_45

 

 

 

创建指定规格的

# openstack flavor create n1.nano --vcpus 1 --ram 128 --disk 1

 

创建虚拟机实例

# openstack server create --flavor n1.nano \

--image cirros-0.4.0-x86_64 \

--nic net-id=public \

--security-group default vm01

 

查看所有实例

# openstack server list 

 

OpenStack 配额管理 pdf openstack硬件最佳配置_html_46

 

 

查看某一个实例的详细信息

# openstack server show d032241e-0bed-412c-a901-5a1b824e792f

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_47

 

 

登录实例

# virsh console instance-00000001

说明:使用cirros 镜像创建的实例没有 ssh 服务,所以要到对应的计算节点(compute02)上使用virsh console 命令进行登录

 

OpenStack 配额管理 pdf openstack硬件最佳配置_centos_48

说明:使用virsh console 登录实例后如何退出实例:直接按

# openstack server stop vm01

 

启动实例

# openstack server start vm01

 

删除所选的实例

# openstack server delete vm01

 

5.6 安装配置Horizon

OpenStack Dashboard 就是 Horizon,提供了基于 Web 控制台,是一个运行在

一、在控制节点(controller)安装Horizon 服务

1、安装软件

# yum -y install openstack-dashboard

 

2、修改配置文件/etc/openstack-dashboard/local_settings

# vi /etc/openstack-dashboard/local_settings

a、配置WEBROOT 路径和会话超时时间

WEBROOT = '/dashboard/'

# https://docs.openstack.org/horizon/ussuri/configuration/settings.html

SESSION_TIMEOUT = 86400

 

b、更改 OPENSTACK_HOST 值为"controller",若为

OPENSTACK_HOST = "controller"

 

c、允许所有主机访问,注意格式,逗号后面有一个空格。

ALLOWED_HOSTS = ['*', ]

 

d、配置

SESSION_ENGINE = 'django.contrib.sessions.backends.file'

CACHES = {

'default': {

'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',

'LOCATION': 'controller:11211',

}

}

 

e、配置API 版本。

OPENSTACK_API_VERSIONS = {

"identity": 3,

"image": 2,

"volume": 3,

}

 

f、使用

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

 

g、启用对多域的支持

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

 

h、配置

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

 

i、配置user 为通过

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

 

j、开启对第

OPENSTACK_NEUTRON_NETWORK = {

'enable_router': True,

'enable_quotas': True,

'enable_rbac_policy': True,

'enable_distributed_router': False,

'enable_ha_router': False,

'enable_ipv6': False,

'enable_lb': False,

'enable_firewall': False,

'enable_vpn': False,

'enable_fip_topology_check': True,

'default_dns_nameservers': [],

'supported_provider_types': ['*'],

'segmentation_id_range': {},

'extra_provider_types': {},

'supported_vnic_types': ['*'],

'physical_networks': [],

}

 

k、开启卷备份特性,需要后端存储类型为 swift 或

 

OPENSTACK_CINDER_FEATURES = {

'enable_backup': True,

}

 

l、配置时区:上海。

TIME_ZONE = "Asia/Shanghai"

 

3、修改配置文件/etc/httpd/conf.d/openstack-dashboard.conf

# vi /etc/httpd/conf.d/openstack-dashboard.conf

 

在第

WSGIApplicationGroup %{GLOBAL}

 

4、修改/usr/share/openstack-dashboard/ 文件夹属组、属主为apache

# chown -R apache:apache /usr/share/openstack-dashboard/

 

5、重新启动httpd 服务器和Memcache 服务

# systemctl restart httpd.service memcached.service

 

登录

 

http://controller/dashboard/ 

域:Default

账号:admin

密码:openstack2022

 

OpenStack 配额管理 pdf openstack硬件最佳配置_html_49

 

5.7 安装并验证cinder

块存储服务(Block Storage Service)cinder,作为 OpenStack 的块存储服务,为 Instance 提供虚拟磁盘,其类似 AWS 的 EBS(Elastic Block Storage),它们之间的区别在于存储卷暴露给虚拟机实例的方式。在 OpenStack 中,通过 iSCSI 暴露 LVM 卷组(VG)对卷进行管理,所以使用 cinder 的存储节点都会有

cinder 在控制节点上需要安装openstack-cinder,对应要启动的服务有:cinder-api、cinder-scheduler。修改好配置后,需要启动:

 

cinder 在存储节点上需要安装openstack-cinder lvm2 device-mapper-persistent-data openstack-cinder targetcli python-keystone

cinder 在存储节点上运行的服务是:cinder-volume,当然还需启动其依赖的

openstack-cinder-volume.service target.service

 

/*

说明:cinder-api 用来接收api 请求,然后将请求消息加工后放到 MQ 里,cinder-scheduler 从 MQ 中消费消息,通过调度算法选择相应的存储节点,然后将消息放到 MQ 里,cinder-volume 收到

没有安装

控制节点和存储节点的 cinder.conf 配置可以相同,前提是当控制节点不具备对应的 VG 时,不要启动 openstack-cinder-volume.service,否则会报错找不到

*/

 

一、在控制节点(controller)安装配置Cinder 块存储服务


1、登录数据库创建cinder 数据库


MariaDB [(none)]> CREATE DATABASE cinder default character set utf8;

创建并授予 cinder 用户完全操作

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'openstack';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'openstack';

 

2、创建用户和API 服务端点

# source /etc/keystone/admin-openrc.sh

 

创建

# openstack user create --domain default --password openstack2022 cinder

 

密码:openstack2022

 

将 cinder 加入到 service 项目以及

# openstack role add --project service --user cinder admin

 

创建 cinderv2 和

# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2

# openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3

 

创建

# openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(project_id\)s

# openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(project_id\)s

# openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(project_id\)s

 

# openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s

# openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s

# openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s

 

3、安装cinder 软件包并修改配置文件

# yum -y install openstack-cinder

 

修改配置文件/etc/cinder/cinder.conf

# cd /etc/cinder/ && mv cinder.conf cinder.conf.source && cat cinder.conf.source |grep -Ev "^#|^$" > cinder.conf && chown cinder:root cinder.conf

# vi /etc/cinder/cinder.conf

 

在[DEFAULT]部分,配置认证信息

[DEFAULT]

transport_url = rabbit://openstack:openstack@controller

auth_strategy = keystone

# 配置 my_ip 选项以使用控制器节点的管理接口

my_ip = 192.168.59.20

# 指定存储类型,否则在创建卷时,类型为   DEFAULT

default_volume_type = hdd

 

在[database]部分,配置数据库

[database]

connection = mysql+pymysql://cinder:openstack@controller/cinder

 

在[keystone_authtoken]部分,配置认证信息

[keystone_authtoken]

www_authenticate_uri = http://controller:5000

auth_url = http://controller:5000/v3

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = openstack2022

 

在[oslo_concurrency]配置锁定路径

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

 

修改配置文件 /etc/nova/nova.conf,让计算服务支持块存储

# vi /etc/nova/nova.conf

在[cinder]部分,增加如下配置

[cinder]

os_region_name = RegionOne

 

4、同步cinder 数据库

# su -s /bin/sh -c "cinder-manage db sync" cinder

 

说明:忽略带有“Deprecated: Option...” 输出

 

5、重启服务并设置成开机自启动

重启

# systemctl restart openstack-nova-api.service

 

启动

 

# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service 

# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service

# systemctl status openstack-cinder-api.service openstack-cinder-scheduler.service

 

6、验证控制节点cinder-scheduler,状态为up 即正常

# openstack volume service list

 

OpenStack 配额管理 pdf openstack硬件最佳配置_OpenStack 配额管理 pdf_50

 

 

二、在存储节点(compute01、compute02)安装配置Cinder 服务

cinder 在存储节点上运行的服务是:cinder-volume,当然其依赖

 

修改好配置后,需要启动的服务有:lvm2-lvmetad.service、openstack-cinder-volume.service target.service

 

1、在存储节点安装和配置LVM 并设置为开机自启动


# yum -y install lvm2 device-mapper-persistent-data

# systemctl enable lvm2-lvmetad.service

# systemctl start lvm2-lvmetad.service

 

/*

说明:系统安装时就采用的

*/

 

2、计算节点compute01、compute02 分别规划了1 个50GB 的硬盘用作虚机存储,在系统上对应是/dev/sdb

创建

# pvcreate /dev/sdb

创建 VG,VG 名称定义为

# vgcreate cinder-volumes /dev/sdb

 

/*

说明:不同存储节点上相同用途的 VG 名称设置成相同,因为 cinder.conf 中需要指定 volume_group,另外

*/

 

3、修改配置文件/etc/lvm/lvm.conf

# vi /etc/lvm/lvm.conf

 

devices {

# 在

filter = [ "a/sda/", "a/sdb/", "r/.*/"]

 

说明:filter 过滤器阵列中的每个项目开头为“a”或者“r”,用于接受或用于拒绝某个设备,如果存储节点在操作系统磁盘上使用 LVM,则还必须将关联的系统盘设备添加到过滤器。同样,如果计算节点在操作系统磁盘上使用

参考:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-storage-install.html

 

4、安装和配置存储节点

/*

说明:存储节点的 cinder.conf 包含了控制节点的 cinder.conf,如果控制节点即是存储节点,可以直接用存储节点的

*/

 

安装软件包

# yum -y install openstack-cinder targetcli python-keystone

 

修改配置文件/etc/cinder/cinder.conf

# cd /etc/cinder/ && mv cinder.conf cinder.conf.source && cat cinder.conf.source |grep -Ev "^#|^$" > cinder.conf && chown cinder:root cinder.conf

# vi /etc/cinder/cinder.conf

 

在[DEFAULT]部分,配置 RabbitMQ 消息队列

[DEFAULT]

transport_url = rabbit://openstack:openstack@controller

auth_strategy = keystone

#配置 my_ip 为为存储节点上管理网络接口的 IP 地址,compute01 为 31,compute02 为

my_ip = 192.168.59.31

#启用 LVM 后端,这里的

enabled_backends = lvm

#配置 Image 服务

glance_api_servers = http://controller:9292

 

在[database]部分,配置数据库访问

[database]

connection = mysql+pymysql://cinder:openstack@controller/cinder

 

在[keystone_authtoken]部分,配置身份认证服务信息

[keystone_authtoken]

www_authenticate_uri = http://controller:5000

auth_url = http://controller:5000/v3

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = openstack2022

 

新增[lvm]部分,使用 LVM 驱动程序,cinder-volumes 卷组,iSCSI 协议和相应的 iSCSI 服务配置

[lvm]

volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

# volume_group 对应前面创建的

volume_group = cinder-volumes

target_protocol = iscsi

target_helper = lioadm

volume_backend_name = cinder-volumes

 

在[oslo_concurrency]部分,配置锁定路径

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

 

5、启动cinder-volume、target 服务,并设置开机自启动

# systemctl enable openstack-cinder-volume.service target.service

# systemctl restart openstack-cinder-volume.service target.service

同步compute01 上的cinder.conf 到compute02 上,然后在compute02 上只需要修改cinder.conf 中的my_ip 为32,重启cinder-volume、target 并设置为开机自启动即可

compute02 上操作

# scp -rp root@192.168.59.31:/etc/cinder/cinder.conf* /etc/cinder/

# sed -i 's/59.31/59.32/g' /etc/cinder/cinder.conf

# systemctl enable openstack-cinder-volume.service target.service

# systemctl restart openstack-cinder-volume.service target.service

 

三、在控制节点(controller)进行验证

1、列出存储服务组件,若状态均为

# source /etc/keystone/admin-openrc.sh

# openstack volume service list

 

OpenStack 配额管理 pdf openstack硬件最佳配置_CentOS_51

 

 

Cinder 常用命令

a、创建存储卷

# openstack volume create --size 1 volume01

说明:创建一个卷名为 volume01 大小为

 

b、查看存储卷列表

# openstack volume list

 

c、为存储卷创建快照

# openstack volume snapshot create --volume volume01 snap-volume01

说明:为卷volume01 创建一个名为

 

d、查看快照列表

# openstack volume snapshot list

 

e、挂载卷到实例

# nova volume-attach vm01 ead55f47-a0f3-4eb9-854e-9dff638ff534 /dev/vdb

说明:挂载卷时,要指定卷 id,此处要指定卷 volume01 的 id,然后是连接到实例

 

虚拟机卸载卷

# nova volume-detach vm01 ead55f47-a0f3-4eb9-854e-9dff638ff534

说明:卸载卷时,请先在操作系统层停止正在使用要卸载的应用,umount 掉,然后再执行

 

删除所选存储卷

# openstack volume snapshot delete snap-volume01

# openstack volume delete volume01

说明:删除卷要具备

 

# openstack volume show volume01

 

# 禁用存储节点

# openstack volume service set --disable compute02@lvm cinder-volume

# 启用存储节点

# openstack volume service set --enable compute02@lvm cinder-volume

 

 

6 Horizon 使用

6.1 Horizon 功能介绍

镜像管理、规格管理、网络管理、密钥管理、实例管理、安全组管理、卷管理以及集成ceph 等操作

未完待续...

 

转自  itcooking   转自  itcooking