小工具知识网

当前位置: 首页 > 行业知识 > 云计算基础架构平台搭建,云计算平台开发与运维,搭建openstack平台

行业知识

云计算基础架构平台搭建,云计算平台开发与运维,搭建openstack平台

2026-11-06 20:32:52 来源:互联网转载

基础环境配置

一、创建虚拟机

先创建两台虚���机内存放大一些,实际用的内存不会那么高

1.controller节点硬件配置

镜像我这里使用1804的   (注意:要添加一个仅主机模式的网络适配器)

2.编辑compute硬件

添加硬盘

三次下一步默认设置到这里

 (注意这里是两张网卡,一张NET,一张仅主机)

开机

二、基础配置

1.修改网路配置

controller跟compute节点

(根据自己ip a查看网卡名字进行修改)

vi /etc/sysconfig/network-scripts/ifcfg-ens33

在最后面添加以下信息,DNS1为网关ip(我这里controller节点的ip为192.168.200.10,compute节点为192.168.200.20)

IPADDR=192.168.200.10NETMASK=255.255.255.0GATEWAY=192.168.200.2DNS1=192.168.200.2

 ip改为固定的

 

 第二张网卡只需要将这里改为yes,也可以不改

 

重启网络

systemctl restart network

尝试ping外网

2.关闭防火墙

(controller节点加compute节点)

systemctl stop firewalldsystemctl disable firewalld

3.更改主机名

(controller节点加compute节点)

hostnamectl set-hostname controllerbash

4.映射

controller节点

vi /etc/hosts

在下面添加两个节点的ip跟名字,(ip根据自己的改,名字跟下面的一样)

5.进行免密操作

ssh-keygen

(一直回车)

ssh-copy-id compute

yes

密码(计算节点的开机密码)

scp /etc/hosts compute:/etc/hosts

6.修改seliunx

vi /etc/selinux/config

这个改成图片中的模式

7.yum源配置

(controller节点加compute节点)

mv /etc/yum.repos.d/* /media/
vi /etc/yum.repos.d/openstack.repo
[centos-base]name=centos-basebaseurl=https://mirrors.163.com/centos/$releasever/os/$basearchgpgcheck=0enabled=1[centos-extras]name=centos-extrasbaseurl=https://mirrors.163.com/centos/$releasever/extras/$basearchgpgcheck=0enabled=1[openstack]name=openstack rockybaseurl=https://mirrors.163.com/centos/$releasever/cloud/$basearch/openstack-rockygpgcheck=0enabled=1[virt]name=virtbaseurl=https://mirrors.163.com/centos/$releasever/virt/$basearch/kvm-common/gpgcheck=0enabled=1
yum repolist

结果为13404多个包

三、基础服务和软件安装

注意节点信息

1.时间服务

yum install -y chrony

controller节点

 (建议下载一个vim(这个可以更直观看文档里面的区别)效果与vi命令大同小异,但是更直观。后面的vi命令本教程统一用vim)

下载vim命令(可以选择不下)

yum install -y vim
vim /etc/chrony.conf
systemctl restart chronydsystemctl enable chronyd

测试

compute节点

在最后面添加

server 192.168.200.10 iburst

重启服务

systemctl restart chronydsystemctl enable chronyd
chronyc sources

2.安装基础软件

(controller节点加compute节点)

yum install -y python-openstackclientyum install -y openstack-selinux

3.安装数据库

只需要在controller节点安装

yum install -y mariadb mariadb-server python2-PyMYSQL
vim /etc/my.cnf.d/openstack.cnf

在里面添加(ip改为自己controller节点的ip)

[mysqld]bind-address = 192.168.200.10default-storage-engine = innodbinnodb_file_per_table = onmax_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8

(开机自启服务)

systemctl enable mariadb.service

(启动服务)

systemctl start mariadb.service

进行安全设置

mysql_secure_installation

Enter current password for root (enter for none):回车

Set root password? [Y/n] y

New password:输入密码(一般为000000)

Re-enter new password:再次输入密码

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] n

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

4.消息服务

只在controller节点安装rabbitmq

yum install -y rabbitmq-server

启动服务

systemctl enable rabbitmq-server.servicesystemctl start rabbitmq-server.service

增加用户和授权

rabbitmqctl add_user openstack 000000

成功是显示以下,如果报错,先检查另一台虚拟机是否改名成controller,

 如果报错;两个节点都进行以下操作

hostnamectl set-hostname controllerbash

操作完上面这步后,两个节点都打

reboot

这是让两个节点重启,让环境生效,然后重新连接第三方输入密码后重新打

rabbitmqctl add_user openstack 000000
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

成功如下

5.缓冲服务memcache

只在controller节点安装

yum -y install memcached python-memcached

修改配置

vim /etc/sysconfig/memcached

在1后面添加,controller

启动服务

systemctl enable memcached.servicesystemctl start memcached.service

到此完成基础服务和软件安装,建议两台虚拟机保存快照,自己备注好

四、安装和配置Keystone

该任务在controller节点完成,但请确保compute节点为开机状态

(1)数据库的创建

mysql -u root -p000000

命令如下

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

打完成功后如上图所示

exit   退出

(2)安装keystone

yum install -y openstack-keystone httpd mod_wsgi

(3)修改配置

vim /etc/keystone/keystone.conf

(建议下载一个vim(这个可以更直观看文档里面的区别)效果与vi命令大同小异,但是更直观。后面的vi命令本教程统一用vim)

下载vim命令(可以选择不下)

yum install -y vim

在对应下面添加,得找到对应的  []  下添加

例如:

[database]

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

[token]

provider = fernet

查找技巧:在命令模式下(也就是保存退出时用到的Esc这个按键),:/   后面添加要查找的关键字符,如   :/database     后按回车进行查找第一个,如果要继续往下查找,按n键往下查找,按Shift+n键为往上查找

(不要将[database]中的[]符号加入到查找里面)

[database]

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

 [token]

provider = fernet

(4)初始化数据库

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

(5)初始化keystone

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

(6)修改httpd的配置

vim  /etc/httpd/conf/httpd.conf

可以通过上面介绍的查找关键字,找关键字ServerName,将前面注释符#删掉

改成

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

(7)启动httpd服务

systemctl enable httpd.servicesystemctl start httpd.service

(8)设置环境变量

vi ~/.bashrc

在最下面添加

export OS_USERNAME=adminexport OS_PASSWORD=000000export OS_PROJECT_NAME=adminexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_DOMAIN_NAME=Defaultexport OS_AUTH_URL=http://controller:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

保存退出

source ~/.bashrc

这个命令为更新上面的配置,不用重新登录,省下来的三分钟你能干嘛,懂的都懂

(9)创建一个项目

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

成功创建后显示以下

要是你还不确信,继续执行

openstack project list

不就跟书本上一样了嘛,舒服没,犟驴 o . O

2.设置openstack命令的自动补全功能

.

(1)安装bash-completion软件

yum -y install bash-completion

(2)修改~/.bashrc文件,在最后加上

vi ~/.bashrc
source 

    ErrorLogFormat "%M"

 

  ErrorLog /var/log/nova/nova-placement-api.log

  #SSLEngine On

  #SSLCertificateFile ...

  #SSLCertificateKeyFile ...

Alias /nova-placement-api /usr/bin/nova-placement-api

  SetHandler wsgi-script

  Options +ExecCGI

  WSGIProcessGroup nova-placement-api

  WSGIApplicationGroup %{GLOBAL}

  WSGIPassAuthorization On

 

 (添加下面的内容)

   = 2.4>      Require all granted            Order allow,deny      Allow from all   

重启httpd

systemctl restart httpd

(6)初始化数据库

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
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

完成后该警告,这些重复索引是被废弃的,并在将来的版本中将被禁止使用。这些警告信息可以被忽略

(7)使能和启动服务

systemctl enable openstack-nova-api.service \openstack-nova-consoleauth.service \openstack-nova-scheduler.service \openstack-nova-conductor.service \openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service \openstack-nova-consoleauth.service \openstack-nova-scheduler.service \openstack-nova-conductor.service \openstack-nova-novncproxy.service

2.compute节点

(1)安装软件

yum -y install openstack-nova-compute

(2)修改配置

修改/etc/nova/nova.conf

vim /etc/nova/nova.conf

[DEFAULT](这个ip改为compute节点ip)

enabled_apis = osapi_compute,metadatatransport_url = rabbit://openstack:000000@controllermy_ip = 192.168.200.20use_neutron = truefirewall_driver = nova.virt.firewall.NoopFirewallDriver

[api]

auth_strategy = keystone

[keystone_authtoken]

auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = novapassword = 000000

[vnc]

enabled = trueserver_listen = 0.0.0.0server_proxyclient_address = $my_ipnovncproxy_base_url = http://controller:6080/vnc_auto.html

[glance]

api_servers = http://controller:9292

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

[placement]

region_name = RegionOneproject_domain_name = Defaultproject_name = serviceauth_type = passworduser_domain_name = Defaultauth_url = http://controller:5000/v3username = placementpassword = 000000

[libvirt]

virt_type = qemu

                                                     保存退出

(3)使能和启动服务

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

3.将compute节点加入集群

(1)在controller节点执行

列出计算节点:

openstack compute service list --service nova-compute

将计算节点加入cell:

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

查询cell中的计算节点:

nova-manage cell_v2 list_hosts

七、安装和配置Neutron

1.controller节点

(1)创建数据库

mysql -uroot -p

 输入密码

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

(2)创建用户、角色和服务

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

(3)创建Endpoint

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

(4)安装软件

yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtablesyum -y install libibverbs

(5)修改配置

修改1  neutron.conf

修改/etc/neutron/neutron.conf

vim /etc/neutron/neutron.conf

(建议下载一个vim(这个可以更直观看文档里面的区别)效果与vi命令大同小异,但是更直观。后面的vi命令本教程统一用vim)

下载vim命令(可以选择不下)

yum install -y vim

在对应下面添加,得找到对应的  []  下添加

例如:

[database]

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

[token]

provider = fernet

查找技巧:在命令模式下(也就是保存退出时用到的Esc这个按键),:/   后面添加要查找的关键字符,如   :/database     后按回车进行查找第一个,如果要继续往下查找,按n键往下查找,按Shift+n键为往上查找

(不要将[database]中的[]符号加入到查找里面)

[database]

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

[DEFAULT]

core_plugin = ml2service_plugins = routerallow_overlapping_ips = truetransport_url = rabbit://openstack:000000@controllerauth_strategy = keystonenotify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = true

[keystone_authtoken]

www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = 000000

[nova]

auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = 000000

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

                                                   保存退出

修改2  ml2_conf.ini

修改/etc/neutron/plugins/ml2/ml2_conf.ini

vim /etc/neutron/plugins/ml2/ml2_conf.ini 

[ml2]

type_drivers = flat,vlan,vxlan,localtenant_network_types = vxlan,localmechanism_drivers = linuxbridge,l2populationextension_drivers = port_security

[ml2_type_flat]

flat_networks = provider

[ml2_type_vlan]

network_vlan_ranges = provider:100:200

[ml2_type_vxlan]

vni_ranges = 1:1000

[securitygroup]

enable_ipset = true

保存退出

修改3 linuxbridge_agent.ini

修改/etc/neutron/plugins/ml2/linuxbridge_agent.ini

vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge](这里的ens34为自己第二张网卡名)

physical_interface_mappings = provider:ens34

[vxlan](下面的ip改为自己controller控制节点的ip)

enable_vxlan = truelocal_ip = 192.168.200.10l2_population = true

[securitygroup]

enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

                                       保存退出

加载模块(这个是在外面打的)

lsmod|grep br_netfilter
modprobe br_netfilter

修改4     内核参数

vim /etc/sysctl.conf

最后面添加

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

                                     保存退出

修改完后执行

sysctl -p

修改5      /etc/neutron/l3_agent.ini

vim /etc/neutron/l3_agent.ini

[DEFAULT]

interface_driver = linuxbridge

                                     保存退出

修改6        /etc/neutron/dhcp_agent.ini ,设置dhcp服务

vim /etc/neutron/dhcp_agent.ini 

[DEFAULT]

interface_driver = linuxbridgedhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = true

                                      保存退出

修改7         /etc/neutron/metadata_agent.ini,设置metadata服务

vim /etc/neutron/metadata_agent.ini

[DEFAULT]

nova_metadata_host = controllermetadata_proxy_shared_secret = 000000

修改8         控制节点的/etc/nova/nova.conf,让Nova使用Neutron

vim /etc/nova/nova.conf

[neutron]

url = http://controller:9696auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = 000000service_metadata_proxy = truemetadata_proxy_shared_secret = 000000

                                             保存退出

建立符号链接

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

(6)初始化数据库

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

(7)使能和启动服务

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 enable neutron-l3-agent.service
systemctl start neutron-l3-agent.service

2.compute节点

(1)安装软件

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

(2)修改配置

修改/etc/neutron/neutron.conf

vim /etc/neutron/neutron.conf

[DEFAULT]

transport_url = rabbit://openstack:000000@controllerauth_strategy = keystone

[keystone_authtoken]

www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = 000000

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

修改/etc/neutron/plugins/ml2/linuxbridge_agent.ini

vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge](这里的ens34改为自己第二张网卡(仅主机模式的网卡)名称)

physical_interface_mappings = provider:ens34

[vxlan]  (这里ip改为计算节点ip)

enable_vxlan = truelocal_ip = 192.168.200.20l2_population = true

[securitygroup]

enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

加载模块

lsmod|grep br_netfiltermodprobe br_netfilter

修改内核参数

vim /etc/sysctl.conf

添加

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

修改完后执行:

sysctl -p

修改/etc/nova/nova.conf,让Nova使用Neutron

vim /etc/nova/nova.conf

[neutron]

url = http://controller:9696auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = 000000

(3)使能和启动服务

systemctl restart openstack-nova-compute.servicesystemctl enable neutron-linuxbridge-agent.servicesystemctl start neutron-linuxbridge-agent.service

到此完成neutron搭建,内存充足建议保存快照

八、安装和配置Dashboard

1.controller节点安装和配置

只在controller节点安装

(1)安装软件

yum -y install openstack-dashboard

(2)修改配置

修改/etc/openstack-dashboard/local_settings

vim /etc/openstack-dashboard/local_settings

查找关键字   OPENSTACK_HOST =

将这三行前添加注释符#,

然后添加

OPENSTACK_HOST = "controller"ALLOWED_HOSTS = ['*', 'two.example.com']SESSION_ENGINE = 'django.contrib.sessions.backends.cache'CACHES = {    'default': {         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',         'LOCATION': 'controller:11211',    }}OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOSTOPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = TrueOPENSTACK_API_VERSIONS = {    "identity": 3,    "image": 2,    "volume": 2,}OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"OPENSTACK_KEYSTONE_DEFAULT_ROLE = "admin"TIME_ZONE = "Asia/Shanghai" 

                                     保存退出

修改/etc/httpd/conf.d/openstack-dashboard.conf 

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

在最下面添加

WSGIApplicationGroup %{GLOBAL}

                               保存退出

(3)重启httpd和memcached服务

systemctl restart httpd.service memcached.service

(4)网页搜索192.168.200.10/dashboard  (也就是controller节点ip/dashboard)

剩下的看书本图片即可

Default

admin

000000

当创建的云主机操控台无法访问到controller节点的ip时

可以点右边字体跳转更详细教程openstack控制台显示找不到controller节点ip

九、命令行模式创建云主机

(如果云平台已经创建有网络这些东西,先删除同名的)

1.查看有无名为cirros的镜像

openstack image list

如果没有cirros镜像,则创建cirros镜像:(cirros-0.3.4-x86_64-disk.img这个镜像放在mnt目录)

glance image-create --disk-format qcow2 --container-format bare --name cirros 

上一篇:忍者云服务器节点怎么设置?

下一篇:织梦手机站生成器教程,打造专属站点,轻松上手!