openstack上

公司部署 OpenStack 的 3 大原因:更高的运营效率、创新能力和成本节约

成都创新互联是一家专业提供遂溪企业网站建设,专注与成都做网站、网站制作、H5响应式网站、小程序制作等业务。10年已为遂溪众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

环境:rhel7.2

salt-master :172.25.33.250

salt-slavle: 172.25.33.10 管理节点,controller

salt-slave:172.25.33.11

首先要在saltstack官网上安装

rpm --import https://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub

修改yum源:

[saltstack-repo]

name=SaltStack repo for RHEL/CentOS $releasever

baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest

enabled=1

gpgcheck=1

gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

修改/etc/yum.conf,打开cache缓存功能,这样,可以用能上网的电脑为不能上网的电脑加载yum源。yum缓存在/var/cache/yum/下。

修改后直接下载安装

yum install -y salt-master

yum install -y salt-minion

将缓存好的软件直接存放起来,作为其他主机的yum源。

 

在master上修改配置文件:/etc/salt/master

  interface: 0.0.0.0 **注意格式

  base:

    - /srv/salt/

在minion上修改配置文件:/etc/salt/minion

  master: 172.25.33.250

启动服务:

# systemctl start salt-master.service

# systemctl start salt-minion

# salt-key -L

Accepted Keys:

Denied Keys:

Unaccepted Keys:

server10.example

Rejected Keys:

# salt-key -A

The following keys are going to be accepted:

Unaccepted Keys:

server10.example

Proceed? [n/Y] Y

Key for minion server10.example accepted.

接受minion,测试:

# salt "*" test.ping

server10.example:

    True

正常!

 

部署openstack

部署之前,要确保:

1、master和minion的防火墙关闭

2、二者的selinux关闭,虽然官方说seliunx可以开着,但是有概率对部署造成困扰

3、时间要同步,同步时间使用chrony进行。

修改172.25.33.250 /etc/chrony.conf

server 172.25.33.10 iburst

allow 172.25.33.0/24

修改 server10.example.com /etc/chrony.conf

添加:server 172.25.33.250 iburst  同步服务器的IP ,也可以直接同步阿里云的时间。

启动chrony服务。

# chronyc sources -v

210 Number of sources = 1

 

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.

 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,

| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.

||                                                 .- xxxx [ yyyy ] +/- zzzz

||      Reachability register (octal) -.           |  xxxx = adjusted offset,

||      Log2(Polling interval) --.      |          |  yyyy = measured offset,

||                                \     |          |  zzzz = estimated error.

||                                 |    |           \

MS Name/IP address         Stratum Poll Reach LastRx Last sample

===============================================================================

^*172.25.33.250                 0   8     0   10y     +0ns[   +0ns] +/-    0ns

为了方便操作,建议修改hosts文件

以下为了方便称呼,将172.25.33.250这台能联网的真机成为master

172.25.33.10为minion1

172.25.33.11为minion2

__

master上的操作都是为了下载包,将包下载后挂载到yum源上,让minion安装。

在master上执行安装:

# yum install https://rdoproject.org/repos/rdo-release.rpm  

# yum upgrade

此时在你的默认yum源上有新的yum源

通过下面一张表格来描述一下当前openstack的各个组件及功能。

Service

Project name

Description

Dashboard

Horizon

通过提供了web服务实现openstack服务的交互,比如创建实例,配置IP以及配置访问控制。

Compute

Nova

在系统环境中管理整个生态圈的计算。承担着经过请求后的孵化,调度和回收虚拟机等一系列的责任,是核心组件,可以说是真正实现的角色。

Networking

Neutron

提供了网络服务,连接起了其他服务。为用户提供API去定义网络并将它们联系起来。支持多种网络供应商和新兴的网络技术,比如vxlan等。

Object Storage

Swift

通过了RESTful API来存储和检索任务非结构化的数据对象,对数据同步和横向扩展有很高的容错性,不是挂载文件目录形势的使用方式,它是将对象和文件写入多个驱动程序以确保数据在服务器集群中的完整性。

Block

Cinder

提供了块存储和持久化,可插拔式的体系架构简化了创建和管理存储设备。

Identity

Keystone

提供openstack服务的验证和授权功能。为全部服务提供了访问接口。

Image service

Glance

提供虚拟磁盘设备的镜像和检索服务,在计算实例时以供使用。

Telemetry

Ceilometer

可扩展的服务,提供了监控、测量、计费、统计等功能。

Orchestration

Heat

通过组合模板来进行的服务。

Database service

Trove

为关系数据库和非关系数据库提供可扩展和可依赖的云数据库服务。

Data processing service

Sahara

属于openstack的大数据项目。是openstack与hadoop的融合。

openstack上

 

安装openstack客户端:

yum install python-openstackclient  -y   --downloadonly

**如果系统关闭了sellinux就不要下载selinux包了。

yum install openstack-selinux  --downloadonly

 

将下载的安装包放到一个yum源里,生成repo

# createrepo .

在minion上:

]# cat openstack.repo 

[openstack-ocata]

name=openstack-ocata

baseurl=ftp://172.25.33.250/openstack/openstack-ocata/

gpgcheck=0

[epel]

name=epel

baseurl=ftp://172.25.33.250/openstack/epel/

gpgcheck=0

 

# yum install python-openstackclient  -y

在master上

yum install mariadb mariadb-server python2-PyMySQL  --downloadonly

然后进入缓存目录,将其同不到yum源处。

# rsync  * 172.25.33.250:/var/ftp/openstack/openstack-ocata/

# createrepo /var/ftp/openstack/openstack-ocata/

以后不再写master上的操作,所有目录软件均由此来。

以下操作均在minon1上完成。

大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上

yum install mariadb mariadb-server python2-PyMySQL

创建并添加:

# cat /etc/my.cnf.d/openstack.cnf

[mysqld]

bind-address = 172.25.33.10

#设置 ``bind-address``值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库

default-storage-engine = innodb

innodb_file_per_table

max_connections = 4096

collation-server = utf8_general_ci

character-set-server = utf8

#设置如下键值来启用一起有用的选项和 UTF-8 字符集

启动数据库服务:

# systemctl enable mariadb.service

# systemctl start mariadb.service

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

mysql_secure_installation

 

其中,认证服务,镜像服务,计算服务,Networking均有先决条件,所以,可以编写sql语句,将其一次导入。

# cat osp.sql 

CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'172.25.33.250' \

  IDENTIFIED BY 'keystone';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \

  IDENTIFIED BY 'keystone';

CREATE DATABASE glance;

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'172.25.33.250' \

  IDENTIFIED BY 'glance';

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \

  IDENTIFIED BY 'glance';

CREATE DATABASE nova_api;

CREATE DATABASE nova;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'172.25.33.250' \

  IDENTIFIED BY 'nova';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \

  IDENTIFIED BY 'nova';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'172.25.33.250' \

  IDENTIFIED BY 'nova';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \

  IDENTIFIED BY 'nova';

CREATE DATABASE neutron;

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'172.25.33.250' \

  IDENTIFIED BY 'neutron';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \

  IDENTIFIED BY 'neutron';

# mysql -p 

登陆Mysql查看:

> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| glance             |

| keystone           |

| mysql              |

| neutron            |

| nova               |

| nova_api           |

| performance_schema |

+--------------------+

8 rows in set (0.00 sec)

导入成功!

Telemetry 服务使用 NOSQL 数据库来存储信息,典型地,这个数据库运行在控制节点上

# yum install MongoDB-server mongodb

编辑文件 /etc/mongod.conf 并完成如下动作:

bind_ip = 172.25.33.10

#配置 bind_ip 使用控制节点管理网卡的IP地址

smallfiles = true

#默认情况下,MongoDB会在``/var/lib/mongodb/journal`` 目录下创建几个 1 GB 大小的日志文件。如果你想将每个日志文件大小减小到128MB并且限制日志文件占用的总空间为512MB,配置 smallfiles 的值

启动MongoDB 并配置它随系统启动

# systemctl enable mongod.service

# systemctl start mongod.service

OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。不过,大多数发行版本的OpenStack包支持特定的消息队列服务

# yum install rabbitmq-server

# systemctl enable rabbitmq-server.service

# systemctl start rabbitmq-server.service

# netstat -antlp|grep 5672

tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      3158/beam           

tcp6       0      0 :::5672                 :::*                    LISTEN      3158/beam           

添加 openstack 用户

rabbitmqctl add_user openstack rabbit

给``openstack``用户配置写和读权限:

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

# rabbitmqctl add_user openstack rabbit

Creating user "openstack" ...

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

Setting permissions for user "openstack" in vhost "/" ...

 

认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全

# yum install memcached python-memcached

修改配置文件:**如果不修改端口的话,其监控端口可能监控不到。

# cat /etc/sysconfig/memcached 

PORT="11211"

USER="memcached"

MAXCONN="1024"

CACHESIZE="64"

#OPTIONS="-l 127.0.0.1,::1"

OPTIONS="172.0.0.0,::1"

# systemctl enable memcached.service

# systemctl start memcached.service

抓取端口:

# netstat -antlp|grep 1121

tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      2999/memcached      

tcp6       0      0 :::11211                :::*                    LISTEN      2999/memcached      

 

安装镜像服务:

可能会缺一个包python-zope-interface,需要自己下载并安装。

#yum install openstack-keystone httpd mod_wsgi

生成一个随机值在初始的配置中作为管理员的令牌。

#openssl rand -hex 10

# openssl rand -hex 10

ec8b4ce2292ca6c24cd2

编辑文件 /etc/keystone/keystone.conf 并完成如下动作:

# vim /etc/keystone/keystone.conf

[DEFAULT]

...

admin_token = ec8b4ce2292ca6c24cd2

 [database]

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

第二个keystone是创建数据库时社的密码,@后的IP时控制节点的IP 

[token]

...

provider = fernet

# 配置Fernet UUID令牌的提供者

安装完memcache后,要使用memcache作为驱动。修改/etc/keystone/keystone.conf:

2842 driver = memcache

1500 servers = 172.25.33.10:11211

初始化身份认证服务的数据库

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

初始化后可以使用查看命令查看keystone中的表。

# mysql -ukeystone -pkeystone keystone -e "show tables;"

这三个keystone分别时用户名,密码,数据库名。

 

配置 Apache HTTP 服务器

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

ServerName 172.25.33.10:80

 

创建文件 /etc/httpd/conf.d/wsgi-keystone.conf

# cat /etc/httpd/conf.d/wsgi-keystone.conf

Listen 5000

Listen 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

    

 

 

创建服务实体和API端点:

默认情况下,身份认证服务数据库不包含支持传统认证和目录服务的信息。你必须使用:keystone-install 的内容为身份认证服务创建的临时身份验证令牌用来初始化的服务实体和API端点。

你必须使用``–os-token``参数将认证令牌的值传递给:command:openstack 命令。类似的,你必须使用``–os-url`` 参数将身份认证服务的 URL传递给 openstack 命令或者设置OS_URL环境变量

配置认证令牌:

# export OS_TOKEN=ec8b4ce2292ca6c24cd2

**身份令牌在配置认证服务中的配置文件中有用。

配置端点URL:

# export OS_URL=http://172.25.33.10:35357/v3

配置认证 API 版本:

# export OS_IDENTITY_API_VERSION=3

 

创建服务实体和API端点

1、在你的Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。

 

创建服务实体和身份认证服务:

$ openstack service create \

  --name keystone --description "OpenStack Identity" identity

 

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Identity               |

| enabled     | True                             |

| id          | 557ac19a848547e59df8792cec5f3598 |

| name        | keystone                         |

| type        | identity        

2、身份认证服务管理了一个与您环境相关的 API 端点的目录。服务使用这个目录来决定如何与您环境中的其他服务进行通信。

 

OpenStack使用三个API端点变种代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。在生产环境中,处于安全原因,变种为了服务不同类型的用户可能驻留在单独的网络上。对实例而言,公共API网络为了让顾客管理他们自己的云在互联网上是可见的。管理API网络在管理云基础设施的组织中操作也是有所限制的。内部API网络可能会被限制在包含OpenStack服务的主机上。此外,OpenStack支持可伸缩性的多区域。为了简单起见,本指南为所有端点变种和默认``RegionOne``区域都使用管理网络。

创建认证服务的 API 端点:

# openstack service create \

>   --name keystone --description "OpenStack Identity" identity

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Identity               |

| enabled     | True                             |

| id          | 557ac19a848547e59df8792cec5f3598 |

| name        | keystone                         |

| type        | identity                     

 

# openstack endpoint create --region RegionOne \

>   identity public http://172.25.33.10:5000/v3

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 71042a337b0c41afab0dc64017fe897c |

| interface    | public                           |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 557ac19a848547e59df8792cec5f3598 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://172.25.33.10:5000/v3      |

+--------------+----------------------------------+

# openstack endpoint create --region RegionOne \

>   identity internal http://172.25.33.10:5000/v3

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | f73b5f587b0d4f748db51d19dc0064c1 |

| interface    | internal                         |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 557ac19a848547e59df8792cec5f3598 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://172.25.33.10:5000/v3      |

+--------------+----------------------------------+

# openstack endpoint create --region RegionOne \

>   identity admin http://172.25.33.10:35357/v3

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 093b3ff515ed4228aaea142db68f9ebe |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 557ac19a848547e59df8792cec5f3598 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://172.25.33.10:35357/v3     |

+--------------+----------------------------------+

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

身份认证服务为每个OpenStack服务提供认证服务。认证服务使用 T domains, projects (tenants), :term:`users`和 :term:`roles`的组合。

1、创建域``default``:

# openstack domain create --description "Default Domain" default

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Default Domain                   |

| enabled     | True                             |

| id          | 2ed7d4d390914a55b19ca76df7d78be5 |

| name        | default                          |

+-------------+----------------------------------+

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

创建 admin 项目:

# openstack project create --domain default \

>   --description "Admin Project" admin

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Admin Project                    |

| domain_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled     | True                             |

| id          | 7f1f3eae73dc439da7f53c15c634c4e7 |

| is_domain   | False                            |

| name        | admin                            |

| parent_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

+-------------+----------------------------------+

创建 admin 用户:

# openstack user create --domain default \

>   --password admin admin

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled             | True                             |

| id                  | d18bdef0fe114b089a09f1fc21fefd88 |

| name                | admin                            |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

创建 admin 角色:

#  openstack role create admin

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | None                             |

| id        | e664a32afabb4701992287ab341fc642 |

| name      | admin                            |

+-----------+----------------------------------+

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

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

创建的任何角色必须映射到每个OpenStack服务配置文件目录下的``policy.json`` 文件中。默认策略是给予“admin“角色大部分服务的管理访问权限

3、创建``service``项目:

# openstack project create --domain default \

>   --description "Service Project" service

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Service Project                  |

| domain_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled     | True                             |

| id          | fb85ea3cb36a4ba38fcb607ce085e15e |

| is_domain   | False                            |

| name        | service                          |

| parent_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

+-------------+----------------------------------+

 

4、常规(非管理)任务应该使用无特权的项目和用户。作为例子,创建 demo 项目和用户。

创建demo项目

# openstack project create --domain default \

>   --description "Demo Project" demo

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Demo Project                     |

| domain_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled     | True                             |

| id          | 45a1b89bc5de479e8d3e04eae314ee88 |

| is_domain   | False                            |

| name        | demo                             |

| parent_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

+-------------+----------------------------------+

**

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

 

创建``demo`` 用户

# openstack user create --domain default \

>   --password demo demo

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled             | True                             |

| id                  | 251ad20a4d754dc4a104a3f5b8159142 |

| name                | demo                             |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

创建 user 角色:

# openstack role create user

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | None                             |

| id        | ab0c8bfe852b46adaae9d8a7015f98cd |

| name      | user                             |

+-----------+----------------------------------+

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

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

 

验证操作:

1、重置``OS_TOKEN``和``OS_URL`` 环境变量:

#unset OS_TOKEN OS_URL

2、作为 admin 用户,请求认证令牌:

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

Password: 

**管理端口35357

+------------+---------------------------------------------------------------+

| Field      | Value                                                         |

+------------+---------------------------------------------------------------+

| expires    | 2017-04-04T08:55:18+0000                                      |

| id         | gAAAAABY41FmAHBHvYUHWOpciT4HGmm4W3EfdKxwBuBBK17ypEY4yMU6COj1c |

|            | ANOBBsfBFb76BCSdGVLUm7Bp8528kcYbx93jLVdTL92_-gY-e_pLAFfVyEyw2 |

|            | mKoG64Q4C34fwxQqKLlwAMwSPd5Jm03NRF6aPhO52E_A552CNij47pdVQrJ14 |

| project_id | 7f1f3eae73dc439da7f53c15c634c4e7                              |

| user_id    | d18bdef0fe114b089a09f1fc21fefd88                              |

+------------+---------------------------------------------------------------+

3、作为``demo`` 用户,请求认证令牌:

#  openstack --os-auth-url http://172.25.33.10:5000/v3 --os-project-domain-name default --os-user-domain-name default \

>   --os-project-name demo --os-username demo token issue

Password: 

**常规访问端口5000

+------------+---------------------------------------------------------------+

| Field      | Value                                                         |

+------------+---------------------------------------------------------------+

| expires    | 2017-04-04T08:57:08+0000                                      |


本文名称:openstack上
URL标题:http://myzitong.com/article/iidcpi.html