openstack云平台搭建超细教程(云操作系统openstack)

sf2gis@163.com

1 目标:将所有功能抽象为服务,并通过网络接口提供给用户。

云计算(cloud computing)基于互联网相关服务的增加、使用和交付模式,通常涉及通过互联网提供动态、易于扩展和虚拟化的资源。

云是网络和互联网的隐喻。在过去,云经常被用来表示电信网络,后来也被用来表示互联网和底层基础设施的抽象性。因此,云计算甚至可以让你体验每秒10万亿次的计算能力。如此强大的计算能力可以模拟核爆炸,预测气候变化和市场发展趋势。用户通过计算机、笔记本电脑、手机等方式访问数据中心,并根据自己的需要进行计算。

简单地说,将应用程序和数据放在由大量服务器组成的云中,用户需要购买和使用相应的服务。

云计算分为私有云、公有云和混合云。

云计算服务分类:基础设施即服务,平台即服务,软件即服务。

特点:

超大规模。云规模相当大,Google云计算拥有亚马逊、亚马逊、IBM、微软和Yahoo等公司的云都有几十万台服务器。云能给用户前所未有的计算能力。

虚拟化。云计算支持用户在任何位置使用各种终端获取服务。所需的资源来自云,而不是固定的有形实体。应用程序在云中运行,但实际上用户不需要知道应用程序的具体位置,只需要一个笔记本电脑或一个PDA,通过网络服务可以获得各种超能力的服务。

高可靠性。云采用数据多副本容错、计算节点同构可互换等措施,确保服务的高可靠性。使用云计算比使用本地计算机更可靠。

通用性。云计算不是针对特定的应用,可以在云的支持下构建不断变化的应用,同一个云可以同时支持不同的应用运行。

高可伸缩性。云规模可动态伸缩,满足应用和用户规模增长的需要。

按需服务。云是一个巨大的资源池,用户按需购买,如自来水、电和煤气。

极其便宜。云的特殊容错措施可以使用极其便宜的节点构成云;云的自动化管理大大降低了数据中心的管理成本;云的公共性和通用性大大提高了资源的利用率;云设施可建在电力资源丰富的地区,大大降低了能源成本。

2 Openstack

OpenStack它是一个开源云计算管理平台项目,由几个主要组件组合而成。OpenStack支持几乎所有类型的云环境,项目目标是提供简单、大规模扩展、丰富、统一的云计算管理平台。OpenStack基础设施即服务通过各种互补服务提供(IaaS)每项服务提供的解决方案API集成。常见组件:

Dashboard(web又名控制台Horizon)

Keystone(权限管理为各组件提供认证和授权功能)

Nova(管理虚拟机)

Nova-network(Neutron,管理网络流量和ip)

glance(镜像管理,提供安装镜像)

Cinder(磁盘管理,云盘)

Swift(网盘,对象存储)

openstack云平台搭建超细教程(云操作系统openstack)

OpenStack组件介绍

创建虚拟机步骤

openstack云平台搭建超细教程(云操作系统openstack)

openstack组件架构图

1) 通过登录界面或命令行通过RESTful API向keystone获取认证信息。

2) keystone通过用户要求认证信息并生成auth-token返回相应的认证请求。

3) 界面或命令通过RESTful API向nova-api发送一个boot instance请求(携带auth-token)。

4) nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。

5) keystone验证token是否有效,如果有效,返回有效的认证和相应的角色(注:有些操作需要角色权限)。

6) 通过认证后nova-api与数据库通信。

7) 新建虚拟机的初始数据库记录。

8) nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)。

9) nova-scheduler进程侦听消息队列获取nova-api的请求。

10) nova-scheduler通过查询nova在数据库中计算资源,并通过调度算法计算满足虚拟机创建需要的主机。

11) 有符合虚拟机创建的主机,nova-scheduler在数据库中更新虚拟机对应的物理主机信息。

12) nova-scheduler通过rpc.cast向nova-compute发送创建虚拟机请求的相应信息。

13) nova-compute创建虚拟机请求的消息将从相应的消息队列中获取。

14) nova-compute通过rpc.call向nova-conductor请求获取虚拟机信息。(Flavor)

15) nova-conductor从消息队列中获得nova-compute请求消息。

16) nova-conductor查询虚拟机对应的信息。

17) nova-conductor虚拟机对应的信息从数据库中获取。

18) nova-conductor通过消息将虚拟机信息发送到消息队列。

19) nova-compute从相应的信息队列中获取虚拟机信息。

20) nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需的镜像。

21) glance-api向keystone认证token是否有效,并返回验证结果。

22) token验证通过,nova-compute获取虚拟机镜像信息(URL)。

23) nova-compute通过keystone的RESTfull API获得认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需的网络信息。

24) neutron-server向keystone认证token是否有效,并返回验证结果。

25) token验证通过,nova-compute获取虚拟机网络信息。

26) nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需的持久存储信息。

27) cinder-api向keystone认证token是否有效,并返回验证结果。

28) token验证通过,nova-compute获取虚拟机持久存储信息。

29) nova-compute根据instance创建虚拟机的信息调用配置的虚拟驱动。

3 原理

用户通过网络终端要求软件服务。该软件在网络平台上开发,并使用该平台提供的基本功能服务。网络平台使用基础设施提供的基本硬件功能服务,如网络底层存储和计算资源。基础设施层使用存储、安全等服务和硬件来构建基本功能。

XaaS概念,X as a Service

S层:software

P层:platform

I层:infrastructure

参考:http://chuansong.me/n/147623

4 整体规划

openstack云平台搭建超细教程(云操作系统openstack)

整体规划

5 controller5.1 基本环境:使用rancher生成容器

(也可使用docker命令如下:

创建容器:## docker run -d –name controller –privileged=true docker.io/sf2gis/centos:ntp /usr/sbin/init

进入容器:# docker exec -it controller /bin/bash)

使用rancher需要在网络中设置IP(10.42.0.10)和主机名(controller),在命令中设置入口为/usr/sbin/init,在安全中选择所有权限。

进入容器,设置IP和域名:/etc/hosts

10.42.0.10 controller

10.42.0.11 compute01

openstack云平台搭建超细教程(云操作系统openstack)

rancher生成容器

5.2 设定时间同步:ntp

启动ntp服务。

完成后yum update 升级系统。

将容器commit为镜像

docker commit -a "sf2gis" -m "centos7.4+ntp server+update" controller sf2gis/openstack:ntp

将镜像push到dockerhub。

docker push sf2gis/openstack:ntp

5.3 MarioDB:安装数据库

参见:..\\DataBase\\mysql\\mysql.docx

5.4 安装信息队列服务rabbitmq5.4.1 安装:yum install rabbitmq-server -y5.4.2 启动:

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

5.4.3 配置

添加用户:rabbitmqctl add_user openstack abc123

配置权限:rabbitmqctl set_permissions openstack ".*" ".*" ".*"

添加webui:rabbitmq-plugins enable rabbitmq_management

配置完成后重启生效:systemctl restart rabbitmq-server.service

查看监听端口:netstat -anpt | grep beam

server间通信端口:25672

管理端口:15672

client端通信端口:5672

5.4.4 页面访问:IP:15672

初次登录用户名和密码使用guest。

openstack云平台搭建超细教程(云操作系统openstack)

登录页面

5.5 KeyStone:身份认证服务

OpenStack的Identity service为认证管理,授权管理和服务目录服务管理提供单点整合,作为统一API使用。此外,可以整合不在OpenStack项目中的用户信息服务(如LDAP服务)。

其他OpenStack服务在收到来自用户的请求时,询问Identity服务以验证是否具有权限。

keystone包括服务器、中间件及第三方驱动。服务器提供restful的web服务,中间件使组件可以访问到认证服务,第三方驱动用于整合外部用户信息服务。

5.5.1 创建权限数据库

mysql –u root -p

CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'abc123';

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

flush privileges;

5.5.2 安装

yum install openstack-keystone httpd mod_wsgi memcached python-memcached -y #这里安装memcached是为了令牌更新用的

systemctl enable memcached.service && systemctl start memcached.service

netstat -tnlp|grep memcached

openssl rand -hex 10 #生成随机数,创建管理员令牌。8115b8656f6eeea723cc

openstack云平台搭建超细教程(云操作系统openstack)

keystone

5.5.3 配置

cd /etc/keystone/

cp keystone.conf keystone.conf.bak

egrep -v "^#|^$" keystone.conf.bak > keystone.conf

vi keystone.conf

[default]

admin_token = 0cfe644113b242e39878 #与上面生成的管理员令牌一致

[database]

connection = mysql+pymysql://keystone:abc123@controller/keystone #配置数据库访问地址

[token]

provider = fernet #配置 fernet token provider

5.5.4 初始化fernet存储库

Fernet 是专为 API token 设计的一种轻量级安全消息格式,不需要存储于数据库,减少了磁盘的 IO,带来了一定的性能提升。使用uuid token偶尔会有莫名其妙认证失败返回401,从而导致web页面log out的情况。而使用fernet token后,则基本没有这种情况的发生。

su -s /bin/sh -c "keystone-manage db_sync" keystone #初始化身份认证服务的数据库

#keystone对自己进行认证:创建自身的用户和组并对其进行授权

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

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

5.5.5 配置 Apache HTTP 服务器

sed -i 's/#ServerName www.example.com:80/ServerName controller/g' /etc/httpd/conf/httpd.conf #修改配置文件中主机名为controller

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

vi /etc/httpd/conf.d/wsgi-keystone.conf,添加如下内容

Listen 35357

<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

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_admin /usr/bin/keystone-wsgi-admin

<Location /identity_admin>

SetHandler wsgi-script

Options +ExecCGI

WSGIProcessGroup keystone-admin

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

</Location>

systemctl enable httpd.service

systemctl start httpd.service

netstat -anpt | grep http #35357用于管理,5000用于普通用户

openstack云平台搭建超细教程(云操作系统openstack)

apache http

5.5.6 创建服务实体

export OS_TOKEN=8115b8656f6eeea723cc #配置认证令牌,与上面生成的管理员令牌一致

export OS_URL=http://controller:35357/v3 #配置端点URL

export OS_IDENTITY_API_VERSION=3 #配置认证 API 版本

env|grep ^OS #查看设置是否生效

注意:如果Token配置出错,将报HTTP 401错误。

openstack

service create –name keystone –description "OpenStack identity" identity

openstack云平台搭建超细教程(云操作系统openstack)

创建服务实体

创建访问该服务的三个端点:

openstack endpoint create –region RegionOne identity public http://controller:5000/v3

openstack endpoint create –region RegionOne identity internal http://controller:5000/v3

openstack endpoint create –region RegionOne identity admin http://controller:35357/v3

openstack云平台搭建超细教程(云操作系统openstack)

创建端点

为简化操作,可以使用bootstrap进行集中创建,下面的等同于服务实体的创建

keystone-manage bootstrap –bootstrap-password 8115b8656f6eeea723cc \

–bootstrap-admin-url http://controller:35357/v3 \

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

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

–bootstrap-region-id RegionOne

5.5.7 创建admin管理项目:进行管理操作

组织结构:domain-》project-》role-》user

创建域:openstack domain create –description "default Domain" default

创建项目:openstack project create –domain default –description "admin Project" admin

创建角色:openstack role create admin

创建用户:openstack user create –domain default –password-prompt admin

关联:openstack role add –project admin –user admin admin

可以在keystone数据库assignment中查看记录。

openstack云平台搭建超细教程(云操作系统openstack)

创建admin管理项目

5.5.8 创建service项目:各组件服务使用

openstack project create –domain default –description "service Project" service

5.5.9 创建demo项目:常规业务使用

openstack project create –domain default –description "demo Project" demo

openstack user create –domain default –password-prompt demo

openstack role create user

openstack role add –project demo –user demo user

5.5.10 出于安全考虑,关闭相关环境变量

unset OS_TOKEN OS_URL

5.5.11 请求认证

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

openstack云平台搭建超细教程(云操作系统openstack)

请求认证

可以使用脚本文件简化认证过程:使用openstack token issue直接认证

vi admin-openrc

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://controller:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

openstack云平台搭建超细教程(云操作系统openstack)

认证

vi demo-openrc

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=ademo

export OS_USERNAME=demo

export OS_PASSWORD=demo

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

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

5.6 Glance:镜像服务5.6.1 概述

管理镜像,允许用户发现,注册、恢复虚拟机镜像。

5.6.1.1 组织架构

glance-api:接受用户调用。

glance-registry:管理镜像元数据,内部服务。存储于数据库中。

存储仓库:支持多种仓库。

元数据定义服务:用于自定义元数据。

5.6.2 环境准备5.6.2.1 创建数据库

CREATE DATABASE glance;

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

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

flush privileges;

5.6.2.2 创建认证服务

创建glance用户(密码输入glance):openstack user create –domain default –password-prompt glance

建立admin角色连接: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

openstack云平台搭建超细教程(云操作系统openstack)

认证服务

生成脚本

vi glance-openrc

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=service

export OS_USERNAME=glacne

export OS_PASSWORD=glance

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

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

测试:openstack token issue

openstack云平台搭建超细教程(云操作系统openstack)

测试

5.6.3 安装配置

yum install openstack-glance –y

配置glance-api

cd /etc/glance/

cp glance-api.conf glance-api.conf.bak

egrep -v "^#|^$" glance-api.conf.bak > glance-api.conf

vi glance-api.conf

[DEFAULT]

notification_driver = noop #配置 noop 禁用通知,他们只适合与可选的Telemetry 服务

[database]

connection = mysql+pymysql://glance:glance@controller/glance #配置数据库访问地址

[keystone_authtoken] #配置认证服务访问信息

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

password = glance

[paste_deploy] #配置认证服务访问

flavor = keystone

[glance_store] #配置本地文件系统存储和镜像文件位置

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

配置glance- registry

cp glance-registry.conf glance-registry.conf.bak

egrep -v "^#|^$" glance-registry.conf.bak > glance-registry.conf

vi glance-registry.conf

[database]

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

[keystone_authtoken]

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

password = glance

[paste_deploy]

flavor = keystone

配置写入数据库

su -s /bin/sh -c "glance-manage db_sync" glance #将配置写入镜像服务数据库

启动镜像服务、开机启动

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

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

5.6.4 镜像管理

下载镜像:wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

创建镜像:

openstack image create "cirros" –file cirros-0.3.4-x86_64-disk.img –disk-format qcow2 –container-format bare –public #使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它

镜像列表:openstack image list #确认镜像的上传并验证属性

openstack云平台搭建超细教程(云操作系统openstack)

镜像列表

5.7 Nova:计算服务5.7.1 概述

OpenStack使用计算服务来托管和管理云计算系统,是IaaS系统的主要部分,模块主要由Python实现。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

openstack云平台搭建超细教程(云操作系统openstack)

Nova架构

5.7.1.1 VNC Proxy的功能:

将公网(public network)和私网(private network)隔离

VNC client运行在公网上,VNCServer运行在私网上,VNC Proxy作为中间的桥梁将二者连接起来

VNC Proxy通过token对VNC Client进行验证

VNC Proxy不仅仅使得私网的访问更加安全,而且将具体的VNC Server的实现分离,可以支持不同Hypervisor的VNC Server但不影响用户体验

5.7.1.2 VNC Proxy的部署

在Controller节点上部署nova-consoleauth 进程,用于Token验证

在Controller节点上部署nova-novncproxy 服务,用户的VNC Client会直接连接这个服务

Controller节点一般有两张网卡,连接到两个网络,一张用于外部访问,我们称为public network,或者API network,这张网卡的IP地址是外网IP,如图中172.24.1.1,另外一张网卡用于openstack各个模块之间的通信,称为management network,一般是内网IP,如图中10.10.10.2

在Compute节点上部署nova-compute,在nova.conf文件中有下面的配置

vnc_enabled=True

vncserver_listen=0.0.0.0 //VNC Server的监听地址

vncserver_proxyclient_address=10.10.10.2 //nova vnc proxy是通过内网IP来访问vnc server的,所以nova-compute会告知vnc proxy用这个IP来连接我。

novncproxy_base_url=http://172.24.1.1:6080/vnc_auto.html //这个url是返回给客户的url,因而里面的IP是外网IP

5.7.2 创建数据库

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

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

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

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

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

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

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

flush privileges;

5.7.3 创建服务实体

. admin-openrc #获得admin权限

创建用户并添加到admin

openstack user create –domain default –password-prompt nova #创建nova用户,会提示输入密码nova

openstack role add –project service –user nova admin #添加admin 角色到 nova 用户

创建服务实体及端点

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

5.7.4 安装服务

yum install -y \

openstack-nova-api \

openstack-nova-conductor \

openstack-nova-console \

openstack-nova-novncproxy \

openstack-nova-scheduler

5.7.5 配置nova.conf

cd /etc/nova/

cp nova.conf nova.conf.bak

egrep -v "^$|^#" nova.conf.bak > nova.conf

vi nova.conf

[DEFAULT]

enabled_apis = osapi_compute,metadata #禁用EC2 API

transport_url = rabbit://openstack:abc123@controller

auth_strategy = keystone #配置认证服务访问

my_ip = 10.42.0.10 #配置 my_ip使用controller的IP地址

use_neutron = True #启动网络服务支持

firewall_driver = nova.virt.firewall.NoopFirewallDriver #关闭防火墙

[api_database]

connection = mysql+pymysql://nova:nova@controller/nova_api #配置数据库访问

[database]

connection = mysql+pymysql://nova:nova@controller/nova #配置数据库访问

[keystone_authtoken] #配置认证服务访问

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

password = nova

[vnc] #配置VNC代理使用控制节点的管理IP地址

vncserver_listen = 0.0.0.0

vncserver_proxyclient_address = $my_ip

[glance]

api_servers = http://controller:9292 #配置镜像服务的位置,域名如果无法解析也可以IP地址

[oslo_concurrency]

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

5.7.6 同步数据库

su -s /bin/sh -c "nova-manage api_db sync" nova #同步Compute 数据库,忽略告警信息

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

5.7.7 启动 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

5.7.8 查看服务列表

nova service-list

openstack云平台搭建超细教程(云操作系统openstack)

服务列表

5.8 Nova计算节点

参见:compute01

5.9 Neutron:网络服务5.9.1 概述

Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 *** 等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。

Openstack的设计理念是把所有的组件当做服务来注册的。 Neutron就是网络服务。它将网络、子网、端口和路由器抽象化,之后启动的虚拟主机就可以连接到这个虚拟网络上,最大的好处是这些都可视化的在Horizon里得到了实现,部署或者改变一个SDN变得非常简单。

openstack云平台搭建超细教程(云操作系统openstack)

Neutron结构

客户机连接到网络的流程

1) 租户创建了一个网络,比如net

2) 租户为此网络分配一个子网,比如192.168.56.0/24

3) 租户启动一个客户机,并指明一个网口连接到net

4) Nova通知Neutron并在net上创建一个端口,如port1

5) Neutron选择并分配一个IP给port1

6) 客户机通过port1就连接到了net上

组织架构

openstack云平台搭建超细教程(云操作系统openstack)

组织架构

Neutron 由如下组件构成:

Neutron Server :对外提供 OpenStack 网络 API,接收请求,并调用 Plugin 处理请求。

Plugin:处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络的状态, 并调用 Agent 处理请求。

Agent :处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。

network provider :提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交换机。

Queue :Neutron Server,Plugin 和 Agent 之间通过 Messaging Queue 通信和调用。

Database :存放 OpenStack 的网络状态信息,包括 Network, Subnet, Port, Router 等。

5.9.2 环境准备

docker创建时,注意:

修改/etc/hosts(controller和compute01都要修改)。

5.9.3 创建数据库

CREATE DATABASE neutron;

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

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

Flush privileges;

5.9.4 创建服务实体

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

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

5.9.5 安装服务

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

5.9.6 配置neutron.conf

cd /etc/neutron/

cp neutron.conf neutron.conf.bak

egrep -v "^$|^#" neutron.conf.bak > neutron.conf

vi neutron.conf

[database] #配置数据库访问

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

[keystone_authtoken] #配置认证服务访问

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

password = neutron

[nova] #配置网络以能够反映计算网络拓扑变化

auth_url = http://controller:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = nova

password = nova

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp #配置锁路径

[DEFAULT]

core_plugin = ml2 #启用Layer 2 (ML2)插件模块,路由服务和重叠的IP地址

service_plugins = #故意缺少值,就可以启用多种服务插件

transport_url = rabbit://openstack:abc123@controller #配置 "RabbitMQ"消息队列访问

auth_strategy = keystone #配置认证服务访问

notify_nova_on_port_status_changes = True #配置网络以能够反映计算网络拓扑变化

notify_nova_on_port_data_changes = True

5.9.7 配置m2.conf

cd /etc/neutron/plugins/ml2/

cp ml2_conf.ini ml2_conf.ini.bak

egrep -v "^$|^#" ml2_conf.ini.bak > ml2_conf.ini

vi ml2_conf.ini

[ml2]

type_drivers = flat,vlan #启用flat和VLAN网络

tenant_network_types = #故意缺少值,这样就可以启用多种网络

mechanism_drivers = linuxbridge #启用Linux 桥接

extension_drivers = port_security #启用端口安全扩展驱动

[ml2_type_flat]

flat_networks = provider #配置公共flat提供网络

[securitygroup]

enable_ipset = True #启用 ipset 增加安全组的方便性

5.9.8 配置linuxbridge_agent.ini

cd /etc/neutron/plugins/ml2/

cp linuxbridge_agent.ini linuxbridge_agent.ini.bak

egrep -v "^$|^#" linuxbridge_agent.ini.bak >linuxbridge_agent.ini

vi linuxbridge_agent.ini

[linux_bridge]

physical_interface_mappings = provider:ens33 #映射公共虚拟网络到公共物理网络接口

[vxlan] #禁用VXLAN覆盖网络

enable_vxlan = False

[securitygroup] #启用安全组并配置 Linux 桥接 iptables 防火墙驱动

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

5.9.9 配置DHCP

cd /etc/neutron/

cp dhcp_agent.ini dhcp_agent.ini.bak

egrep -v "^$|^#" dhcp_agent.ini.bak > dhcp_agent.ini

vi dhcp_agent.ini

[DEFAULT] #配置Linux桥接网卡驱动,Dnsmasq DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络访问元数据

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = True

5.9.10 配置元数据

cd /etc/neutron/

cp metadata_agent.ini metadata_agent.ini.bak

egrep -v "^$|^#" metadata_agent.ini.bak > metadata_agent.ini

vi metadata_agent.ini

[DEFAULT] #配置访问参数

nova_metadata_ip = controller #配置元数据主机

metadata_proxy_shared_secret = mate #配置元数据代理共享密码,自定义

5.9.11 修改nova配置

cd /etc/nova/

cp nova.conf nova.conf.nova

vi nova.conf #新增neutron

[neutron]

url = http://controller:9696

auth_url = http://controller:35357

auth_type = password

project_domain_name = Default

user_domain_name = Default

region_name = RegionOne

project_name = service

username = neutron

password = neutron

service_metadata_proxy = True

metadata_proxy_shared_secret = mate

5.9.12 创建ML2链接

#网络服务初始化脚本需要一个超链接/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

5.9.13 同步数据库

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 #同步数据库

5.9.14 启动服务

systemctl restart openstack-nova-api.service #重启计算API 服务

配置他们开机自启动(对所有网络选项)

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

对网络选项2,同样也启用并启动layer-3服务:

systemctl enable neutron-l3-agent.service

systemctl start neutron-l3-agent.service

5.9.15 配置计算节点

参见:安装neutron网络服务

5.10 Horizon:管理端5.10.1 概述

Openstack项目中的Horizon仪表板组件是以Web界面的形式展示各项服务的,Openstack云系统管理员和终端用户可以通过仪表板管理各项资源和服务。

Horizon通过Openstack的APIs与控制节点通信,分配资源和同步状态。

Horizon服务组件允许对其进行定制化的修改,同时,提供一些核心代码类和可重复使用的模板与工具.

5.10.2 安装

yum install -y openstack-dashboard

5.10.3 配置

备份:cp /etc/openstack-dashboard/localsettings /etc/openstack-dashboard/localsettings.bak

修改配置:vi /etc/openstack-dashboard/localsettings

OPENSTACK_HOST = "controller"

ALLOWED_HOSTS = ['*', ]

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

CACHES = {

'default': {

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

'LOCATION': '127.0.0.1:11211',

}

}

OPENSTACK_KEYSTONE_URL = "http://192.168.71.2:5000/v3"

OPENSTACK_API_VERSIONS = {

'identity': 3,

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_"

}

OPENSTACK_NEUTRON_NETWORK = {

'enable_distributed_router': False,

'enable_firewall': False,

'enable_ha_router': False,

'enable_lb': False,

'enable_quotas': True,

'enable_security_group': True,

'enable_vpn': False,

'profile_support': None,

}

TIME_ZONE = "Asia/Shanghai"

5.10.4 重启服务

systemctl restart httpd.service memcached.service

5.10.5 访问web页面

http://IP/dashboard/

openstack云平台搭建超细教程(云操作系统openstack)

登录页面

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至827202335@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.eztwang.com/dongtai/52659.html

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2022年12月29日 15:41
下一篇 2022年12月29日 15:46

相关推荐

  • 找手工活在哪个平台上找比较真实可靠(外发加工接单平台)

    关于手工活代加工你知道多少?前两天跟一个朋友聊天,他跟我聊起来这个话题,我对这方面不懂,然后就听他给我讲。 大概去年三月份时候,他在1688上面找了一个手工活代加工的,当时说的很好很好,还给他看了他们的营业执照和签订合同,想着营业执照什么都看了应该没什么事。当时他就激情澎湃了,脑子一热当时就让他们发了第一批货。 第一批货到了,是需要快递到付,付了四百多块,是…

    2024年3月25日
    1400
  • 拼多多开店要钱吗(网上开店铺需要什么流程)

    拼多多作为中国的电商平台之一,吸引了越来越多的商家入驻。本文将详细介绍在拼多多开店的流程以及所需的费用。 一、拼多多开店流程1. 注册账号首先需要在拼多多官网上注册一个账号,填写正确的手机号码,并设置密码。平台会通过短信验证码的方式验证手机号是否正确,并完成账号的注册。2. 完善店铺信息在注册账号后,需要填写店铺的基本信息,包括店铺名称、店铺LOGO、经营类…

    2024年3月24日
    900
  • 兼职拿我身份证开淘宝网店(别人拿我的身份证开网店)

    遥想当年,电商刚开始发力的阶段,身边经常有人借身份证开淘宝店铺。究其原因,主要就是平台规定一人一店,所以为了多开店铺提高成功率,“七大姨八大姑”借了个遍,甚至村里的留守老人都不放过。时至今日,还不乏这样的人存在。 再说几年前,不少之前的电商创业者成了大老板,事业飞黄腾达,开了公司,买了奔驰。虽然小日子越过越滋润,但也遇到烦心事。 “啥事呢”? “不能大声说的…

    2024年3月24日
    1400
  • 闲鱼一键转卖怎么赚钱(闲鱼的一键转卖是赚佣金吗)

    “现在去闲鱼上买东西,刷好几屏都是职业卖家,真正卖闲置物品的个人越来越少了。”有网友吐槽。 知乎、百度等平台上也充斥着闲鱼赚钱攻略:“去1688、拼多多、义乌购、微商手里找货源找文案,自己不要的东西,低于均价快速卖出刷好评,提升闲鱼账号的成交量,带动流量和活跃度,权重也会变高。” 就像闲鱼的Slogan所说的,闲鱼本身是一个“卖闲置,淘二手”的平台,因其只需…

    2024年3月24日
    2100
  • 不小心把收款码发给别人了怎么办(如何重置微信收款二维码)

    众所周知,微信付款二维码不能随便发给人。但是,收款二维码能不能随便发给别人呢,会不会存在什么风险呢?事实上,还是存在一定风险的。下面简单分析一下: 1、财务风险 我们都知道,收款码是我们向别人收钱的二维码。如果发给别人,别人扫码了,我们也只是进账资金,财务上不可能会造成损失,反而是赚了钱。但是,如果正当的钱,我们可以收。如果进账的是不正当的钱,那就会给自己带…

    2024年3月24日
    24100
  • 闲鱼到付安全吗(闲鱼卖家顺丰到付对谁有利)

    贩卖二手商品,可以直接把家中闲置物品换成真金白银,把不常用的、或者根本不用的东西变卖后,购入更加常用、更加心仪的产品。对比在各大电子平台开店售卖的方式,二手交易平台是更加合理的选择。 闲鱼平台是小编用着最好的闲置物品贩卖平台,下面我所教的基本内容也是适合个人“开店”的方法。此文为经验交流,并不是教授论文,希望各位看官摆平姿态,吸收干货。 第一,取得开门红。 …

    2024年3月24日
    900
  • 1688开店铺需要多少钱(入驻1688一年要多少钱)

    阿里巴巴国际站-重庆 阿里巴巴国际站有22年的建站历史,目前已经成为全球最大的做外贸B2B(批发)网站,主要招商对象是中国商家,买家分布在200多个海外国家和地区。国际站俗称“1688海外版/英文版”,其实国际站除了有1688相似的找批发买家流量提供之外,还提供了出口、报关退税、出口物流,还有现如今最受关注的收外汇等多项国际贸易辅助业务。 先来说说入驻费用:…

    2024年3月24日
    1000
  • 抖音商城怎么开店(怎样在抖音上开店铺卖商品)

    抖音上怎么开店,目前在抖音很多用户都在推销自己的视频时候,都附带了很多商店的连接,其中的流量可想而知,对于很多刷抖音的人来说这里是最好的推销地方,那么如何在抖音上开店呢?开店铺需要什么条件?下面就跟小编一起来看看抖音开店教程步骤! 抖音开店教程步骤 1.首先你要有自己的抖音号,注册一个并且登录,在“我”这个页面右上角有三条整齐的横线“三”点开,底下有个“设置…

    2024年3月24日
    500
  • 淘宝中评对卖家的影响(淘宝中评多久显示)

    淘宝的评价系统规定只有在商家购买了商品之后才能对其进行评价,一般来说,买家购买的商品只要不和商家描述的有太大出入的话,那么买家是不会恶意给中评的,除了恶评师。店铺很可能会因为顾客的一个差评或者一个中评而对店铺的权重产生影响,从而使店铺的销量下降和声誉受损。那么一个淘宝店铺被给于中评,会对其产生什么影响?以下是关于淘宝的评价系统的介绍。 一、淘宝店被中评有啥影…

    2024年3月24日
    900
  • 女生学美甲赚钱吗(女孩子做美甲行业好吗)

    有很多人问我当美甲师一个月能挣多少钱?我告诉你挣不了多少钱。很多女孩喜欢去做美甲,美甲师看似很挣钱,不过挣的也是辛苦钱。美甲师的月收入一般有两种:一种是有底薪的,一种是底薪加提成。在一般城市的美甲师底薪不超过3000,另一种底薪不高,一般提成在20%-30%左右,是一项多劳多得的技术。 美甲师的工资还和很多因素有关: ·1.所在地消费水平不同。消费水平高的城…

    2024年3月23日
    2800
  • 速卖通是b2c还是c2c(速卖通跨境电商)

    今天,我们将探索的是“速卖通”——被誉为“国际版淘宝”的跨境电商平台! 速卖通作为阿里巴巴旗下的跨境电商平台,在中国,它是最大的跨境出口B2C平台之一。同时,速卖通也在俄罗斯、西班牙等国家排名榜首,站点覆盖超过200个国家,广受欢迎。 平台费用与平台物流 速卖通的费用模式相对灵活,只需要支付佣金,佣金范围为3%到8%,并且享有无月租费优势。收款方面,买家确认…

    2024年3月23日
    700
  • 一般什么地方招暑假工(暑假临时工招聘网)

    马上就要放暑假了,各位大学生们的暑假工作是不是找好了呢。还没有找到的小伙伴们不要着急,我们现在就来分享一下2022网上找暑假工比较靠谱的软件。看看有没有让你心仪的那一款呢?可以根据以下平台来选择,比较可靠真实: 1. BOSS直聘、58同城、赶集网、智联招聘、前程无忧51Job、拉勾招聘等平台都有海量的优质岗位,可以根据自己的需求选择合适的平台。 2. 探儿…

    2024年3月23日
    600
  • 美甲店一天能挣1000吗(开美甲店会亏钱吗)

    我是一家个人美甲店,每天能赚多少钱呢? 我是一家个人美甲店,位于谷埠街国际商城。今天的收入达到了1200元,其中包括两个指甲的美甲服务、一个美睫和一个眉毛。 ·第一位顾客是通过抖音视频找到我的,她看到我们家有特色的建构养甲项目,毫不犹豫地选择了纯色加建构的服务,价格为49.9元。 ·第二位顾客是我的老顾客,一直对我的技术非常认可。上个月她在我这里做了一个不开…

    2024年3月23日
    800
  • 开网店卖什么东西好赚钱(网店初学者适合卖什么)

    开网店卖小饰品是一种越来越受欢迎的创业方式。随着人们对个性化产品和定制化服务的需求不断增加,小饰品作为一种简单易行、价格亲民的商品形式,具有很大的市场潜力。 虽然开网店卖小饰品是一种相对容易入门的创业方式,但是赚钱并不是轻松的事情。首先,您需要有一个新颖独特的产品系列,以吸引消费者的吸意力;其次,您需要掌握一些基本的营销技巧,例如拍摄高质量的产品图片,并在社…

    2024年3月23日
    500
  • 电商怎么发货才便宜(拼多多无货源在哪里找货源)

    如今快节奏的生活环境下,人们对于生活质量的要求和物质享受的追求也是逐步的提高,单单的吃饱穿暖已经不太符合如今的生活的追求。 创业项目,副业项目,现在已经成为了年轻人们的新选择,尤其是目前互联网创业前景广阔,正适合年轻人大展拳脚。 但同样,经常有人会说十个创业九个死,虽然机会多,但竞争也更大,在潮流中倒下的创业者同样是一波接着一波。 随着拼多多的快速崛起和发展…

    2024年3月23日
    800
  • 初中学历的宝妈适合考什么证(四十多岁还能考什么证)

    初中学历可以考多种证书,以下是一些可供参考的证书类型: 会计从业资格证:初中以上学历,年满18周岁即可报名。 电工操作资格证(上岗证):年满18周岁且符合相关工种规定的年龄要求,经医院体检合格且无妨碍从事相应特种作业的疾病和生理缺陷,初中及以上学历,符合相应特种作业需要的其他条件。 计算机等级证书:考生不受年龄、职业、学历等背景的限制,均可根据自己学习情况和…

    2024年3月23日
    700
  • 什么工作可以在手机上做(手机上的兼职有哪些)

    1.网上问卷调查 网上问卷调查是一个简单的赚钱方法,只需要你花费一些时间填写一些调查问卷,就可以获得一些报酬。一些市场调研公司和在线调查平台,经常需要人们填写一些问卷来帮助他们更好地了解市场和消费者需求。你可以去一些问卷调查网站注册,填写一些问卷调查,一般每份问卷的报酬是2-5元不等,根据问卷的难度不同而有所区别。如果你愿意花费更多时间填写问卷,你可以得到更…

    2024年3月23日
    1300
  • 1688一件代发利润大概在多少(免费一件代发正规平台)

    肯定能啊!不然不赚钱为啥有这么多人去做! 但是也不是说你做了就能赚钱,就跟做生意一个道理,能不能赚钱看的是个人能力! 但是相对来说,一件代发是非常简单的了,机会也比较大,投入和产出的回报比也比较高! 至于题主说的一些费用,很多都没有必要,如果想尝试我建议的是以最小的投资来做。 先简单说说一件代发: “一件代发”顾名思义,就是你作为卖家,哪怕你只卖出一件产品,…

    2024年3月21日
    900
  • 暑假工干什么比较好(暑假工一般找什么工作)

    给你几点建议,希望能帮到你。 01 如果你去电子厂或者机械厂打工,要防止招你的人是不是中介,干多久可以离职,根据我的经验,一般厂里是干三个月才能走,如果你干两个月,到最后离开会很困难,可能到时候干了中介会不断拖你工资。 另外还有一点要注意,在一些APP上找工作,一般招聘者都是中介公司。当你面试之后,不可能马上入职。 就例如我和我同学在58同城找工作去了之后才…

    2024年3月21日
    1000
  • 品牌折扣店的货是真是假(折扣店的东西为什么便宜)

    你在网上看到那些价格很便宜的品牌折扣网站,比如唯品会,会不会想:“这么便宜,质量能保证吗?”今儿我们就讲讲,他们怎么做到比传统的零售商卖的便宜,还是真货。大概四个原因。 第一、品牌折扣平台一般卖的都是品牌的过季产品或者库存产品,品牌商需要清理库存,愿意以很低的价格把产品出掉。 第二,品牌折扣品牌所在的品类一般都是服装和家居产品,这类产品的定价策略一般都是按照…

    2024年3月21日
    700

发表回复

登录后才能评论

联系我们

18312384410

在线咨询: QQ交谈

邮件:827202335@qq.com

添加微信