千家信息网

OpenStack 搭建(一)

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,OpenStack介绍openstack是一个云平台管理项目,我们可以使用openstack来管理我们的资源池,在这个资源池中包含了很多的子项目。openstack是有多个不同的模块组成,不同的功能有
千家信息网最后更新 2025年01月23日OpenStack 搭建(一)


OpenStack介绍

openstack是一个云平台管理项目,我们可以使用openstack来管理我们的资源池,在这个资源池中包含了很多的子项目。openstack是有多个不同的模块组成,不同的功能有相对应得不同模块负责。openstack三大核心分别是 计算、网络、存储。通过调用不同模块的API来对外提供交互。

openstack 的版本发布很快,从最初的A版到现在的N版,官方一般会每隔六个月发布一个新的版本。

openstack每个服务都有对应的项目名称,不同的项目就相当于一个提供单独服务的模块,具体的对应关系如下:

  • Horizon (Dashboard): Openstack的web管理服务。

  • Nova (Compute): 通虚拟化技术,提供的计算资源池。

  • Neutron (Networking): 虚拟机的网络资源管理。

存储服务(Storage):

  • Swift (Object Storage): 对象存储,适合于 "一次写入,多次读取"。

  • Cinder (Block Storage): 块存储,提供存储资源池。

共享服务(Share Service):

  • Keystone (Identify service):认证管理。

  • Glance (Image service): 提供虚拟镜像的注册和存储管理。

  • Ceilometer (Telemetry): 提供监控和数据采集、计量服务。

高层服务 (Higher-level service):

  • Heat (Orchestration): 自动化部署的组件。

  • Trove(Database Service): 提供数据库应用服务。


基础服务配置安装

准备工作:

两台CentOS7的机器,分别命名为node1和node2,如果没有内部DNS需要绑定hosts.

CS7修改主机名示例:

# hostnamectl set-hostname node1# hostnamectl status# cat /etc/hostname node1


安装yum源:

rpm -ivh  http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

安装openstack仓库:

yum install -y centos-release-openstack-mitaka

安装管理包和客户端:


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

控制节点上安装以下服务

yum install -y mariadb mariadb-server python2-PyMySQL yum install -y rabbitmq-serveryum install -y openstack-keystone httpd mod_wsgi memcached python-memcachedyum install -y openstack-glanceyum install -y openstack-nova-api openstack-nova-cert \  openstack-nova-conductor openstack-nova-console \  openstack-nova-novncproxy openstack-nova-scheduleryum install -y openstack-neutron openstack-neutron-ml2 \openstack-neutron-linuxbridge ebtables


计算节点安装nova和neutron:


yum install -y openstack-nova-compute sysfsutilsyum install -y openstack-neutron openstack-neutron-linuxbridge ebtables

除了Horizon,openstack的其他组件都需要连接数据库。

除了Horizon和keystone,其他组件都需要连接RabbitMQ(消息队列,通信枢纽).


OpenStack数据库配置

创建/etc/my.cnf.d/openstack.cnf,并添加如下配置:

[mysqld]bind-address = 172.16.10.50default-storage-engine = innodbinnodb_file_per_table  #独享表空间max_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8

启动数据库:

# systemctl enable mariadb.service# systemctl start mariadb.service

为了保证数据库服务的安全性,运行``mysql_secure_installation``脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。

# mysql_secure_installation

创建库,并授权:

> create database keystone;> grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone';> grant all on keystone.* to 'keystone'@'%' identified by 'keystone';> create database glance;> grant all on glance.* to 'glance'@'localhost' identified by 'glance';> grant all on glance.* to 'glance'@'%' identified by 'glance';> create database nova;> grant all on nova.* to 'nova'@'localhost' identified by 'nova';> grant all on nova.* to 'nova'@'%' identified by 'nova';> create database nova_api;> grant all on nova_api.* to 'nova'@'localhost' identified by 'nova';> grant all on nova_api.* to 'nova'@'%' identified by 'nova';> create database neutron;> grant all on neutron.* to 'neutron'@'localhost' identified by 'neutron';> grant all on neutron.* to 'neutron'@'%' identified by 'neutron';
MariaDB [(none)]> show databases;+--------------------+| Database           |+--------------------+| glance             || information_schema || keystone           || mysql              || neutron            || nova               || nova_api           || performance_schema |+--------------------+8 rows in set (0.00 sec)


控制节点安装RabbitMQ,并授权用户:

 yum install -y rabbitmq-server systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service rabbitmqctl add_user openstack openstack rabbitmqctl set_permissions openstack ".*" ".*" ".*"

打开监控插件:

rabbitmq-plugins enable rabbitmq_management

此时可以查看RabbitMQ的服务端口是否开启:

# netstat -lntup|grep 15672tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      30174/beam

可以直接访问web界面进行查看:http://localhost_ip:15672/

RabbitMQ的服务是5672端口:

# netstat -lntup|grep 5672tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      30174/beam          tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      30174/beam          tcp6       0      0 :::5672                 :::*                    LISTEN      30174/beam



所有主机同步时间

yum install ntpdate -yntpdate  time1.aliyun.comtimedatectl set-timezone Asia/Shanghai

在生产环境中,一定要保证服务器时间一致,否则会出现创建不了虚拟机的情况,在同步过程中也会出现各种问题。


OpenStack认证管理-Keystone


Keystone主要提供用户认证服务目录的功能。openstack的服务授权都需要在keystone上完成,keystone通过给授权的用户提供一个具有时间有效期的token,在用户token过期之后需要重新授权。服务目录则包含了所有服务项和与之相关的API端点。

用户认证:User, Project,Token,Role.

这里的Role就类似一个具有相同权限的用户组,Keystone通过这些机制来进行认证授权操作。

服务目录:service,endpoint.

service 服务,如 Nova, Glance,Swift. 一个服务可以确认当前用户是否具有访问资源的权限。

endpoint其实是一个url,每个url都对应一个服务的实例的访问地址,并且具有public、private和admin这三种权限。public url可以被全局访问,private url只能被局域网访问,admin url被从常规的访问中分离。


Keystone的部署


Keystone使用memcatch来管理认证的token,之所以选择使用memcache而不是使用mysql的原因是存放在memcache中的token可以设置过期时间,到期之后会自动清理,防止在mysql中因为长期使用而出现表过大难以维护的问题。


生成一个token随机值

# openssl rand -hex 1048d263aed5f11b0bc02f


修改keystone的配置文件

在/etc/keystone/keystone.conf文件中配置以下各项


在[DEFAULT]部分,定义初始管理令牌的值

使用前面步骤生成的随机数替换``ADMIN_TOKEN`` 值。

# grep "admin_token"  /etc/keystone/keystone.confadmin_token = 48d263aed5f11b0bc02f


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

connection = mysql+pymysql://keystone:keystone@172.16.10.50/keystone

在``[token]``部分,配置Fernet UUID令牌的提供者,并修改token的存储方式为memcache。

provider = fernetdriver = memcache

在[memcache]部分,修改提供memcache服务的主机ip:

servers = 172.16.10.50:11211

修改完成后,keystone的配置就完成了。

[root@node1 ~]# grep '^[a-z]' /etc/keystone/keystone.confadmin_token = 48d263aed5f11b0bc02fconnection = mysql+pymysql://keystone:keystone@172.16.10.50/keystoneservers = 172.16.10.50:11211provider = fernetdriver = memcache

初始化身份认证服务的数据库,进行数据库同步:

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

验证是否同步成功:

# mysql -h 172.16.10.50 -ukeystone -pkeystone -e "use keystone; show tables;"

初始化Fernet keys,此命令执行后会在/etc/keystone下创建一个fernet-keys目录:

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

启动memcached:

systemctl enable memcachedsystemctl start memcached


配置Apache HTTP服务器

编辑``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 选项为控制节点:

ServerName 172.16.10.50:80

用下面的内容创建文件 /etc/httpd/conf.d/wsgi-keystone.conf

Listen 5000Listen 35357    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    ErrorLogFormat "%{cu}t %M"    ErrorLog /var/log/httpd/keystone-error.log    CustomLog /var/log/httpd/keystone-access.log combined            Require all granted        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            Require all granted    

启动Apache :

# systemctl enable httpd.service# systemctl start httpd.service

查看对应的5000端口和35357端口是否启用。

同时查看/var/log/keystone/keystone.log 是否有报错信息,如果有报错信息需要开启keystone的debug模式进行排错:

 vim /etc/keystone/keystone.conf #debug = false  #将此项改为true,再查看日志。


设置认证


配置认证令牌,直接在命令行执行:

export OS_TOKEN=48d263aed5f11b0bc02f

配置端点URL:

export OS_URL=http://172.16.10.50:35357/v3

配置认证 API 版本:

export OS_IDENTITY_API_VERSION=3


创建域、项目、用户和角色


创建域``default``:

# openstack domain create --description "Default Domain" default+-------------+----------------------------------+| Field       | Value                            |+-------------+----------------------------------+| description | Default Domain                   || enabled     | True                             || id          | 5ab6cfb424ee4c99b0fea0cbec19e3b3 || name        | default                          |+-------------+----------------------------------+

在环境中,为进行管理操作,创建管理的项目、用户和角色:

创建 admin 项目:

openstack project create --domain default \  --description "Admin Project" admin

创建 admin 用户,并设置密码:

openstack user create --domain default \--password-prompt admin

创建 admin 角色:

openstack role create admin

添加``admin`` 角色到 admin 项目和用户上:

openstack role add --project admin --user admin admin

上面命令的含义为:将admin用户添加到admin的项目,并授权为admin角色


创建一个demo的项目

创建``demo`` 项目:(当为这个项目创建额外用户时,不要重复这一步。)

 openstack project create --domain default \ --description "Demo Project" demo

创建``demo`` 用户并设置密码:

openstack user create --domain default \--password-prompt demo

创建 user 角色:

openstack role create user

添加 user``角色到 ``demo 项目和用户角色:

openstack role add --project demo --user demo user


创建service项目

使用一个你添加到你的环境中每个服务包含独有用户的service 项目。

创建``service``项目:

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

创建glance用户:

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

添加glance 用户到 service 项目和admin角色:

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

创建nova用户:

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

添加nova用户到service项目和admin角色:

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

创建neutron用户:

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

添加neutron用户到service项目和admin角色:

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


服务注册

openstack service create   --name keystone --description "OpenStack Identity" identity

创建public的endpoint,并指定url, 注意IP和端口:

openstack endpoint create --region RegionOne   identity public http://172.16.10.50:5000/v3

创建internal类型的endpoint:

openstack endpoint create --region RegionOne   identity internal http://172.16.10.50:5000/v3

创建admin类型的endpoint,指定admin的管理端口:

openstack endpoint create --region RegionOne   identity admin http://172.16.10.50:35357/v3

提示:由于内部是相互对应的,如果某一条创建错误,需要将对应的三条全部删除,重新创建。

删除方式:(service、user、project等都可以用这种方式删除)

openstack endpoint list   #查看对应的记录ID号openstack endpoint delete ab66752a92334e31a08aa65d6fb5fdfc #删除ID

这些记录实质上都在mysql的keystone.endpoint表中,也可以直接修改表。


验证操作

在安装其它服务前,要先对之前的操作进行验证。

先重置``OS_TOKEN``和``OS_URL`` 环境变量:

unset OS_TOKEN OS_URL

使用 admin 用户,请求认证令牌进行测试:

openstack --os-auth-url http://172.16.10.50:35357/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name admin --os-username admin token issue

使用demo项目的demo用户,请求认证令牌测试:

openstack --os-auth-url http://172.16.10.50:35357/v3 \ --os-project-domain-name default --os-user-domain-name default \  --os-project-name demo --os-username demo token issue

如果出现 (HTTP 401)则说明是密码输入错误。


创建环境变量脚本

在上面的测试中,使用了指定参数的方式来进行连接的验证,但是输入内容比较长,在实际的生产操作中我们可以定义一个环境变量的脚本,来省去指定参数的操作。


创建 admin 和 ``demo``项目和用户创建客户端环境变量脚本。接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证。

编辑文件 admin-openstack.sh 并添加如下内容(注意指定密码和URL):

export OS_PROJECT_DOMAIN_NAME=defaultexport OS_USER_DOMAIN_NAME=defaultexport OS_PROJECT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=adminexport OS_AUTH_URL=http://172.16.10.50:35357/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

同理,添加demo的环境配置文件demo-openstack.sh:

export OS_PROJECT_DOMAIN_NAME=defaultexport OS_USER_DOMAIN_NAME=defaultexport OS_PROJECT_NAME=demoexport OS_USERNAME=demoexport OS_PASSWORD=demoexport OS_AUTH_URL=http://172.16.10.50:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

对脚本添加执行权限后,每次执行openstack相关的命令一定要先source执行此脚本,否则会不成功。

对环境变量脚本进行验证:

 source  admin-openstack.sh

尝试直接获取token,看是否成功

openstack token issue


Openstack镜像管理-Glance


Glance由Glance-api和Glance-Registry以及p_w_picpath Storage三个组件组成。

Glance-api: 接受云系统镜像的创建、删除和读取请求。通过接收REST API的请求,调用其他模块来完成镜像的查找,获取、上传、删除等操作。默认的监听端口为9292.

Glance-Registry:云镜像的注册服务。与mysql进行数据交互,用于存储和获取镜像的元数据。Glance数据库中有两张表,一张是p_w_picpath表,另一张是p_w_picpath property表。p_w_picpath表保存了镜像格式、大小等信息,p_w_picpath property表则主要保存镜像的定制化信息。glance-registry监听的端口为9191.

Image storage: 是一个存储的接口层,严格来说它并不是属于glance,只是给glance提供调用的一个接口。通过这个接口,glance可以获取镜像。p_w_picpath storage支持的存储有Amazon的S3、Openstack本身的Swift,还有如 ceph,sheepdog,GlusterFS等分布式存储,p_w_picpath storage是镜像保存和获取的接口,由于仅仅是一个接口层,具体的实现需要外部存储的支持。


Glance的部署

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/glance-install.html#prerequisites

安装glance服务并配置数据库

前面已经对数据库进行了相关操作,这里需要编辑配置文件/etc/glance/glance-api.conf 并完成如下动作:

在 [database] 部分,配置数据库访问:(第二个glance为密码)

connection = mysql+pymysql://glance:glance@172.16.10.50/glance

在/etc/glance/glance-registry.conf 的配置文件中[database] 也配置上此参数

connection = mysql+pymysql://glance:glance@172.16.10.50/glance

同步数据库,此处会有一个警告:

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

验证数据库是否同步成功:

# mysql -h  172.16.10.50 -uglance -pglance -e "use glance;show tables;"


设置keystone

在/etc/glance/glance-api.conf中设置keystone的配置,分别在下面的两个模块中

添加如下配置信息:

[keystone_authtoken]...auth_uri = http://172.16.10.50:5000auth_url = http://172.16.10.50:35357memcached_servers = 172.16.10.50:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glance[paste_deploy]...flavor = keystone

在/etc/glance/glance-registry.conf 中设置相同的配置:

[keystone_authtoken]...auth_uri = http://172.16.10.50:5000auth_url = http://172.16.10.50:35357memcached_servers = 172.16.10.50:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glance[paste_deploy]...flavor = keystone

配置镜像存储

修改/etc/glance/glance-api.conf的配置:

[glance_store] 部分,配置本地文件系统存储和镜像文件位置:

[glance_store] stores = file,httpdefault_store = filefilesystem_store_datadir = /var/lib/glance/p_w_picpaths

启动服务:

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

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


查看启动后9292和9191端口是否开启。


在keystone上做服务注册

创建glance服务实体,首先加载admin环境变量

# source admin-openstack.sh
#  openstack service create --name glance  \--description "OpenStack Image" p_w_picpath

创建镜像服务的 API 端点:

# openstack endpoint create --region RegionOne \  p_w_picpath public http://172.16.10.50:9292
# openstack endpoint create --region RegionOne  \ p_w_picpath internal http://172.16.10.50:9292
# openstack endpoint create --region RegionOne  \ p_w_picpath admin http://172.16.10.50:9292

验证配置是否成功:

# glance p_w_picpath-list   +----+------+| ID | Name |+----+------++----+------+


验证操作

获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

# source admin-openstack.sh

下载源镜像:

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

上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:

# openstack p_w_picpath create "cirros"   --file cirros-0.3.4-x86_64-disk.img  \ --disk-format qcow2 --container-format bare   --public

验证是否上传成功:

# openstack p_w_picpath list+--------------------------------------+--------+--------+| ID                                   | Name   | Status |+--------------------------------------+--------+--------+| 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd | cirros | active |+--------------------------------------+--------+--------+

上传成功后在/var/lib/glance/p_w_picpaths/下可以看到这个镜像,以镜像ID命名:

[root@node1 ~]# cd /var/lib/glance/p_w_picpaths/[root@node1 p_w_picpaths]# lltotal 12980-rw-r-----. 1 glance glance 13287936 Oct 26 16:00 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd


OpenStack计算服务-Nova

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-controller-install.html

在openstack的创建中,我们一般将Nova的计算节点组件放在需要创建虚拟机的主机上,而除了计算节点之外的其他Nova组件安装在控制节点上,计算节点只负责创建虚拟机。

Nova的服务组件:

API:负责接收和响应外部请求。API接收的请求将会放到消息队列(rabbitMQ)中。是外部访问nova的唯一途径。

Cert:负责身份认证EC2.

Scheduler:用于云主机调度。决策虚拟机创建在哪个主机(计算节点)上

Conductor: 计算节点访问数据库的中间件。

Consoleauth:用于控制台的授权验证

Novncproxy: VNC代理


配置数据库


编辑``/etc/nova/nova.conf``文件并完成下面的操作:

在``[api_database]``和``[database]``部分,配置数据库的连接:

[api_database]...connection = mysql+pymysql://nova:nova@172.16.10.50/nova_api[database]...connection = mysql+pymysql://nova:nova@172.16.10.50/nova

同步Compute 数据库:

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

查看数据库同步是否成功:

mysql -h 172.16.10.50 -unova -pnova -e "use nova;show tables;"mysql -h 172.16.10.50 -unova -pnova -e "use nova_api;show tables;"


配置keystone

编辑``/etc/nova/nova.conf``文件并完成下面的操作:

编辑"[keystone_authtoken]" 部分,添加如下内容:

[keystone_authtoken]...auth_uri = http://172.16.10.50:5000auth_url = http://172.16.10.50:35357memcached_servers = 172.16.10.50:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = nova

在[DEFAULT]中打开注释:

[DEFAULT]...auth_strategy = keystone


配置RabbitMQ
修改nova.conf文件:

[DEFAULT]...rpc_backend=rabbitrabbit_host=172.16.10.50rabbit_port=5672rabbit_userid=openstackrabbit_password=openstack



配置nova服务参数

编辑``/etc/nova/nova.conf``文件

在``[DEFAULT]``部分,只启用计算和元数据API:

enabled_apis=osapi_compute,metadata

在 [DEFAULT] 部分,使能 Networking 服务:(此处的设置需要修改默认参数Noop)

use_neutron = Truefirewall_driver = nova.virt.firewall.NoopFirewallDriver

在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :

vncserver_listen=172.16.10.50vncserver_proxyclient_address=172.16.10.50

在 [glance] 区域,配置镜像服务 API 的位置:

api_servers= http://172.16.10.50:9292

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

lock_path=/var/lib/nova/tmp

启动 Compute 服务并将其设置为随系统启动:

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


注册nova服务

创建 nova 服务实体:

# source  admin-openstack.sh # openstack service create --name nova  \ --description "OpenStack Compute" compute

创建 Compute 服务 API 端点,nova api的端口为8774 :

# openstack endpoint create --region RegionOne \  compute public http://172.16.10.50:8774/v2.1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne \  compute internal http://172.16.10.50:8774/v2.1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne \  compute admin http://172.16.10.50:8774/v2.1/%\(tenant_id\)s

查看注册是否成功:

# openstack host list+-----------+-------------+----------+| Host Name | Service     | Zone     |+-----------+-------------+----------+| node1     | conductor   | internal || node1     | consoleauth | internal || node1     | scheduler   | internal |+-----------+-------------+----------+


Nova计算节点的部署

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-compute-install.html

计算节点是真正运行虚拟机的节点,其硬件配置决定了可以运行多少虚拟机。并且这些节点需要支持CPU虚拟化。

确定CPU是否支持虚拟机的硬件加速:(结果不为0,表示支持)

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

此处的计算节点已经在前面安装了对应的服务。

修改计算节点nova配置:(由于和控制节点的大部分配置类似,直接从控制节点scp配置文件到本地修改,并修改用户权限)

# scp 172.16.10.50:/etc/nova/nova.conf  ./nova1.conf# chown root:nova nova1.conf # mv nova.conf  nova.conf-bak# mv nova1.conf  nova.conf

修改配置文件:

删除[database]中connection的配置参数。

#connection = mysql+pymysql://nova:nova@172.16.10.50/nova#connection = mysql+pymysql://nova:nova@172.16.10.50/nova_api

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

打开注释:

enabled=truenovncproxy_base_url=http://172.16.10.50:6080/vnc_auto.htmlvncserver_listen=0.0.0.0 vncserver_proxyclient_address=172.16.10.51 #修改为本地主机ip

打开默认的KVM虚拟化:

virt_type=kvm


启动计算服务及其依赖,并将其配置为随系统自动启动:

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

验证操作是否正常:

在控制节点查看:

# source admin-openstack.sh # openstack  host list+-----------+-------------+----------+| Host Name | Service     | Zone     |+-----------+-------------+----------+| node1     | conductor   | internal || node1     | consoleauth | internal || node1     | scheduler   | internal || node2     | compute     | nova     |+-----------+-------------+----------+# nova p_w_picpath-list+--------------------------------------+--------+--------+--------+| ID                                   | Name   | Status | Server |+--------------------------------------+--------+--------+--------+| 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd | cirros | ACTIVE |        |+--------------------------------------+--------+--------+--------+

出现上面的结果,证明计算节点的安装正常。


OpenStack网络服务-Neutron

Neutron由一个Neutron Server提供服务,主要包含一些二层的插件,如Linux Bridge,openvSwitch,DHCP-Agent, L3-Agent ,LBAAS-Agent 和其他组件等。模拟了实际物理网络中的服务和协议。


安装部署

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option1.html

Neutron有两种网络架构,单一扁平网络和负杂的多网段网络,这里以单一扁平网络为例。

安装部署需要在控制节点和计算节点上安装对应的服务,之前已经安装,此处跳过此步骤。


数据库配置

编辑``/etc/neutron/neutron.conf`` 文件并在控制节点完成如下操作:

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

connection = mysql+pymysql://neutron:neutron@172.16.10.50/neutron

配置Keystone

在 "[DEFAULT]" 和 "[keystone_authtoken]" 部分,配置认证服务访问:

[DEFAULT]auth_strategy = keystone

[keystone_authtoken]auth_uri = http://172.16.10.50:5000auth_url = http://172.16.10.50:35357memcached_servers = 172.16.10.50:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron

配置RabbitMQ

在 "[DEFAULT]" 和 "[oslo_messaging_rabbit]"部分,配置 "RabbitMQ" 消息队列的连接:

[DEFAULT]...rpc_backend = rabbit
# 修改注释[oslo_messaging_rabbit]rabbit_host = 172.16.10.50rabbit_userid = openstackrabbit_password = openstack

neutron的其他配置

在``[DEFAULT]``部分,启用ML2插件并禁用其他插件:

core_plugin = ml2service_plugins =

配置nova

在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化:

notify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = true
[nova]auth_url = http://172.16.10.50:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = nova

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

lock_path = /var/lib/neutron/tmp

配置 Modular Layer 2 (ML2) 插件

ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施.

编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作:

在``[ml2]``部分,启用flat和VLAN网络:

type_drivers = flat,vlan,gre,vxlan,geneve

在``[ml2]``部分,禁用私有网络:

tenant_network_types =

在``[ml2]``部分,启用Linuxbridge机制:

mechanism_drivers = linuxbridge,openvswitch

在``[ml2]`` 部分,启用端口安全扩展驱动:

extension_drivers = port_security

在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络

[ml2_type_flat]flat_networks = public

在 ``[securitygroup]``部分,启用 ipset 增加安全组规则的高效性:

enable_ipset = true


配置Linuxbridge代理

Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。

编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:

在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:

physical_interface_mappings = public:eth0

在``[vxlan]``部分,禁止VXLAN覆盖网络:

enable_vxlan = False

在 ``[securitygroup]``部分,启用安全组并配置 Linuxbridge iptables firewall driver:

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


配置DHCP代理

编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:

在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据:

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriverdhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = True

配置元数据代理

编辑``/etc/neutron/metadata_agent.ini``文件并完成以下操作:

在``[DEFAULT]`` 部分,配置元数据主机以及共享密码:

nova_metadata_ip = 172.16.10.50metadata_proxy_shared_secret = trying

为nova配置网络服务

编辑``/etc/nova/nova.conf``文件并完成以下操作:

在``[neutron]``部分,配置访问参数,启用元数据代理并设置密码:

[neutron]...url = http://172.16.10.50:9696auth_url = http://172.16.10.50:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutron
service_metadata_proxy=truemetadata_proxy_shared_secret = trying

完成安装

网络服务初始化脚本需要一个软链接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini``。

# 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

重启计算API 服务:

systemctl restart openstack-nova-api.service

当系统启动时,启动 Networking 服务并配置它启动

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

在keystone上完成注册

# source  admin-openstack.sh # openstack service create --name neutron   --description "OpenStack Networking" network# openstack endpoint create --region RegionOne \  network public http://172.16.10.50:9696 # openstack endpoint create --region RegionOne \  network internal http://172.16.10.50:9696 # openstack endpoint create --region RegionOne \   network admin http://172.16.10.50:9696

验证neutron是否验证成功:

# neutron agent-list+------------------+------------------+-------+-------------------+-------+----------------+-------------------+| id               | agent_type       | host  | availability_zone | alive | admin_state_up | binary            |+------------------+------------------+-------+-------------------+-------+----------------+-------------------+| 172afad4-755b-47 | Linux bridge     | node1 |                   | :-)   | True           | neutron-          || a1-81e8-d38056e2 | agent            |       |                   |       |                | linuxbridge-agent || 441e             |                  |       |                   |       |                |                   || 7f568fdf-192f-45 | Metadata agent   | node1 |                   | :-)   | True           | neutron-metadata- || bd-8436-b48ecb5d |                  |       |                   |       |                | agent             || 7480             |                  |       |                   |       |                |                   || fda9f554-952a-4b | DHCP agent       | node1 | nova              | :-)   | True           | neutron-dhcp-     || 7e-8509-f2641a65 |                  |       |                   |       |                | agent             || 95c9             |                  |       |                   |       |                |                   |+------------------+------------------+-------+-------------------+-------+----------------+-------------------+


在计算节点上安装Neutron

计算节点的配置和控制节点的配置文件是类似的,我们可以将控制节点的文件直接复制到计算节点进行修改。

# scp /etc/neutron/neutron.conf  172.16.10.51:/etc/neutron/ # scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini  172.16.10.51:/etc/neutron/plugins/ml2/# chown root.neutron /etc/neutron/plugins/ml2/linuxbridge_agent.ini #scp后的文件

删除neutron.conf上[database]的配置部分,删除所有``connection`` 项,因为计算节点不直接访问数据库。

# connection = mysql+pymysql://neutron:neutron@172.16.10.50/neutron

同时删除[nova]部分的配置:

[nova]...#auth_url = http://172.16.10.50:35357#auth_type = password#project_domain_name = default#user_domain_name = default#region_name = RegionOne#project_name = service#username = nova#password = nova

注释掉核心plugin的选项:

#core_plugin = ml2#service_plugins =

注释掉nova端口通知的选项:

#notify_nova_on_port_status_changes = true#notify_nova_on_port_data_changes = true

查看计算节点/etc/neutron/plugins/ml2/linuxbridge_agent.ini的配置信息:

[root@node2 ~]# grep '^[a-z]' /etc/neutron/plugins/ml2/linuxbridge_agent.ini physical_interface_mappings = public:eth0firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriverenable_security_group = Trueenable_vxlan = False


修改计算节点上nova的配置文件/etc/nova/nova.conf,和控制节点的一致:

[neutron]url = http://172.16.10.50:9696auth_url = http://172.16.10.50:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutron

重启计算节点Nova-compute

# systemctl restart openstack-nova-compute

启动neutron-linuxbridge-agent:

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


在控制节点上验证是否成功:

[root@node1 ~]# neutron agent-list+--------------------------------------+--------------------+-------+-------------------+-------+----------------+---------------------------+| id                                   | agent_type         | host  | availability_zone | alive | admin_state_up | binary                    |+--------------------------------------+--------------------+-------+-------------------+-------+----------------+---------------------------+| 172afad4-755b-47a1-81e8-d38056e2441e | Linux bridge agent | node1 |                   | :-)   | True           | neutron-linuxbridge-agent || 7f568fdf-192f-45bd-8436-b48ecb5d7480 | Metadata agent     | node1 |                   | :-)   | True           | neutron-metadata-agent    || cb3f16cf-c8dd-4a6b-b9e8-71622cde1774 | Linux bridge agent | node2 |                   | :-)   | True           | neutron-linuxbridge-agent || fda9f554-952a-4b7e-8509-f2641a6595c9 | DHCP agent         | node1 | nova              | :-)   | True           | neutron-dhcp-agent        |+--------------------------------------+--------------------+-------+-------------------+-------+----------------+---------------------------+

node2已经添加进来,说明配置成功。

提示:如果此过程无法正常获取node2的状态,检查配置文件neutron权限,防火墙和selinux的设置。

配置 服务 节点 部分 数据 文件 用户 数据库 网络 项目 镜像 控制 管理 存储 认证 验证 成功 端口 角色 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蚌埠网络安全管理办 服务器的公网ipv4地址怎么看 第四个网络安全宣传周 奉贤区即时网络技术价格对比 网络安全法不得录用情况 实现分布式文件存储的服务器节点 软件开发属于服务还是货物 网络技术公司的组织结构图 软件开发阐述 陕西dns服务器地址 合肥软件开发国企有那些 电子邮件收件服务器 天津常见软件开发服务电话 江苏数据软件开发价格 虚拟机服务器管理打不开 阿坝民宿软件开发 完美世界服务器安全吗 shell脚本对数据库表取数 典型的计算机网络安全技术 临澧市网络安全等级 英雄联盟进服务器后就闪退 佳能打印机服务器脱机是什么意思 网络安全应急工作的要点 网络安全不到位造成的影响 手机怎样充当dns服务器 云服务器1元钱中标 人脸识别如何保存到数据库 天天惠网络技术 网络安全伴我行手抄报初中 数据库两段锁协议名词解释
0