OpenStack T版搭建详细步骤

参考网站,选择t版centos进行部署

Install OpenStack services — Installation Guide documentation

镜像

https://www.openeuler.org/zh/download/archive/

系统安装

Controller

处理器1个内核4

Compute

处理器1个内核4

All节点

进入到这个页面按tab

在下面输入这条治疗。会让你的网卡名称换成eth0

然后回车安装

到这里点击dest

点击clustom在点击完成

然后这里是lvm换成第一个,然后再点击上面蓝色字体

然后给home和/ 减掉

然后点击加号设置/分区

然后点击完成即可

然后设置密码这个密码太简单不行,自行设置

创建完成然后进入虚拟机passwd root 密码改成000000

修改ip:

Nmcli c reload

Nmcli c up eth0

Centroller:1.1.2.110  后我换网段了这个ip变成了1.1.1.10

Compute :1.1.2.111  后我换网段了这个ip变成了1.1.1.20

环境欧拉拉系统

一块网卡,一块100G 硬盘

All node:

环境准备

Controller:

hostnamectl set-hostname controller;bash

Compute:

hostnamectl set-hsotname compute;bash

All node:修改hosts文件

cat >> /etc/hosts << EOF

1.1.2.110 controller

1.1.2.111 compute

EOF

All node:关闭防火墙沙河

sed -i  "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config;setenforce 0;systemctl stop firewalld;systemctl disable firewalld

All node:同步时间,下载工具

yum -y install chrony net-tools

Controller:配置时间服务器

修改3行23行26行

server ntp6.aliyun.com iburst #使用阿里云作为服务器

allow all #放行全部网段

Local stratum 10#数字越小表示时间源越准确和可信

重启服务

systemctl restart chronyd

查看是否获取成功  #下面的203.107.6.88是阿里云服务的地址

Compute:配置同步时间

修改配置文件第三行,执行服务器为controller

重启服务

systemctl restart chronyd

查看是否同步成功 #已经显示获取到了控制节点的时间

All node :硬件同步

clock -w

Controller :查看可以装的版本

dnf list | grep openstack

提示我们可以装T版和W版

All node:然后下载T版源

yum -y install openstack-release-train.noarch

Controller:安装服务

yum -y install python3-openstackclient

yum install mariadb mariadb-server python3-PyMySQL -y  #安装python3mysql的模块

编辑配置文件

[root@controller ~]# cat /etc/my.cnf.d/openstack.cnf

[mysqld]

bind-address = 0.0.0.0  #监听全部端口

default-storage-engine = innodb #存储引擎默认innodb

innodb_file_per_table = on

max_connections = 4096

collation-server = utf8_general_ci

character-set-server = utf8  #默认字符集utf8

启动数据库设置开机自启

初始化数据库

mysql_secure_installation

安装消息队列服务

yum install rabbitmq-server -y

开启服务设置开机自启

systemctl enable rabbitmq-server.service --now

创建用户openstack密码000000

并且设置为用户"openstack"分配了权限,允许其在所有虚拟主机中进行所有操作(读、写、配置)

rabbitmqctl add_user openstack 000000

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

此反馈不是报错

安装缓存服务

yum install memcached python3-memcached -y

然后修改配置文件最后一行,然后设置开机自启

tail -1 /etc/sysconfig/memcached

OPTIONS="-l 0.0.0.0,::1"  #0.0.0.0" 在这里的意思是允许memcached服务接受来自任何IP地址的连接请求

systemctl enable memcached.service --now

部署身份认证keystone

Controller:

进入数据库

Mysql

创库,和用户且赋予用户从任何主机连接库都具有全部权限

create database keystone;

赋予全部权限,设置密码keystone123,让特定用户能够对指定数据库进行读取、写入、更新等操作。

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone123';

安装keystone需要的环境

yum install openstack-keystone httpd python3-mod_wsgi -y

备份一个文件

用户grep过滤备份文件,然后覆盖到原本文件

grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf

修改配置文件

加入这两行

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

#连接数据库

在这个连接字符串中:

mysql+pymysql表示使用了MySQL数据库的pymysql驱动程序。

keystone:keystone123是用户名和密码,用于连接数据库。

controller是数据库的主机名或IP地址。

keystone是要连接的数据库名称。

provider = fernet

# Fernet是Python中的一个加密模块,可以用于加密和解密数据。它使用对称加密算法来保护数据的机密性。在使用Fernet时,需要生成一个密钥,然后使用该密钥对数据进行加密和解密操作。

同步数据库

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

然后可以进入mysql看到数据库已经同步成功,创建的各种服务的库

创建秘钥环

这两个命令是用于在OpenStack Keystone服务中设置 Fernet token 加密和凭据加密的

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

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

进行初始化设置

 keystone-manage bootstrap --bootstrap-password 000000 \

  --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

配置http

vim /etc/httpd/conf/httpd.conf

修改97行

进行软链接

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

设置开机自启

systemctl enable httpd.service --now

设置适当的环境变量来管理账户,可以写到keystone里面,因为他就是用来认证的

[root@controller ~]# cat /etc/keystone/admin-openrc.sh

#!/bin/bash

export OS_USERNAME=admin

export OS_PASSWORD=000000

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

在导入一下变量

source /etc/keystone/admin-openrc.sh

创建域 example

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

创建项目service

openstack project create --domain default \

   --description "Service Project" service

重新编辑环境变量然后导入一下

[root@controller ~]# cat /etc/keystone/admin-openrc.sh

#!/bin/bash

export OS_PROJECT_DOMAIN_NAME=Default

export OS_USER_DOMAIN_NAME=Default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=000000

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

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

请求身份验证令牌

到此keystone配置完成


Glance镜像服务部署

controller

创库,和用户且赋予用户从任何主机连接库都具有全部权限

CREATE DATABASE glance;

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance123';

字符集一定要是utf8 不是自己修改

创建用户glance设置密码glance

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

在OpenStack中为用户"glance"添加角色"admin"。它将把"admin"角色分配给"glance"用户,使其在OpenStack中具有管理员权限。同时,这个命令还将该角色分配给"service"项目,这意味着"glance"用户将具有对"service"项目的管理员权限。

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

创建服务实体glancel

openstack service create --name glance \

--description "OpenStack Image" image

创建三个影像APL端点

openstack endpoint create --region RegionOne \

public    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

安装软件包

yum -y install openstack-glance

修改配置文件先拷贝一份,然后过滤空格和井号,覆盖到文件

cp /etc/glance/glance-api.conf{,.bak}

grep -Ev "^$|#" /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf

[root@controller ~]# cat /etc/glance/glance-api.conf

[DEFAULT]

[cinder]

[cors]

[database]

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

[file]

[glance.store.http.store]

[glance.store.rbd.store]

[glance.store.sheepdog.store]

[glance.store.swift.store]

[glance.store.vmware_datastore.store]

[glance_store]

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

[image_format]

[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 = glance

[oslo_concurrency]

[oslo_messaging_amqp]

[oslo_messaging_kafka]

[oslo_messaging_notifications]

[oslo_messaging_rabbit]

[oslo_middleware]

[oslo_policy]

[paste_deploy]

flavor = keystone

[profiler]

[store_type_location_strategy]

[task]

[taskflow_executor]

生成对应的表和数据

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

设置开机自启

systemctl enable openstack-glance-api.service --now

编辑配置文件加入第二行

这样才能呢生成glance的日志,并且日志放到/var/log/glance/glance-api.log

在重启一下,这样就有日志了

进行验证

上传镜像

glance image-create --name "cirros" \

 --file cirros-0.4.0-x86_64-disk.img \

 --disk-format qcow2 --container-format bare \

--visibility public

Glance到此搭建完成

Placement资源调度部署

Controller

创库,和用户且赋予用户从任何主机连接库都具有全部权限

CREATE DATABASE placement;

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

创建用户设置密码

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

将Placement 用户添加到具有 admin 角色的服务项目

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

在服务目录中创建 Placement API 条目

openstack service create --name placement \

--description "Placement API" placement

创建 Placement API 服务端点

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

安装软件包

yum install openstack-placement-api -y

编辑配置文件吗,先进行拷贝,然后过滤掉空格和井覆盖到源文件

cp /etc/placement/placement.conf{,.bak}

grep -Ev "^$|#" /etc/placement/placement.conf.bak > /etc/placement/placement.conf

[root@controller ~]# cat /etc/placement/placement.conf

[DEFAULT]

[api]

auth_strategy = keystone

[cors]

[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 = placement

[oslo_policy]

[placement]

[placement_database]

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

[profiler]

同步数据库 #这是警告没事

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

重启httpd

systemctl restart httpd

编辑配置文件,然后重启httpd

[root@controller ~]# tail -9 /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>

[root@controller ~]# systemctl restart httpd

查看日志文件  #如果没有直接和之前的步骤在定义一个即可

tail -f /var/log/placement/placement-api.log

验证一下

placement-status upgrade check

到此plancement配置成功

Nova管理计算实例部署

Controller

进入mysql创建对应的库

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

给库赋予全部权限

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova123';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova123';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova123';

创建nova的用户

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

将用户加入到service项目中赋予admin角色

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

创建服务实体

openstack service create --name nova \

  --description "OpenStack Compute" compute

创建三个api端点

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

安装对应的服务nova api服务 nova 数据库服务 nova 的vnc代理服务 提供了调度服务

yum install openstack-nova-api openstack-nova-conductor \

  openstack-nova-novncproxy openstack-nova-scheduler -y

然后编辑配置文件,先备份过滤出来需要的内容,在覆盖到源文件

cp /etc/nova/nova.conf{,.bak}

grep -Ev "^$|#" /etc/nova/nova.conf.bak > /etc/nova/nova.conf

加入如下模块,可参考本网址的安装组件和配置进行添加

OpenStack Docs:为 Red Hat Enterprise Linux 和 CentOS 安装和配置控制器节点

同步数据库nova-api

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

注册数据库cell0

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

创建单元格cell1

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

同步数据库nova

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

验证nova cell0和cell1是否正确注册

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

设置开启自启

systemctl enable \

    openstack-nova-api.service \

    openstack-nova-scheduler.service \

    openstack-nova-conductor.service \

    openstack-nova-novncproxy.service

编写重启脚本,上键获得上面开机自启命令,加入脚本enable改成restart即可,然后进行执行

这个nova组件没有自动生成日志,我们可以自定义一个,把日志位置写在配置文件里面

这一行加入配置文件

log_file = /var/log/nova/nova.log

在执行一下重启脚本,然后查看日志就有了

成功应该是会启动8774端口的

Controller部署完成了nova现在去到compute进行配置

Compute

安装服务

yum -y install openstack-nova-compute

编辑配置文件,先拷贝,然后grep过滤掉空格和井号,然后进行覆盖源文件

cp /etc/nova/nova.conf{,.bak}

grep -Ev "^$|#" /etc/nova/nova.conf.bak > /etc/nova/nova.conf

配置文件信息参考这个网页

OpenStack Docs:为 Red Hat Enterprise Linux 和 CentOS 安装和配置计算节点

编辑好配置文件,查看虚拟机是否支持虚拟化

egrep -c '(vmx|svm)' /proc/cpuinfo

设置开机自启,这一次后面不加--now先enable即可

先启动提供kvm设备组件

systemctl start libvirtd

接着启动compoute的nova服务

systemctl start openstack-nova-compute.service

可以看到这个服务还是没有自动生成日志

修改配置文件添加日志位置即可

重启服务查看日志有一个报错,提示我们没有这目录

systemctl restart openstack-nova-compute.service

进行创建解决,然后所有者修改为root,并且将其所属的组修改为nova。

mkdir /usr/lib/python3.9/site-packages/instances

chown -R root.nova /usr/lib/python3.9/site-packages/instances

先开个shell查看日志,然后重启此服务

systemctl restart openstack-nova-compute.service

日志会得到一大串这样的信息


此时日志还有个问题,日志显示未找到计算节点的主机

Controller

先查看有那些计算节点

openstack compute service list --service nova-compute

执行主机发现

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

Compute

在执行一下重启服务

systemctl restart openstack-nova-compute.service

然后刷新日志,就是正常的了

备注,如果你有多台计算记得,可以在控制节点加入此命令,让控制节点300秒发现一次主机,加入之后,记得重启controller的nova服务

Controller

进行验证,如果你不配置时间同步的话,这时候你进行验证状态就是down

openstack compute service list

到此双节点nova服务搭建完成

Neutron网络部署

Controller

创库,和用户且赋予用户从任何主机连接库都具有全部权限

CREATE DATABASE neutron;

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron123';

创建用户neutron

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

将用户加入到service项目中赋予admin角色

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

安装组件

yum install openstack-neutron openstack-neutron-ml2 \

   openstack-neutron-linuxbridge ebtables -y

编写配置文件,拷贝一个模版。过滤掉空格井号,覆盖给源文件

cp /etc/neutron/neutron.conf{,.bak}

grep -Ev "^$|#" /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf

继续编写配置文件,拷贝一个模版。过滤掉空格井号,覆盖给源文件

cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.bak}

grep -Ev "^$|#" /etc/neutron/plugins/ml2/ml2_conf.ini.bak > /etc/neutron/plugins/ml2/ml2_conf.ini

全部都需要添加

在继续编写配置文件,拷贝一个模版。过滤掉空格井号,覆盖给源文件

cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}

grep -Ev "^$|#" /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini

这写都是需要添加的

配置内核的开放,然后加载模块,然后执行生效命令

tail -2 /etc/sysctl.conf

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

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

继续编写配置文件,拷贝过滤覆盖

cp /etc/neutron/l3_agent.ini{,.bak}

grep -Ev "^$|#" /etc/neutron/l3_agent.ini.bak > /etc/neutron/l3_agent.ini

加入这一行

继续编写配置文件,拷贝过滤覆盖

cp /etc/neutron/dhcp_agent.ini{,.bak}

grep -Ev "^$|#" /etc/neutron/dhcp_agent.ini.bak > /etc/neutron/dhcp_agent.ini

加入这一行

继续编辑

cp /etc/neutron/metadata_agent.ini{,.bak}

grep -Ev "^$|#" /etc/neutron/metadata_agent.ini.bak > /etc/neutron/metadata_agent.ini

加入这两行 #我这个注释别加,可能会报错

继续编辑

vim /etc/nova/nova.conf

加入46行往下的内容,56行的名字要和上面你起的名字一致

做软链接

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

同步数据库,最后显示Ok

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

重启nova的api服务,因为上面编辑的nova的文件,需要进行重启

systemctl restart openstack-nova-api.service

设置开机自启

systemctl enable neutron-server.service \

  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

  neutron-metadata-agent.service neutron-l3-agent.service

然后上键复制上面的命令,进行编写重启脚本

然后查看全部日志,正常应该是info 和一两个warning

tail -f /var/log/neutron/* 

如果有报错,请仔细修改你的配置文件,然后bash neutron-restart.sh重启脚本

开始配置compute上的neutron网络服务

Compute

安装网络组件

yum install openstack-neutron-linuxbridge ebtables ipset -y

编辑配置文件,进行过滤

cp /etc/neutron/neutron.conf{,.bak}

grep -Ev "^$|#" /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf

加入这三个模块的内容

编辑配置文件,进行过滤

cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}

grep -Ev "^$|#" /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini

加入如下

配置内核,加入如下两行

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

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

然后加载模块,然后执行识别命令

modprobe br_netfilter

Sysctl -p

编辑配置文件

45行下面加入如下

然后重启服务

systemctl restart openstack-nova-compute.service

然后看下日志,最下面是这样的

启动网桥代理,设置开机自启

systemctl enable neutron-linuxbridge-agent.service --now

然后看下网桥的日志

Controller

进行验证

openstack network agent list

到此双节点配置完成neutron网络服务

备注:配置完成之后再centroller查看全部日志

tail -f /var/log/neutron/*

如看到如下报错,可能是你的wkmteacher这个名称两个配置文件写的不一样,也可能是延迟,如过后续显示info就是连接上了,

要写成一致

然后验证你的三层网络是否起来

:-)代表起来了

Dashbaord web界面部署

Controller

安装dashbaord服务

yum -y install openstack-dashboard -y

开始部署配置文件

vim /etc/openstack-dashboard/local_settings

将仪表板配置为在节点上使用 OpenStack 服务:controller

允许您的主机访问仪表板: 改成*  

配置会话存储服务:memcached 104行下加入一行

删除注释,原本是注释,删掉#变成这样的

然后给127改成主机名

启用对域的支持

加入121这一行在这个位置

配置API的版本接着在刚加入的121继续加入

配置创建的用户的默认域 Default    接着往下继续加入

配置默认角色创建的用户user    继续往下加入

配置时区  156行

重新启动 Web 服务器和会话存储服务:

systemctl restart httpd.service memcached.service

#如果这边启动失败,查看一下是否有python环境,就是下图第一个

如果没有的话就自己创建一个

ln -sv python3.9 python  #将python3.9命令链接到python命令,在命令行中输入python时,实际上会执行python3.9

然后再进行重启即可解决。

这时候80端口已经起来了,可以进行访问网页

前端页面都是在这里进行加载

vim /etc/httpd/conf.d/openstack-dashboard.conf

所以需要给前端的网页信息移到/usr/share/openstack-dashboard/

做一个软软件,给他软过去

已经做好了

ln -s /etc/openstack-dashboard /usr/share/openstack-dashboard/openstack_dashboard/conf

在配置文件在加入一行

 vim /etc/openstack-dashboard/local_settings

然后重启httpd服务

systemctl restart httpd.service

然后我们访问网页

http://1.1.2.110/dashboard/

域default

账户admin

密码000000

然后我们创建网络 flat是桥接的意思  #注意我这里是点击管理员然后点击的网络,这个是外网

#备注一下这个创建时候的ip和我搭建的ip的网段是不一样的,因为我这是第二次搭建补充笔记,直接按照自己网段创建即可

创建子网

创建dns和dhcp地址范围要和两个节点错开,然后点击创建

然后我们创建内网 #这个时候点击项目然后点击网络创建,不要在管理员里的网络创建

设置网络

设置子网

然后设置dns,点击创建即可

然后创建路由器,路由器是通过外网的,所以绑定的也是外网

点击创建成功的路由名称,然后点击上方的接口,可以看到是运行,代表三层网络正常

然后新加个接口设置了子网点击提交即可

这样外网内网就链接成功了

然后创建实例类型

然后点击实例,然后创建即可

Compute

创建时候可以看下这个日志,发现报错了,说是没有权限创建实例,

这个错误信息表明在尝试创建目录'/usr/lib/python3.9/site-packages/instances/locks'时发生了权限被拒绝的错误。这通常是由于当前用户没有足够的权限来创建这个目录所致。

给他权限

chown -R nova.nova /usr/lib/python3.9/site-packages/instances/

再次创建实例

然后再次看这个日志显示成功了

/var/log/nova/nova-compute.log

然后我们添加安全组,添加两个出TCP 和ICMP协议

我们的实例ip是ping不通的,因为这是个虚拟地址

下面这个界面就是6080端口VNC提供出来的

登录一下,分别是用户和密码

这个时候我们绑定浮动ip让他可以ping通

先点浮动,然后点击加号

然后点击分配ip

然后点击关联,可以看到我们的内网绑定的我们的外网

然后我们就得到了一个地址

可以ping通的

然后可以进行shell连接

看似ip是188.其实我们是通过1.1.1.40连接的

因为创建一个路由将内网外网绑定起来了

这个命令可以直接到root下,不加sudo会要输密码

dashboard搭建到此结束

开始搭建cinder块存储部署

先去网页给vm1云主机删除掉

Compute

Compute关机加入两块20G单个文件的scsi硬盘

这两块20G硬盘,一块给cinder块存储服务。一块给swift对象存储服务

controller

创建库和创建用户,且赋予用户对库的权限

CREATE DATABASE cinder;

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder123';

创建一个用户

如果看到第一行命令报错,是因为你需要导入用户认证环境了,然后再进行创建用户

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

将角色添加到用户

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

创建两个服务实体cinderv2 cinderv3

 openstack service create --name cinderv2 \

   --description "OpenStack Block Storage" volumev2

openstack service create --name cinderv3 \

   --description "OpenStack Block Storage" volumev3


创建六个API端点,端口是8776

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

安装cinder服务

yum install openstack-cinder -y

拷贝文件过滤空格井号然后覆盖进去

cp /etc/cinder/cinder.conf{,.bak}

grep -Ev "^$|#" /etc/cinder/cinder.conf.bak >/etc/cinder/cinder.conf

编辑配置文件

vim /etc/cinder/cinder.conf

这个ip上面解释了,还是controll的ip

同步数据库

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

编辑配置文件

vim /etc/nova/nova.conf

模块下加入15行

os_region_name = RegionOne

重启一下nova的api服务

systemctl restart openstack-nova-api.service

这就代表重启成功了

启动块存储服务设置开机自启

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

可以通过此命令列出openstack的服务端点

Openstack endpoint list

一定要有8776

Compute

安装服务

默认应该是安装的

yum install lvm2 device-mapper-persistent-data

创建一个pv

pvcreate /dev/sda

创建一个lvm卷组cinder-volumes

vgcreate cinder-volumes /dev/sda

编辑配置文件,进行拷贝和过滤掉井号和空格然后覆盖到源文件

cp /etc/lvm/lvm.conf{,.bak}

grep -Ev "^$|#" /etc/lvm/lvm.conf.bak > /etc/lvm/lvm.conf

添加这一行

filter = [ "a/nvme0n2/", "r/.*/"]

这一行的意思是,我们除了云主机谁也不能使用我的nvme0n2硬盘

安装服务#这个安装有点慢,但是有这个环境的可以安装

yum install openstack-cinder targetcli python-keystone -y

编辑配置文件进行拷贝和过滤然后覆盖

cp /etc/cinder/cinder.conf{,.bak}

grep -Ev "^$|#" /etc/cinder/cinder.conf.bak > /etc/cinder/cinder.conf

Vim /etc/cinder/cinder.conf

设置开机自启

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

可以看下日志这就显示成功了

tail -f /var/log/cinder/volume.log

查看已经设置好了

Controller

验证,这边验证是时候遇到了一个报错

openstack volume service list

我这边有一个是down

然后我发现我的时间同步开始有延迟了

排除controller是否没有同步到了阿里云

可以看到是同步的

然后排除compute是否同步到了controller

发现延迟已经很大了,已经不同步了

然后我重启了all node 的时间服务

systemctl restart chronyd

然后不停的刷新测试date,时间同步了

在查看comopute已经恢复了

然后再验证已经恢复了

得出openstack对时间同步要求很高

然后网页操作创建实例

先退出从新登录,刷新一下网页

选择lmage 和不,然后上传镜像

选择实例类型

选择网络

创建即可

然后绑定浮动ip,可以选择之前删除的实例ip ,就很神器

已经关联成功了

然后shell可以连接

ssh cirros@1.1.1.40

密码 gocubsgo

目前我们的硬盘只有VDA

创建一个卷

创建完成之后,这边会显示一个的

然后点击右侧管理连接,选择实例,给他连接上去

等待连接成功,这边实例就能查看到了

给他格式化然后挂载到opt下,发现是可以使用的

可以正常使用的

我们管理员这里是可以管理卷的

Cinder到此搭建完成

开始搭建swift部署 #这个配置不用看官网看笔记即可

#这个用处不大可以不进行部署
controller

编辑配置文件先拷贝一份

cp /etc/httpd/conf.d/wsgi-keystone.conf{,.bak}

vim /etc/httpd/conf.d/wsgi-keystone.conf 进去删除加入下面的

[root@controller ~]# cat /etc/httpd/conf.d/wsgi-keystone.conf

Listen 5000

Listen 35357

<VirtualHost *:5000>

    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

    WSGIProcessGroup keystone-public

    WSGIScriptAlias / /usr/bin/keystone-wsgi-public

    WSGIApplicationGroup %{GLOBAL}

    WSGIPassAuthorization On

    LimitRequestBody 114688

    <IfVersion >= 2.4>

      ErrorLogFormat "%{cu}t %M"

    </IfVersion>

    ErrorLog /var/log/httpd/keystone.log

    CustomLog /var/log/httpd/keystone_access.log combined

    <Directory /usr/bin>

        <IfVersion >= 2.4>

            Require all granted

        </IfVersion>

        <IfVersion < 2.4>

            Order allow,deny

            Allow from all

        </IfVersion>

    </Directory>

</VirtualHost>

Alias /identity /usr/bin/keystone-wsgi-public

<Location /identity>

    SetHandler wsgi-script

    Options +ExecCGI

    WSGIProcessGroup keystone-public

    WSGIApplicationGroup %{GLOBAL}

    WSGIPassAuthorization On

</Location>

<VirtualHost *:35357>

    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

    WSGIProcessGroup keystone-admin

    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin

    WSGIApplicationGroup %{GLOBAL}

    WSGIPassAuthorization On

    ErrorLogFormat "%{cu}t %M"

    ErrorLog /var/log/httpd/keystone-error.log

    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>

        Require all granted

    </Directory>

</VirtualHost>

重启服务

查看端口35357

安装服务

yum -y install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached -y

创建用户

openstack user create --domain default --password swift swift

将角色添加到用户

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

创建服务实体

openstack service create --name swift --description "OpenStack Object Storage" object-store

创建端点
openstack endpoint create --region RegioOne object-store public http://controller:8080/v1/AUTH_%\(project_id\)s

openstack endpoint create --region RegioOne object-store internal http://controller:8080/v1/AUTH_%\(project_id\)s

openstack endpoint create --region RegioOne object-store admin http://controller:8080/v1

编辑配置文件先拷贝一份

进去之后全部删除加入如下

[root@controller ~]# cat /etc/swift/proxy-server.conf

[DEFAULT]

bind_port = 8080

swift_dir = /etc/swift

user = swift

[pipeline:main]

pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server

[app:proxy-server]

use = egg:swift#proxy

account_autocreate = True

[filter:tempauth]

use = egg:swift#tempauth

user_admin_admin = admin .admin .reseller_admin

user_test_tester = testing .admin

user_test2_tester2 = testing2 .admin

user_test_tester3 = testing3

user_test5_tester5 = testing5 service

[filter:authtoken]

paste.filter_factory = keystonemiddleware.auth_token:filter_factory

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = Default

user_domain_name = Default

project_name = service

username = swift

password = swift

delay_auth_decision = True

[filter:keystoneauth]

use = egg:swift#keystoneauth

operator_roles = admin,user

[filter:healthcheck]

use = egg:swift#healthcheck

[filter:cache]

memcache_servers = controller:11211

use = egg:swift#memcache

[filter:ratelimit]

use = egg:swift#ratelimit

[filter:domain_remap]

use = egg:swift#domain_remap

[filter:catch_errors]

use = egg:swift#catch_errors

[filter:cname_lookup]

use = egg:swift#cname_lookup

[filter:staticweb]

use = egg:swift#staticweb

[filter:tempurl]

use = egg:swift#tempurl

[filter:formpost]

use = egg:swift#formpost

[filter:name_check]

use = egg:swift#name_check

[filter:list-endpoints]

use = egg:swift#list_endpoints

[filter:proxy-logging]

use = egg:swift#proxy_logging

[filter:bulk]

use = egg:swift#bulk

[filter:slo]

use = egg:swift#slo

[filter:dlo]

use = egg:swift#dlo

[filter:container-quotas]

use = egg:swift#container_quotas

[filter:account-quotas]

use = egg:swift#account_quotas

[filter:gatekeeper]

use = egg:swift#gatekeeper

[filter:container_sync]

use = egg:swift#container_sync

[filter:xprofile]

use = egg:swift#xprofile

[filter:versioned_writes]

use = egg:swift#versioned_writes

创建账户圈

cd /etc/swift/

swift-ring-builder account.builder create 18 1 1

swift-ring-builder account.builder add --region 1 --zone 1 --ip 1.1.1.20 --port 6002 --device nvme0n3 --weight 100  #填写计算节点的ip和计算节点的第三块硬盘

swift-ring-builder account.builder

swift-ring-builder account.builder rebalance

配置完成之后当前目录会出现相关的配置文件

接着还在swift目录下创建容器环

swift-ring-builder container.builder create 10 1 1

swift-ring-builder container.builder add --region 1 --zone 1 --ip 1.1.1.20 --port 6001 --device nvme0n3 --weight 100     #计算节点ip和计算节点第三块硬盘

swift-ring-builder container.builder

swift-ring-builder container.builder rebalance

还是在此目录创建对象环

swift-ring-builder object.builder create 10 1 1

swift-ring-builder object.builder add --region 1 --zone 1 --ip 1.1.1.20 --port 6000 --device nvme0n3 --weight 100  #计算节点ip和计算节点第三块硬盘

swift-ring-builder object.builder

swift-ring-builder object.builder rebalance

编辑配置文件

进去之后删除然后加入如下

[root@controller swift]# cat /etc/swift/swift.conf

[swift-hash]

swift_hash_path_suffix = changeme

swift_hash_path_prefix = changeme

[storage-policy:0]

name = Policy-0

default = yes

aliases = yellow, orange

[swift-constraints]

将文件所有组设置给root

然后启动服务设置开机自启

chown -R root:swift /etc/swift/

systemctl enable openstack-swift-proxy.service memcached.service --now


查看端口要有8080

Compute

安装服务

yum install xfsprogs rsync openstack-swift-account openstack-swift-container openstack-swift-object -y

格式化磁盘,创建目录

mkfs.xfs -i size=1024 -f /dev/nvme0n3

mkdir -p /swift/node/nvme0n3

添加永久挂载点,进行挂载

echo "/dev/nvme0n3 /swift/node/nvme0n3 xfs loop,noatime 0 2" >> /etc/fstab

mount /dev/nvme0n3 /swift/node/nvme0n3

已经挂载成功了

将控制节点的之前创建产生的文件传输到计算节点

scp controller:/etc/swift/*.ring.gz /etc/swift/

配置rsyncd启动文件

进去之后删除全部然后添加如下

[root@compute ~]# cat /etc/rsyncd.conf

pid file = /var/run/rsyncd.pid

log file = /var/log/rsyncd.log

uid = swift

gid = swift

address = 127.0.0.1

[account]

path            = /swift/node

read only       = false

write only      = no

list            = yes

incoming chmod  = 0644

outgoing chmod  = 0644

max connections = 25

lock file =     /var/lock/account.lock

[container]

path            = /swift/node

read only       = false

write only      = no

list            = yes

incoming chmod  = 0644

outgoing chmod  = 0644

max connections = 25

lock file =     /var/lock/container.lock

[object]

path            = /swift/node

read only       = false

write only      = no

list            = yes

incoming chmod  = 0644

outgoing chmod  = 0644

max connections = 25

lock file =     /var/lock/object.lock

[swift_server]

path            = /etc/swift

read only       = true

write only      = no

list            = yes

incoming chmod  = 0644

outgoing chmod  = 0644

max connections = 5

lock file =     /var/lock/swift_server.lock

设置开机自启,查看端口873

systemctl enable --now rsyncd.service

配置账户圈文件,进去删除,在添加如下

[root@compute ~]# cat /etc/swift/account-server.conf

[DEFAULT]

bind_port = 6002

user = swift

swift_dir = /etc/swift

devices = /swift/node

mount_check = false

[pipeline:main]

pipeline = healthcheck recon account-server

[app:account-server]

use = egg:swift#account

[filter:healthcheck]

use = egg:swift#healthcheck

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift

[account-replicator]

[account-auditor]

[account-reaper]

[filter:xprofile]

use = egg:swift#xprofile

配置容器环文件

[root@compute ~]# cat /etc/swift/container-server.conf

[DEFAULT]

bind_port = 6001

user = swift

swift_dir = /etc/swift

devices = /swift/node

mount_check = false

[pipeline:main]

pipeline = healthcheck recon container-server

[app:container-server]

use = egg:swift#container

[filter:healthcheck]

use = egg:swift#healthcheck

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift

[container-replicator]

[container-updater]

[container-auditor]

[container-sync]

[filter:xprofile]

use = egg:swift#xprofile

配置对象环文件

[root@compute ~]# cat /etc/swift/object-server.conf

[DEFAULT]

bind_port = 6000

user = swift

swift_dir = /etc/swift

devices = /swift/node

mount_check = false

[pipeline:main]

pipeline = healthcheck recon object-server

[app:object-server]

use = egg:swift#object

[filter:healthcheck]

use = egg:swift#healthcheck

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift

recon_lock_path = /var/lock

[object-replicator]

[object-reconstructor]

[object-updater]

[object-auditor]

[filter:xprofile]

use = egg:swift#xprofile

配置swift文件

[root@compute ~]# cat /etc/swift/swift.conf

[swift-hash]

swift_hash_path_suffix = changeme

swift_hash_path_prefix = changeme

[storage-policy:0]

name = Policy-0

default = yes

aliases = yellow, orange

[swift-constraints]

修改属性,并且创建目录

chown -R swift:swift /swift/node

mkdir -p /var/cache/swift

chown -R root:swift /var/cache/swift

chmod -R 775 /var/cache/swift

chown -R root:swift /etc/swift

启动服务

systemctl enable --now openstack-swift-account.service openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.service

systemctl enable --now openstack-swift-container.service openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service

systemctl enable --now openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service

正常无误的是有6000 6001 6002 端口的

此时在访问网页刷新就有了对象存储

点容器点击创建名字为wkm

然后点名称,进行创建目录

创建A点击A创建B点击B创建C

给容器设置公开访问,然后点击链接

然后会弹网页,给网页的前缀controller换成控制节点ip,如果做了物理机host解析就不用换ip了

创建容器成功,意味着我们的第三块硬盘计算节点可以成功的使用

到此swift搭建成功

Openstack补充

我们可以给vm1创建个快照,然后会出来个镜像

我们可以把这个快照进行导出

假设我这个vm1虚拟机我部署了chatgpt-on-wechat-GPT,我只需要给这个vm1拍个快照,然后导出,下次创建vm2云主机选择这个快照作为镜像来创建云主机就有vm1的环境了

可以给这个镜像在web页面删除,然后测试我们导出到虚拟机里面的这个镜像能不能使用

在上传到web界面

已经有了

然后创建vm1

这个时候可以看到我这个vm11的ip直接就是1.1.1.44,因为我创建的时候没有选择内网,直接选择的外网,这样就不用通过内网来绑定浮动ip

可以看到是可以连接shell的

现在我们的vm1就完全迁移给了vm22,因为是直接通过vm1的镜像安装的vm22

这个时候就能看出openstack的强大了,只要你的资源足够强大,实现虚拟机服务器自由

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为你解答这个问题!以下是搭建 OpenStack T本环境的详细脚本: 1. 首先,安装 CentOS 7 操作系统,并更新系统: ``` yum update -y ``` 2. 安装必要的软件包和依赖项: ``` yum install -y centos-release-openstack-train yum update -y yum install -y python-openstackclient openstack-selinux openstack-utils ``` 3. 配置 MariaDB 数据库: ``` yum install -y mariadb mariadb-server python2-PyMySQL systemctl enable mariadb.service systemctl start mariadb.service mysql_secure_installation ``` 4. 配置 RabbitMQ 消息队列: ``` yum install -y rabbitmq-server systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service rabbitmqctl add_user openstack RABBIT_PASS rabbitmqctl set_permissions openstack ".*" ".*" ".*" ``` 5. 配置 Keystone 身份认证服务: ``` mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS'; exit ``` ``` yum install -y openstack-keystone httpd mod_wsgi systemctl enable httpd.service systemctl start httpd.service ``` 6. 配置 Glance 镜像服务: ``` mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS'; exit ``` ``` openstack user create --domain default --password-prompt 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 ``` ``` yum install -y openstack-glance ``` 7. 配置 Nova 计算服务: ``` mysql -u root -p CREATE DATABASE nova_api; CREATE DATABASE nova; CREATE DATABASE nova_cell0; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; exit ``` ``` openstack user create --domain default --password-prompt nova 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/%\(tenant_id\)s openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s ``` ``` yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler yum install -y python-novaclient ``` 8. 配置 Neutron 网络服务: ``` mysql -u root -p CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS'; exit ``` ``` openstack user create --domain default --password-prompt neutron 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 ``` ``` yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables ``` 9. 配置 Horizon 仪表盘服务: ``` yum install -y openstack-dashboard ``` 以上就是 OpenStack T本环境搭建的详细脚本,希望能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值