Centos7.9 安装Openstack Train版 详细手把手每一步搭建

2023-10-27

1.升级内核

先准备两台机器,我这里准备的是2台,32G,16核,500G硬盘的服务器,一台作为master,一台作为计算节点机器。

master 机器有两个网卡,一个是ip 10.10.162.38 另一个网卡和10.10.162.38是同一个物理网络,也就是同一个网段中,但是暂时不分配IP,留给将来的openstarck桥接用

node 机器有两个网卡,一个是ip 10.10.162.39 另一个网卡和10.10.162.39是同一个物理网络,也就是同一个网段中,但是暂时不分配IP,留给将来的openstarck桥接用

默认的Centos7.9 的内核是3.10,需要升级到5.19,要不然不能安装内核模块
在这里插入图片描述

wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-5.19.9-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-devel-5.19.9-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-headers-5.19.9-1.el7.elrepo.x86_64.rpm

yum -y install perl.x86_64
rpm -ivh kernel-ml-5.19.9-1.el7.elrepo.x86_64.rpm 
rpm -ivh kernel-ml-devel-5.19.9-1.el7.elrepo.x86_64.rpm 
rpm -ivh kernel-ml-headers-5.19.9-1.el7.elrepo.x86_64.rpm 

#查看全部内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
#查看默认启动的内核
tail /boot/grub2/grubenv
#设置对应的数字启动内核,0代表5.19版本
grub2-set-default 0
#重新加载启动文件
grub2-mkconfig -o /boot/grub2/grub.cfg  

安装其他工具

yum install bridge-utils  -y

修改内核参数,vi /etc/sysctl.conf 加入如下配置

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

设置开机自启模块

echo br_netfilter > /etc/modules-load.d/br_netfilter.conf 

重启系统,确认内核模块生效
reboot 重启系统
uname -r 确认新的内核版本
lsmod |grep br_netfilter
sysctl -p 查看配置是否生效

2.安装master主节点

1.1安装必要软件

关闭防火墙,selinux

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0 
systemctl disable NetworkManager.service

配置时区同步

yum install -y chrony
timedatectl set-timezone Asia/Shanghai

vi /etc/chrony.conf 注释一些,加入最后一行

#注释这些
#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 time1.aliyun.com iburst
systemctl enable chronyd
systemctl start chronyd
#查看是否开始校对
chronyc sources -V   

编辑host文件 vi /etc/hosts

10.10.162.38 master.openstack
10.10.162.39 node1.openstack
hostnamectl set-hostname master.openstack

master安装openstack源

yum install -y centos-release-openstack-train.noarch
yum install python-openstackclient openstack-selinux wget -y

安装mariadb或者mysql,rabbitmq,memcached

yum install mariadb mariadb-server python2-PyMySQL -y 

配置mysql
vi /etc/my.cnf.d/openstack.cnf
加入如下选项

[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
systemctl start mariadb
systemctl enable mariadb

配置rabbitmq

yum install rabbitmq-server -y
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

增加mq用户

rabbitmqctl add_user openstack sunny
rabbitmqctl set_user_tags openstack administrator
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

开启网页插件

rabbitmq-plugins enable rabbitmq_management

安装memcached

yum install memcached python-memcached -y

修改memcache配置 ,修改缓存大小、监听地址
vi /etc/sysconfig/memcached

CACHESIZE="1024"
OPTIONS="-l 0.0.0.0"
systemctl enable memcached.service
systemctl start memcached.service

ss -tnl 确认端口都打开,服务正常运行
25672 rabbitmq端口
3306 mysql端口
11211 memcached端口
15672 rabbitmq网页端口
4369 rabbitmq端口
5672 rabbitmq端口
在这里插入图片描述

1.2 master安装keystone组件

数据库配置,直接输入mysql命令

mysql

在这里插入图片描述
创建数据库和设置账户

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'tomson1234';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'tomson1234';
exit

安装keystone

yum install openstack-keystone httpd mod_wsgi -y

vi /etc/keystone/keystone.conf 配置keystone和mysql连接

#keystone:tomson1234是数据库账户和密码
#master.openstack是master的主机名,/keystone这里的是数据库名字
connection = mysql+pymysql://keystone:tomson1234@master.openstack/keystone

[token]
#在这里添加
provider = fernet
#keystone 启动配置
su -s /bin/sh -c "keystone-manage db_sync"

生成2个账户信息目录

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

注册身份

#--bootstrap-password admin 这个admin是账户admin的密码
keystone-manage bootstrap --bootstrap-password admin \
  --bootstrap-admin-url http://master.openstack:5000/v3/ \
  --bootstrap-internal-url http://master.openstack:5000/v3/ \
  --bootstrap-public-url http://master.openstack:5000/v3/ \
  --bootstrap-region-id RegionOne

配置httpd
vi /etc/httpd/conf/httpd.conf

ServerName master.openstack:80
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ 
systemctl enable httpd.service
systemctl start httpd.service

创建admin账户变量
vi /etc/profile.d/openstack-admin.sh

#!/bin/bash
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://master.openstack:5000/v3
export OS_IDENTITY_API_VERSION=3
source /etc/profile.d/openstack-admin.sh
#查看账户是否生效
openstack user list  

在这里插入图片描述

1.3 在master创建账户,域和项目

创建域tomson

openstack domain create --description "An tomson Domain" tomson

在这里插入图片描述
创建项目service

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

在这里插入图片描述
创建项目tomsonproject

openstack project create --domain default   --description "tomson Project" tomsonproject

在这里插入图片描述
创建用户myuser,需要输入密码tomson1234

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

在这里插入图片描述
创建角色规则myrole

openstack role create myrole

在这里插入图片描述

将项目,用户和规则绑定

openstack role add --project tomsonproject --user myuser myrole

取消刚才定义的环境变量

unset OS_AUTH_URL OS_PASSWORD   

输入admin账户密码admin,测试账户认证功能

openstack --os-auth-url http://master.openstack:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name admin --os-username admin token issue

在这里插入图片描述
输入myuser账户密码tomson1234,测试账户认证功能

openstack --os-auth-url http://master.openstack:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name tomsonproject --os-username myuser token issue

在这里插入图片描述
修改admin变量,下面都是用admin变量进行创建组件
vi /etc/profile.d/openstack-admin.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=admin
export OS_AUTH_URL=http://master.openstack:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
source /etc/profile.d/openstack-admin.sh
#测试token
openstack token issue 
#查看keystone数据库是否生成了数据
mysql -u keystone -p'tomson1234' -e 'use keystone;show tables;'

在这里插入图片描述

在这里插入图片描述

1.4 master安装glance组件

配置mysql

CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'tomson1234';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'tomson1234';
exit

在这里插入图片描述
创建glance账户,密码配tomson1234,创建身份认证

source /etc/profile.d/openstack-admin.sh
openstack user create --domain default --password-prompt glance 

在这里插入图片描述
授权

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

创建image service

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

在这里插入图片描述
在3个网络上开放端口,分别是public ,internal ,admin

openstack endpoint create --region RegionOne \
  image public http://master.openstack:9292
  
openstack endpoint create --region RegionOne \
  image internal http://master.openstack:9292
  
openstack endpoint create --region RegionOne \
  image admin http://master.openstack:9292

在这里插入图片描述
安装配置glance

yum install openstack-glance -y

配置glance
vi /etc/glance/glance-api.conf

[database]
connection = mysql+pymysql://glance:tomson1234@master.openstack/glance

[keystone_authtoken]
www_authenticate_uri  = http://master.openstack:5000
auth_url = http://master.openstack:5000
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = tomson1234

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

启动配置

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

在这里插入图片描述

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

下载一个镜像,导入glance

cd /var/lib/glance/images/
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

glance image-create --name "cirros" \
  --file cirros-0.4.0-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --visibility public

glance image-list

查看数据库是否生成文件
mysql -u keystone -p'tomson1234' -e 'use keystone;show tables;'

在这里插入图片描述

1.5 maser安装placement

mysql配置

CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'tomson1234';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'tomson1234';
exit

创建账户placement,密码配tomson1234,创建身份认证

source /etc/profile.d/openstack-admin.sh
openstack user create --domain default --password-prompt placement

在这里插入图片描述
授权

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

创建placement service

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

在这里插入图片描述
创建3个网络端口

openstack endpoint create --region RegionOne \
  placement public http://master.openstack:8778

 openstack endpoint create --region RegionOne \
  placement internal http://master.openstack:8778

openstack endpoint create --region RegionOne \
  placement admin http://master.openstack:8778

安装配置placement

yum install openstack-placement-api -y 

修改配置
vi /etc/placement/placement.conf

[placement_database]
#设置数据库信息
connection = mysql+pymysql://placement:tomson1234@master.openstack/placement

[api]  
#设置API为keystone
auth_strategy = keystone

[keystone_authtoken]
auth_url = http://master.openstack:5000/v3
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = tomson1234

启动配置

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

在这里插入图片描述

会出现下面这个警告,忽略即可
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1280, u"Name ‘alembic_version_pkc’ ignored for PRIMARY key.")
result = self._query(query)

修改httpd配置
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>

重启apache

systemctl restart httpd

查看数据库是否生成文件

mysql -u placement -p'tomson1234' -e 'use placement;show tables;'

在这里插入图片描述

1.6 master安装nova组件

mysql配置,创建数据库

CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

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

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

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'tomson1234';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'tomson1234';
exit

创建账户nova,密码配tomson1234,创建身份认证

source /etc/profile.d/openstack-admin.sh
openstack user create --domain default --password-prompt nova

在这里插入图片描述

授权

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

创建compute service

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

在这里插入图片描述
创建3个服务端口

openstack endpoint create --region RegionOne \
  compute public http://master.openstack:8774/v2.1

openstack endpoint create --region RegionOne \
  compute internal http://master.openstack:8774/v2.1
  
openstack endpoint create --region RegionOne \
  compute admin http://master.openstack:8774/v2.1

在这里插入图片描述
安装配置nova

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

修改配置
vi /etc/nova/nova.conf

[DEFAULT]
enabled_apis = osapi_compute,metadata
my_ip = 10.10.162.38
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
transport_url = rabbit://openstack:sunny@master.openstack:5672/

[api_database]
#配置nova_api数据库的连接
connection = mysql+pymysql://nova:tomson1234@master.openstack/nova_api

[database]
#配置连接nova数据库信息
connection = mysql+pymysql://nova:tomson1234@master.openstack/nova

[api]
#设置认证方式
auth_strategy = keystone

[keystone_authtoken]
#设置认证信息,账户和密码为上面注册的信息
www_authenticate_uri = http://master.openstack:5000/
auth_url = http://master.openstack:5000/
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = tomson1234


[vnc]
#设置监听地址为本机IP
enabled = true
erver_listen = 10.10.162.38
server_proxyclient_address = 10.10.162.38

[glance]
#设置glance信息
api_servers = http://master.openstack:9292

[oslo_concurrency]
#锁路径配置
lock_path = /var/lib/nova/tmp

#开启自动扫描添加node
[scheduler]
discover_hosts_in_cells_interval = 300

[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://master.openstack:5000/v3
username = placement
password = tomson1234

确认配置

grep "^[a-Z]" /etc/nova/nova.conf  确认配置

启动配置,出现警告,不用管

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

查看配置是否启动成功,这里要记住如果你写错了rabbitmq的密码后,将来nova-conductor只从mysql中读取rabbitmq的密码,而不会读取/etc/nova/nova.conf的rabbitmq的密码,一定要切记。

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
systemctl start \
    openstack-nova-api.service \
    openstack-nova-scheduler.service \
    openstack-nova-conductor.service \
    openstack-nova-novncproxy.service

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

在这里插入图片描述

1.8 master配置neutron组件

mysql配置

CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'tomson1234';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'tomson1234';
exit

创建账户neutron,密码配tomson1234,创建身份认证

source /etc/profile.d/openstack-admin.sh
openstack user create --domain default --password-prompt neutron

在这里插入图片描述
授权

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

新建network service

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

在这里插入图片描述
注册3个端口

openstack endpoint create --region RegionOne \
  network public http://master.openstack:9696

openstack endpoint create --region RegionOne \
  network internal http://master.openstack:9696

openstack endpoint create --region RegionOne \
  network admin http://master.openstack:9696

在这里插入图片描述
neutron有2种网络模式,一般使用桥接模式,这里我们配置桥接模式
安装配置neutron

yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables libibverbs  -y
yum groupinstall "Development Tools" -y
yum -y install openssl-devel wget kernel-devel
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch -y

修改配置
vi /etc/neutron/neutron.conf

[DEFAULT]
设置组件模式
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:sunny@master.openstack
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[database]
#设置neutron数据库信息
connection = mysql+pymysql://neutron:tomson1234@master.openstack/neutron

[keystone_authtoken]
#设置上面注册的neutron账户信息
www_authenticate_uri = http://master.openstack:5000
auth_url = http://master.openstack:5000
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = tomson1234

[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

#下面全部都要添加到文件尾部
[nova]
#设置nova的连接信息
auth_url = http://master.openstack:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = tomson1234

配置ml2插件的ml2_conf.ini文件
插件配置文件网址:ml2_conf.ini
https://docs.openstack.org/ocata/config-reference/networking/samples/ml2_conf.ini.html
用浏览器打开网址,将内容全部复制替换掉老的文件

vi /etc/neutron/plugins/ml2/ml2_conf.ini 删除老的文件,复制上面网址的全部内容,然后填上如下选项

[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security

[ml2_type_flat]
#定义网络名字external,可以自定义,但是名字需要和下面linuxbridge_agent.ini文件保持一致
flat_networks = external

[securitygroup]
#安全组配置
enable_ipset = true

确认配置

grep "^#" -v /etc/neutron/plugins/ml2/ml2_conf.ini

配置ml2插件的linuxbridge_agent.ini文件
插件文档:linuxbridge_agent.ini
https://docs.openstack.org/ocata/config-reference/networking/samples/linuxbridge_agent.ini

vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
用浏览器打开网址,将内容全部复制替换掉老的文件,并加上如下的内容

[linux_bridge]
#需要和上面的ml2_conf.ini文件的flat_networks = external名字一样
#ens3是本机网卡名字,使用能连接外网的网卡,一个master或node要有多个网卡,这个只是其中的一个。
physical_interface_mappings = external:ens3

[vxlan]
enable_vxlan = false

[securitygroup]
#安全组配置
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置dhcp_agent.ini文件,这个是使虚拟机自动获取到IP
vi /etc/neutron/dhcp_agent.ini

[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

配置metadata_agent.ini文件,设置nova连接认证密码
vi /etc/neutron/metadata_agent.ini

[DEFAULT]
nova_metadata_host = master.openstack
#tomson1234这个密码要和下面metadata_proxy_shared_secret一致
metadata_proxy_shared_secret = tomson1234

配置nova使用neutron组件
vi /etc/nova/nova.conf

[neutron]
auth_url = http://master.openstack:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = tomson1234
service_metadata_proxy = true
#这个需要和上面metadata_agent.ini配的保持一致
metadata_proxy_shared_secret = tomson1234

启动配置

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

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

systemctl restart openstack-nova-api.service

启动服务

systemctl enable neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service

systemctl start neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service
 
systemctl status neutron-server.service   neutron-linuxbridge-agent.service neutron-dhcp-agent.service   neutron-metadata-agent.service

查看数据生成

mysql -u neutron -p'tomson1234' -e 'use neutron; show tables;'

1.10 master分配网络

确认4个组件都是up

openstack network agent list   

在这里插入图片描述

external 这里的名字必须和上面文件配置的网络一致

openstack network create  --share --external \
  --provider-physical-network external \
  --provider-network-type flat external-net

在这里插入图片描述
创建子网
master主机ip是10.10.162.38,node1的主机ip是10.10.162.40
设置能连接外网的网段,要用真机IP也就是物理ip,网关
start=10.10.162.100,end=10.10.162.150
–gateway 10.10.162.1
–subnet-range 10.10.162.0/24

openstack subnet create --network external-net \
  --allocation-pool start=10.10.162.100,end=10.10.162.150 \
  --dns-nameserver 114.114.114.114 --gateway 10.10.162.1 \
  --subnet-range 10.10.162.0/24 external-sub

在这里插入图片描述
brctl show 查看网卡绑定
ip a 查看真机的IP绑定到新增的网卡了

1.12 master创建虚拟机,查看是否能运行

node启动服务后,在master查看node的nova是否注册到了集群
master查看node1已经注册成功

source /etc/profile.d/openstack-admin.sh
openstack compute service list --service nova-compute

在这里插入图片描述

–id 0 指定编号
–vcpus 1 指定CPU个数
–ram 64 指定使用内存,单位是M
–disk 1 指定使用硬盘大小,单位是G
m1.nano 硬件类型名称

openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

在这里插入图片描述
创建秘钥,这个是用来master远程虚拟机使用的

# 回车就行
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
openstack keypair list

在这里插入图片描述
创建安全组规则

openstack security group rule create --proto icmp default
openstack security group rule create --proto tcp --dst-port 22 default
#查看安全组列表
openstack security group list  

在这里插入图片描述
创建虚拟机

# 查看镜像名字
openstack image list

#查看网络ID
openstack network list

#net-id,是上面查看到的网络id
openstack server create --flavor m1.nano --image cirros \
  --nic net-id=67a5e03a-4528-435b-b7c2-1a77c55fc2a1 --security-group default \
  --key-name mykey xuniji-vm1

–flavor m1.nano 指定使用的硬件类型名
–image cirros 指定镜像名字
–nic net-id=3c75db46-e55f-49dd-81c4-8ed1a2a55016 指定使用的网络
–security-group default 指定使用的安全组
–key-name mykey xuniji-vm1 指定虚拟机名字
在这里插入图片描述

openstack server list
#查看网页登录虚拟机方式
openstack console url show xuniji-vm1

在这里插入图片描述
可以通过master ip访问vnc
http://10.10.162.38:6080/vnc_auto.html?path=%3Ftoken%3D460500cf-ed23-4325-93dd-c901a20880ff

在这里插入图片描述
根据提示输入账户cirros,密码gocubsgo,用sudo提权
ip a 可以到分配了真机的IP段
ping 114.114.114.114 可以通外网
在这里插入图片描述

1.13 master安装网页组件dashboard

yum install openstack-dashboard -y

vi /etc/openstack-dashboard/local_settings 修改配置

#设置master的IP
OPENSTACK_HOST = "10.10.162.38"

# balancer service, security groups, quotas, VPN service.
OPENSTACK_NEUTRON_NETWORK = {
    'enable_auto_allocated_network': True,
    'enable_distributed_router': True,
    'enable_fip_topology_check': True,
    'enable_ha_router': True,
    'enable_ipv6': True,
    # TODO(amotoki): Drop OPENSTACK_NEUTRON_NETWORK completely from here.
    # enable_quotas has the different default value here.
    'enable_quotas': True,
    'enable_rbac_policy': True,
    'enable_router': True,

    'default_dns_nameservers': [],
    'supported_provider_types': ['*'],
    'segmentation_id_range': {},
    'extra_provider_types': {},
    'supported_vnic_types': ['*'],
    'physical_networks': [],

}


#在这里添加访问的路径
# https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
WEBROOT = '/dashboard'

#修改允许访问的方式
ALLOWED_HOSTS = ['10.10.162.38', 'localhost']

#这里添加内容
#SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

#CACHES = {
#    'default': {
#        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
#        'LOCATION': '127.0.0.1:11211',
#    },
#}
#在这里添加下面
CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'master.openstack:11211',
    }
}

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 3,
}

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

#修改时区为上海
# The timezone of the server. This should correspond with the timezone
# of your entire OpenStack installation, and hopefully be in UTC.
#TIME_ZONE = "UTC"
TIME_ZONE = "Asia/Shanghai"

vi /etc/httpd/conf.d/openstack-dashboard.conf 头部添加

WSGIApplicationGroup %{GLOBAL}

启动服务

systemctl restart httpd.service memcached.service

访问网页版
http://10.10.162.38/dashboard 这里的/dashboard就是上面的WEBROOT路径

域输入default,账户admin,密码admin

在这里插入图片描述
在这里插入图片描述

查看账户密码去这个脚本查看
cat /etc/profile.d/openstack-admin.sh
export OS_USERNAME=admin
export OS_PASSWORD=admin

2.安装Node计算节点

1.7 在node节点安装nova组件

关闭防火墙,selinux

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0 
systemctl disable NetworkManager.service

配置时区同步

yum install -y chrony
timedatectl set-timezone Asia/Shanghai

vi /etc/chrony.conf 注释一些,加入最后一行

#注释这些
#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 time1.aliyun.com iburst
systemctl enable chronyd
systemctl start chronyd
#查看是否开始校对
chronyc sources -V   

编辑host文件 vi /etc/hosts

10.10.162.38 master.openstack
10.10.162.39 node1.openstack
hostnamectl set-hostname node1.openstack

node1安装openstack源

yum install -y centos-release-openstack-train.noarch
yum install python-openstackclient openstack-selinux  wget -y 安装依赖包

安装配置nova

yum install openstack-nova-compute -y

配置nova
vi /etc/nova/nova.conf

[DEFAULT]
#设置组件和连接master的rabbitmq的信息
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:sunny@master.openstack
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
vif_plugging_timeout = 10
vif_plugging_is_fatal = False

[api]
#设置认证方式
auth_strategy = keystone

[keystone_authtoken]
#设置master的nova的账户信息
www_authenticate_uri = http://master.openstack:5000/
auth_url = http://master.openstack:5000/
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = tomson1234


[vnc]
#10.10.162.39为node的IP,虚拟机的出口就是整个IP
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = 10.10.162.39
novncproxy_base_url = http://master.openstack:6080/vnc_auto.html


[glance]
#设置连接master的glance组件
api_servers = http://master.openstack:9292

[oslo_concurrency]
lock_path = /var/lib/nova/tmp

[placement]
#设置连接master的placement组件信息
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://master.openstack:5000/v3
username = placement
password = tomson1234

启动服务

systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
systemctl status libvirtd.service openstack-nova-compute.service

在这里插入图片描述

1.9 (node)在node安装neutron组件

yum install openstack-neutron-linuxbridge ebtables ipset -y

vi /etc/neutron/neutron.conf 修改配置

[DEFAULT]
#设置rabbitmq的账户和密码
transport_url = rabbit://openstack:sunny@master.openstack
auth_strategy = keystone

[keystone_authtoken]
#连接master的neutron组件,账户信息都是master的neutron信息
www_authenticate_uri = http://master.openstack:5000
auth_url = http://master.openstack:5000
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = tomson1234

[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

配置ml2插件的linuxbridge_agent.ini文件
插件文档:linuxbridge_agent.ini
https://docs.openstack.org/ocata/config-reference/networking/samples/linuxbridge_agent.ini

vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
用浏览器打开网址,将内容全部复制替换掉老的文件,并加上如下的内容

[linux_bridge]
physical_interface_mappings = external:eth0

[vxlan]
enable_vxlan = false

[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置nova
vi /etc/nova/nova.conf

[neutron]
auth_url = http://master.openstack:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = tomson1234

[libvirt]
virt_type=qemu

重启nova服务

systemctl restart openstack-nova-compute.service

启动neutron组件
启动服务

systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
systemctl status neutron-linuxbridge-agent.service

在这里插入图片描述

1.11(node)在node修改系统硬件配置,要不然不能创建虚拟机

查看CPU的选项

virsh capabilities |grep pc

修改nova
vi /etc/nova/nova.conf

[libvirt]
virt_type=qemu
cpu_mode=host-model
hw_machine_type=x86_64=pc-i440fx-rhel7.6.0

重启服务

systemctl restart libvirtd.service openstack-nova-compute.service
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Centos7.9 安装Openstack Train版 详细手把手每一步搭建 的相关文章

  • 使用inotify监控文件

    我正在使用 inotify 来监视本地文件 例如使用 root temp inotify add watch fd root temp mask 删除该文件后 程序将被阻止read fd buf bufSize 功能 即使我创建一个新的 r
  • 如何告诉 CMake 将构建文件放在哪里?

    我想告诉 CMake 将文件和文件夹输出到不同的文件夹而不是当前文件夹 我在下面讨论的是 CMake 生成的文件 文件 CMakeCache txt 目录 CMakeFiles 文件 生成文件 目录 bin 文件 cmake install
  • 在 Bash 中使用“$RANDOM”生成随机字符串

    我正在尝试使用 Bash 变量 RANDOM创建一个由包含整数和字母数字的变量中的 8 个字符组成的随机字符串 例如 var abcd1234ABCD 我怎样才能做到这一点 使用参数扩展 chars 是可能的字符数 是模运算符 chars
  • 如何在 .zip 文件中使用 grep

    有 3 个文件 a csv b csv c csv 压缩为 abh zip 现在可以在 abh zip 上执行 grep 命令 是否有任何通配符 仅对里面的 c csv 文件运行 grep压缩 如果你有zipgrep 据我所知 它是随zip
  • /proc/kmsg 和 dmsg 有什么区别?

    我们通常这样做cat proc kmsg or dmesg从用户空间查看内核日志 我明白了dmesg是一个循环缓冲区 它从kmsg 但是kmsg也不是循环缓冲区 它们之间有什么区别和联系呢 宽松地说 dmesg 是一个转储 proc kms
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 将 file.lib 构建为可在 linux 上使用的 file.a

    我正在尝试将 api 从 Windows 移植到 Linux 到目前为止 我已经完成了 file cpp 和 file h 的工作 但我仍然有一个指定给 Windows 的库 lib 这是 api 工作所必需的 我怎样才能从这个库构建一个可
  • Powershell从Linux客户端连接到Windows远程

    我正在尝试从我的 Linux 工作站远程连接到 Windows 计算机 我在 Arch Linux 工作站上安装了 powershell 目前正在尝试连接到主机 在主机上 Enable PSRemoting 然后允许所有主机Set Item
  • 如何在 Linux/Unix 上根据文件类型添加文件扩展名?

    这是一个关于 Unix shell 脚本 任何 shell 的问题 但任何其他 标准 脚本语言解决方案也将受到赞赏 我有一个充满文件的目录 其中文件名是这样的哈希值 fd73d0cf8ee68073dce270cf7e770b97 fec8
  • Laravel:调用未定义的函数 Symfony\Component\Console\mb_convert_variables()?

    我正在运行普通 Amazon EC2 服务器 我自己安装了 PHP 5 5 21 我的 Web 应用程序是基于 Laravel 构建的 几个星期以来 一切都进展顺利 然而 现在 当运行 Laravel 命令来更新数据库架构时 php 工匠迁
  • 从 S3 存储桶下载 300 万个对象的最快方法

    我尝试过使用 Python boto 多处理 S3cmd 和 J3tset 但都在努力解决 有什么建议 也许是您一直在使用的现成脚本或我不知道的其他方式 EDIT eventlet boto 是一个有价值的解决方案 如下所述 在这里找到了一
  • 真实设备中的 Android strace

    我有以下情况 我想监控Android手机上的系统调用 所以 我编写了一个脚本来做到这一点 使用 Android 模拟器可以完美地工作 将应用程序的痕迹写入我的 Ubuntu 上的特定文件中 问题是当我连接一个真实的手机来分析它时 它在结果文
  • 如何在 Linux 中创建可通过 Screen 应用程序连接的 pty

    我想创建 C C 应用程序 它在 dev xxx 中创建新的 虚拟 设备 并且能够与 屏幕 应用程序连接 例如 循环运行的程序会创建新的 dev ttyABC 然后我将使用 屏幕 dev ttyABC 当我向那里发送一些字符时 应用程序将其
  • 在 Linux 上,当打开套接字时,Java 会发出反向 DNS 查找。为什么,我该如何阻止它?

    我们在 Linux 上遇到了一种非常奇怪的行为 Java DNS 查找 更新 Mac OS X 上也会发生 我错了 我们将Google公共DNS服务器8 8 8 8设置为JVM DNS服务器 然而 系统 etc resolv conf 服务
  • 如何在shell脚本中读取单个字符

    我想要类似的选项getche 如何从命令行读取单个字符输入 Using read命令我们可以做到吗 在巴什中 read可以做到 read n1 ans
  • 从多个进程附加到单个文件的“线程安全”?

    假设我有 X 个进程打开文件 Y 进行追加 每个进程一次只写入一行 带有 n 真正的日志条目 文件 Y 中的每一行是否保证不会错误地交错 更新 本地附加文件系统 问题取决于正在进行什么类型的写入 如果您使用带缓冲的标准 I O 这通常是大多
  • 是什么决定了 getdents 返回目录条目的顺序?

    背景是我有一个现有的应用程序 其中列出了目录条目 strace 显示它只是调用 getdents 并按返回的顺序列出它们 我希望它们以与不带参数调用 ls 相同的顺序显示 是否可以通过某种方式更新目录数据来实现此目的 FS 是 ext4 如
  • Tensorflow推荐的系统规格?

    我开始在我的 RHEL 6 5 机器上安装 Tensorflow 但事实证明 Tensorflow 需要 glibc gt 2 17 而 rhel 6 5 上默认的 glibc 是 2 12 我想知道是否有人可以帮助我了解张量流的最低 推荐
  • 在内核中创建一个简单的只写过程条目

    include
  • __NR_gettid 和 SYS_gettid 之间的区别

    我只是在寻找在 Linux 中获取唯一线程 ID 的方法 我发现的方法是将两个参数中的任何一个作为参数进行系统调用 NR gettid OR SYS gettid 有人能解释一下它们之间有何不同吗 Nothing in

随机推荐

  • 前端vue经典面试题78道(重点详细简洁)

    目录 1 自我介绍 2 vue面试题 1 v show和v if区别的区别 2 为何v for要用key 3 描述vue组件声明周期mm 单组件声明周期图 父子组件生命周期图 4 vue组件如何通信 5 描述组件渲染和更新的过程 1 vue
  • Go语言学习16-特殊流程控制

    特殊流程控制 引言 特殊流程控制 1 defer语句 2 异常处理 2 1 error 2 2 panic 2 3 recover 结语 引言 上一篇博文介绍了 Go 语言的基本流程控制 本篇我们介绍 Go 语言的特殊流程控制 特殊流程控制
  • 【Java面试题汇总】多线程、JUC、锁篇(2023版)

    导航 黑马Java笔记 踩坑汇总 Java基础 JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud 黑马旅游 谷粒商城 学成在线 设计模式 牛客面试题 目录 0 请你说说线程和进程的区别 1 请你说说多线程 2
  • VS2010中打开VS2012的项目

    VS2012中对C 的支持度非常好 不管是编写方便程度 不需要插件就能高亮代码及代码自动提示功能 还对MFC的一些功能优化很多 我们可以修改两个工程文件来把VS2012的工程文件一直到VS2010中去 首先当然是修改解决方案文件 sln文件
  • 普通台式机上Tesla M40显卡paddleGPU深度学习柯南的变身器上机体验

    Tesla M40显卡上机体验 废话 正文 改电源线 放入显卡准备散热工具 尝试开机 开装驱动 cuda行列 paddlepaddlegpu版安装 上大佬的柯南变声器代码 本地运行 实测效果 提醒 购机需谨慎 免责声明 总结 改善 引导 废
  • design contains shelved or modified (but not repoured) polygons. the result....继续铺铜还是报警,解决方案如下:

    当AD21中出现 design contains shelved or modified but not repoured polygons the result of drc is not correct recommended to r
  • AAV相关研究最新进展(2023年5月)

    截至2022年11月22日 美国FDA宣布批准uniQure与CSL Behring合作研发的AAV基因疗法Hemgenix AMT 061 CSL222 上市 这是FDA批准的首款治疗血友病B成人患者的基因疗法 同时也是迄今为止第六款上市
  • mybatisplus连接sqlserver配置

    目录 前言 一 所需依赖 二 application yml 三 分页插件 前言 本文主要讲解连接sqlserver的配置 一 所需依赖
  • (一)Unity3D离散仿真引擎基础

    1 解释游戏对象 GameObjects 和资源 Assets 的区别与联系 游戏对象 游戏对象直接出现在游戏场景 scence 中 是资源整合的具体表现 游戏对象一般有玩家 敌人 游戏场景 摄像机等虚拟父类 这些父类没有实例化 而他们的子
  • 多个echarts 设置的graphic相互影响

    使用echarts构建了多个图形 并且能在同一个div中相互切换 其中一个饼状图设置了graphic 其他的没有设置 结果发现设置的echarts的graphic在其他图形上页显示了 如图所示 实际上柱状图是没有设置type为text的gr
  • 浅析MySQL中concat以及group_concat的使用

    吃水不忘挖井人系列 原帖地址 浅析MySQL中concat以及group concat的使用 说明 本文中使用的例子均在下面的数据库表tt2下执行 一 concat 函数 1 功能 将多个字符串连接成一个字符串 2 语法 concat st
  • 论文答辩的二十个问题

    20 defense questions The most common question you may be asked is what you learned from the study you have done You have
  • Java工程师面试必备900+ 道 Java面试题及答案整理(建议收藏)

    很多人都说八股文没用 这里聊一下我对八股文的一些看法吧 一个知识点 你能把使用以及原理说出来 我称之为八股 但是你能把底层关联以及业务使用 优化历程也能搞清楚 我称之为能力 这两点无疑是现在面试都会考察的 按照国内的 IT 求职环境来看 互
  • 11个学习CSS实用工具和资源

    最近业内充斥着关于Sass的文章 教程 甚至在SitePoint这里 我们已经发布比以往更多内容的Sass工具 但是 我们并没有忘记我们的根 CSS 对于那些仍然在学习CSS 或者想要去一点点深入到具体的CSS主题的朋友 我想我会将最近几个
  • 闲鱼项目靠谱吗?小白入坑全指南!

    越来越多的店开始利用互联网来进行自主创业 今天很荣幸的可以为大家分享我自己的创业故事 我是一名汽车维修工人 已经干了有两年多 也晋升到了中工 资薪福利什么的都比较满意 但因为家境不算富裕 加上爸妈身体并不是很好 所以我不得不把自己的全部工资
  • 《Ansible Playbook扩展:任务间流程控制之任务暂停》

    一 wait for模块 wait for是用来在规定时间内检测 状态是否为所期望的状态 才会执行后续的操作 常见使用场景 1 等待直到监听的端口 up 起来 2 等待文件存在或不存在时 再继续执行 3 等待匹配字符串出现在文件中后 再继续
  • I - Tree Gym - 104385I(基础操作性质)

    这题呢 就是知道异或的性质就可以了 一 相同为0 不同为1 即 1 1 0 0 0 0 1 0 1 二 1 交换律 A B B A 2 结合律 A B C A B C 3 自反性 A B B A 由结合律可推 A B B A B B A 0
  • Opencv3.3版本以上使用CNN模型实现年龄和性别检测

    环境 1 安装opencv3 3以上 因为3 3以上才有dnn模块 目前opencv已经更新到opencv4 0 0 alpha 下面网站对更新日志一目了然 https github com opencv opencv wiki Chang
  • vue3.0 + Ts v-model在自定义组件上的使用教程

    前言 之前在vue2 0版本介绍v model在组件上的使用教程时详细介绍了vue3 0 v model相比于2 0的变化 本篇文章主要介绍一下vue3 0的使用教程 如何使用 第一步 index vue作为父组件 这里采用了vant框架
  • Centos7.9 安装Openstack Train版 详细手把手每一步搭建

    1 升级内核 先准备两台机器 我这里准备的是2台 32G 16核 500G硬盘的服务器 一台作为master 一台作为计算节点机器 master 机器有两个网卡 一个是ip 10 10 162 38 另一个网卡和10 10 162 38是同