openstack-M版安装部署

[openstack信息简介]

Openstack项目是一个开源的云计算平台,它为广大云平台提供了可大规模扩展的平台,全世界的云计算技术人员创造了这个项目,通过一组相互关联的服务来提供了Iaas基础解决方案,每一个服务都通过提供自身的API来提供服务,个人或者企业完全可以根据自身的需求来安装一部分或者全部的服务。

通过下面一张表格来描述一下当前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的大数据项目。是openstackhadoop的融合。

[openstack体系架构]

下面这张图完整的体现了openstack服务之间的联系(Conceptualarchitecture概念架构):

                            wKiom1e7viahugKxAAGCRWRYOA0137.png

从这张图稍作了解的话还是能够理解的,其他服务通过相互的写作和工作为中间是VMs提供了各种服务。Keystone提供了验证服务,Ceilometer作为了整个系统的监控,Horizon提供了UI访问界面,这3个服务主要起到了把控全局的作用。在左下角有一个Ironic,它的作用是解决物理机的添加、删除、安装部署等功能,类似为集群自动化增添节点。

可以看说,整个生态系统外围掌控整个系统,内部各个服务相互协作提供各种功能,并且系统伸缩性大,扩展性高。

[openstack环境准备]

软件:vmareworkstation 11

操作系统:CentOS7 3.10.0-327.e17.x86_64

2:一台作为控制节点controller,一台作为计算节点compute

基本设置:

1.      每一个都选择2张网卡,一张对外提供服务,需要连接互联网,可以是桥接或者nat模式。一张提供内部网络,作为openstack内部联系的网络,在VMware选择host only模式。

2.      修改对应的主机名,并在hosts做主机与IP的解析,

3.      做时间同步,可以是本地,也可以是时间服务器,在centos7中改为chrony,调整完毕后设置开机启动。

4.      注!:方便起见,把防火墙和selinux全部关闭,确保网络畅通。

到这一步,基本上的环境配置就搞定了,我相信有余力去学习openstack,那对linux有了基本的理解,上述步骤应该能搞定。最后重启系统准备安装。

[openstack基本安装]

centos上默认包含openstack版本,可以直接用yum安装最新的版本不用费力去寻找相关的源码包。

[root@ceshiapp_2~]# yum install centos-release-openstack-mitaka.noarch -y

安装openstack客户端

[root@ceshiapp_2~]# yum install -y python-openstackclient

openstack自带有openstack-selinux来管理openstack服务之间的安装性能,这里,为了实验顺利,这里选择忽略,实际情况可以根据需求选择是否安装。

注!:如没有特殊说明以下安装说明都是在controller中执行。

[数据库及nosql安装]

[root@controller~]yum install mariadb mariadb-server python2-PyMySQL

#yum安装数据库,用于到时候创建服务的数据库 port3306

[root@controller~]mysql_secure_installation #安全配置向导,包括root密码等。

[root@controllermy.cnf.d]# vim openstack.cnf

[mysqld]

......

bind-address= 0.0.0.0 #这个地址表示能够让所有的地址能远程访问。

default-storage-engine= innodb

innodb_file_per_table

max_connections= 4096

collation-server= utf8_general_ci

character-set-server= utf8

#修改配置文件,定义字符集和引擎,其他可按需修改。

这是yum安装的数据库,是mariadb是兼容mysql的,也可以选择源码编译安装,安装过程这里不详细讲了。

MariaDB[(none)]> grant all on *.* to root@'%' identified by "root" ;

这里先添加远程登录的root用户。

[root@controllermy.cnf.d]# yum install -y mongodb-server mongodb

安装mongodb数据库,提高web访问的性能。Port27017

[root@controllermy.cnf.d]# vim /etc/mongod.conf

bind_ip = 192.168.10.200 #IP绑定在控制节点上。

......

[root@controllermy.cnf.d]# systemctl enable mongod.service

Createdsymlink from /etc/systemd/system/multi-user.target.wants/mongod.service to/usr/lib/systemd/system/mongod.service.

[root@controllermy.cnf.d]# systemctl start mongod.service

设置开机自启动。

[root@controllermy.cnf.d]#yum install memcached python-memcached

[root@controllermy.cnf.d]# systemctl enable memcached.service

Createdsymlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.

[root@controllermy.cnf.d]# systemctl start memcached.service

安装memcached并设置开机启动。Port11211 memcache用于缓存tokens

[rabbitmq消息队列安装与配置]

为了保持openstack项目松耦合,扁平化架构的特性,因此消息队列在整个架构中扮演了交通枢纽的作用,所以消息队列对openstack来说是必不可少的。不一定适用RabbitMQ,也可以是其他产品。

[root@controllermy.cnf.d]# yum install -y rabbitmq-server

[root@controllermy.cnf.d]# systemctl enable rabbitmq-server.service

Createdsymlink from/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to/usr/lib/systemd/system/rabbitmq-server.service.

[root@controllermy.cnf.d]# systemctl start rabbitmq-server.service

[root@controllermy.cnf.d]# rabbitmqctl add_user openstack openstack

Creatinguser "openstack" ...

[root@controllermy.cnf.d]# rabbitmqctl set_permissions openstack ".*" ".*"".*"

Settingpermissions for user "openstack" in vhost "/" ...

#安装rabbidmq,创建用户并设置允许读写操作。

[Identity servicekeystone]

接下来是openstack第一个验证服务——keystone服务安装,它为项目管理提供了一系列重要的验证服务和服务目录。openstack的其他服务安装之后都需要再keystone进行验证过,之后能够跟踪所有在局域网内安装好的openstack服务。

安装keystone之前先配置好数据库环境。

[root@controller~]# mysql -uroot -p

MariaDB[(none)]> CREATE DATABASE keystone;

QueryOK, 1 row affected (0.00 sec)

MariaDB[(none)]> grant all on keystone.* to keystone@localhost identified by'keystone';

QueryOK, 0 rows affected (0.09 sec)

MariaDB[(none)]> grant all on keystone.* to keystone@'%' identified by'keystone';           

QueryOK, 0 rows affected (0.00 sec)

MariaDB[(none)]> flush privileges;

QueryOK, 0 rows affected (0.05 sec)

#生成admin tokens

[root@controller~]# openssl rand -hex 10

bc6aec97cc5e93a009b1

安装keystone httpd wsgi

WSGIWeb Server Gateway Interface的缩写,是python定义的web服务器或者框架的一种接口,位于web应用程序和web服务器之间。

[root@controller~]# yum install -y openstack-keystone httpd mod_wsgi

修改keystone配置文件

[root@controller~]# vim /etc/keystone/keystone.conf

[default]

[DEFAULT]

...

admin_token= bc6aec97cc5e93a009b1 #这里填之前生成的admintokens

[database]

......

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

[token]

......

provider= fernet #控制tokens验证、建设和撤销的操作方式

[root@controller~]# sh -c "keystone-manage db_sync" keystone #设置数据库同步

[root@controller~]# keystone-manage fernet_setup --keystone-user keystone --keystone-groupkeystone #生成fernetkeys

[root@controller~]# vim /etc/httpd/conf/httpd.conf  #修改配置文件

...

ServerAdmincontroller

...

接下来配置虚拟主机

[root@controller~]# vim /etc/httpd/conf.d/wsgi-keystone.conf

    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

    <Directory /usr/bin>

        Require all granted

    </Directory>

</VirtualHost>

 

<VirtualHost*:35357>

    WSGIDaemonProcess keystone-adminprocesses=5 threads=1 user=keystone group=keystone display-na

me=%{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

    <Directory /usr/bin>

        Require all granted

    </Directory>

</VirtualHost>

设置开机自启动。

[root@controller~]# systemctl enable httpd.service

[root@controller~]# systemctl start httpd.service

配置上述生成的admin token

[root@controller~]# export OS_TOKEN=bc6aec97cc5e93a009b1

配置endpoint URL

[root@controller~]# export OS_URL=http://controller:35357/v3

Identity 版本

[root@controller~]# export OS_IDENTITY_API_VERSION=3

创建identity service

[root@controller~]# openstack service create   --namekeystone --description "OpenStack Identity" identity

验证服务管理着openstack项目中所有服务的API endpoint,服务之间的相互联系取决于验证服务中的API endpoint。根据用户不同,它提供了三种形式的API endpoint,分别是admininternalpublicadmin默认允许管理用户和租户,internalpublic不允许管理用户和租户。因为在openstack中一般都会设置为2张网卡,一张对外提供服务,一张是内部交互提供的网络,因此对外一般使用public API 能够使得用户对他们自己的云进行管理。Admin API 一般对管理员提供服务,而internal API 是针对用户对自己所使用opservice服务进行管理。因此一般一个openstack服务都会创建多个API,针对不用的用户提供不同等级的服务。

[root@controller~]# openstack endpoint create --region RegionOne identity publichttp://controller:5000/v3

[root@controller~]# openstack endpoint create --region RegionOne identity internalhttp://controller:5000/v3

[root@controller~]# openstack endpoint create --region RegionOne identity adminhttp://controller:35357/v3  

接下来是创建默认的域、工程(租户)、角色、用户以及绑定。

[root@controller~]# openstack domain create --description "Default Domain" default

[root@controller~]# openstack project create --domain default \

>   --description "Admin Project"admin

[root@controller~]# openstack user create --domain default  --password-prompt admin

UserPassword:

RepeatUser Password:#密码admin

[root@controller~]# openstack role add --project admin --user admin admin

demo工程、用户、角色进行绑定。

[root@controller~]# openstack project create --domain default  --description "Service Project" service

[root@controller~]# openstack project create --domain default \

>   --description "Demo Project" demo

[root@controller~]# openstack user create --domain default  --password-prompt demo

UserPassword:

RepeatUser Password: #demo

[root@controller~]# openstack role add --project demo --user demo user

测试验证服务是否安装有效。

1.keystone-paste.ini中的这3个字段中删除admin_token_auth

[root@controller~]# vim /etc/keystone/keystone-paste.ini

[pipeline:public_api]

......admin_token_auth

[pipeline:admin_api]

......

[pipeline:api_v3]

......

2.删除刚才设置的OS_tokenOS_URL

Unset OS_TOKEN OS_URL

然后开始验证,没报错说明成功了。

[root@controller~]# openstack --os-auth-url http://controller:35357/v3 \

>   --os-project-domain-name default--os-user-domain-name default \

>   --os-project-name admin --os-username admintoken issue

Password:#admin

验证demo用户:

[root@controller~]# openstack --os-auth-url http://controller:5000/v3 \

>   --os-project-domain-name default--os-user-domain-name default \

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

Password:#demo

最后创建user脚本

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

这里如果是多个台服务器配置的话。这样的脚本就会方便你配置管理员的API。主要还是起到了方便的作用。

[Image serviceglance]

依旧先创建数据库以及相关用户。

[root@controller~]# mysql -u root -p

MariaDB[(none)]> CREATE DATABASE glance;

QueryOK, 1 row affected (0.04 sec)

MariaDB[(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \

    ->  IDENTIFIED BY 'glance';

QueryOK, 0 rows affected (0.28 sec)

MariaDB[(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \

    ->  IDENTIFIED BY 'glance';

QueryOK, 0 rows affected (0.01 sec)

MariaDB[(none)]> flush privileges;

QueryOK, 0 rows affected (0.08 sec)

[root@controller~]# . admin-openrc注!如果在其他服务器上就需要执行这个脚本,来配置admin api

接来下创建glance用户以及绑定。

[root@controller~]# openstack user create --domain default --password-prompt glance

UserPassword:

RepeatUser Password: #glance

admin 角色增加到 service工程和 glance用户。

[root@controller~]# openstack role add --project service --user glance admin

[root@controller~]# openstack service create --name glance \

>   --description "OpenStack Image"image

创建image服务的三种接口

[root@controller~]# openstack endpoint create --region RegionOne \

>   image public http://controller:9292

[root@controller~]# openstack endpoint create --region RegionOne \

>   image internal http://controller:9292

[root@controller~]# openstack endpoint create --region RegionOne   image admin http://controller:9292

安装openstack-glance并修改配置文件

[root@controller~]# yum install -y openstack-glance

[root@controller~]# vim /etc/glance/glance-api.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

[glance_store]

...

stores= file,http

default_store= file

filesystem_store_datadir= /var/lib/glance/images/

[root@controller~]# vim /etc/glance/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

做数据库同步。输出信息忽略。

[root@controller ~]# su -s /bin/sh -c "glance-managedb_sync" glance

Option"verbose" from group "DEFAULT" is deprecated forremoval.  Its value may be silentlyignored in the future.

/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1056:OsloDBDeprecationWarning: EngineFacade is deprecated; please useoslo_db.sqlalchemy.enginefacade

  expire_on_commit=expire_on_commit,_conf=conf)

/usr/lib/python2.7/site-packages/pymysql/cursors.py:146:Warning: Duplicate index 'ix_image_properties_image_id_name' defined on thetable 'glance.image_properties'. This is deprecated and will be disallowed in afuture release.

  result = self._query(query)

开机启动。

[root@controller~]# systemctl enable openstack-glance-api.service \

>   openstack-glance-registry.service

Createdsymlink from/etc/systemd/system/multi-user.target.wants/openstack-glance-api.service to/usr/lib/systemd/system/openstack-glance-api.service.

Createdsymlink from /etc/systemd/system/multi-user.target.wants/openstack-glance-registry.serviceto /usr/lib/systemd/system/openstack-glance-registry.service.

[root@controller~]# systemctl start openstack-glance-api.service \

>   openstack-glance-registry.service

下载一个镜像并创建,然后可以list查看是否成功。

[root@controller~]wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

[root@controller~]# openstack image create "cirros" \

>   --file cirros-0.3.4-x86_64-disk.img \

>   --disk-format qcow2 --container-format bare\

>   --public

镜像active成功。

[root@controller~]# openstack image list

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

|ID                                   | Name  | Status |

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

|7f715e8d-6f29-4e78-ab6e-d3b973d20cf7 | cirros | active |

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

[Compute-service nova] 

依旧为计算服务创建数据库。这里要为nova创建2个数据库。

MariaDB[(none)]> CREATE DATABASE nova_api;CREATE DATABASE nova;

QueryOK, 1 row affected (0.09 sec)

QueryOK, 1 row affected (0.00 sec)

MariaDB[(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \

    ->  IDENTIFIED BY 'nova';

QueryOK, 0 rows affected (0.15 sec)

MariaDB[(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%'    IDENTIFIED BY 'nova';

QueryOK, 0 rows affected (0.00 sec)

MariaDB[(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost'    IDENTIFIED BY 'nova';  

QueryOK, 0 rows affected (0.00 sec)

MariaDB[(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%'    IDENTIFIED BY 'nova';        

QueryOK, 0 rows affected (0.00 sec)

创建用户并绑定admin角色

[root@controller~]# . admin-openrc

[root@controller~]# openstack user create --domain default  --password-prompt nova

UserPassword:

RepeatUser Password: #nova

[root@controller~]# openstack role add --project service --user nova admin

创建nova计算服务。

[root@controller~]# openstack service create --name nova \

>   --description "OpenStack Compute"compute

创建novaapi

[root@controller~]# openstack endpoint create --region RegionOne \

>   compute public http://controller:8774/v2.1/%\(tenant_id\)s

[root@controller~]# openstack endpoint create --region RegionOne   compute internalhttp://controller:8774/v2.1/%\(tenant_id\)s

[root@controller~]# openstack endpoint create --region RegionOne   compute adminhttp://controller:8774/v2.1/%\(tenant_id\)s  

安装nova组件。

[root@controller~]# yum install -y openstack-nova-api openstack-nova-conductor \

  openstack-nova-consoleopenstack-nova-novncproxy \

  openstack-nova-scheduler

修改配置文件,修改内容比较多,需要仔细比对一下。

[root@controller~]# vim /etc/nova/nova.conf

[default]

......

enabled_apis= osapi_compute,metadata

rpc_backend=rabbit

auth_strategy=keystone

my_ip=192.168.10.200# 设置内网IP

use_neutron=true#支持网络服务

firewall_driver=nova.virt.libvirt.firewall.NoopFirewallDriver

[api_database]

......

connection=mysql+pymysql://nova:nova@controller/nova_api

[database]

......

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

[oslo_messaging_rabbit]

......

rabbit_host= controller

rabbit_userid= openstack

rabbit_password= openstack #之间创建的密码。

[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]

......

vncserver_listen= $my_ip

vncserver_proxyclient_address= $my_ip

[glance]

.......

api_servers= http://controller:9292

[oslo_concurrency]

......

lock_path= /var/lib/nova/tmp

同步数据库,忽略输出。

[root@controller~]# su -s /bin/sh -c "nova-manage api_db sync" nova

[root@controller~]# su -s /bin/sh -c "nova-manage db sync" nova

设置开机启动。

systemctlenable openstack-nova-api.service \

  openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service \

  openstack-nova-conductor.serviceopenstack-nova-novncproxy.service

#systemctl start openstack-nova-api.service \

  openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service \

  openstack-nova-conductor.serviceopenstack-nova-novncproxy.service

配置compute节点

[root@compute ~]# yum install -ycentos-release-openstack-mitaka #否则直接安装openstack-nova-compute失败

[root@compute ~]# yum install -y openstack-nova-compute

修改配置文件

[root@compute~]# vim /etc/nova/nova.conf

[DEFAULT]

......

rpc_backend= rabbit

auth_strategy= keystone

my_ip=192.168.10.201

firewall_driver=nova.virt.libvirt.firewall.NoopFirewallDriver

use_neutron=true

[glance]

......

api_servers=http://controller:9292

[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

[libvirt]

......

virt_type=qemu#egrep -c '(vmx|svm)' /proc/cpuinfo 如果显示为0 则需要修改成qemu

[oslo_concurrency]

......

lock_path=/var/lib/nova/tmp

[oslo_messaging_rabbit]

......

rabbit_host= controller

rabbit_userid= openstack

rabbit_password= openstack

[vnc]

......

enabled=true

vncserver_listen=0.0.0.0

vncserver_proxyclient_address=$my_ip

novncproxy_base_url=http://controller:6080/vnc_auto.html

然后设置开机自启动。

systemctlenable libvirtd.service openstack-nova-compute.service

systemctlstart libvirtd.service openstack-nova-compute.service

验证结果,在compute上操作。4upok

[root@compute~]# . admin-openrc

[root@compute~]# openstack compute service list

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

| Id |Binary           | Host       | Zone     | Status | State | Updated At                |

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

|  1 | nova-conductor   | controller | internal | enabled | up    | 2016-08-16T14:30:42.000000 |

|  2 | nova-scheduler   | controller | internal | enabled | up    | 2016-08-16T14:30:33.000000 |

|  3 | nova-consoleauth | controller | internal| enabled | up    |2016-08-16T14:30:39.000000 |

|  6 | nova-compute     | compute    | nova    | enabled | up    |2016-08-16T14:30:33.000000 |

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

[Network serviceneutron ] 

Neutron最主要是功能是负责虚拟环境下的网络,但它之前并不叫neutron,是叫quantum,因为被注册然后才改名的。网络在openstack中最复杂的功能,配置也是最繁琐的,从官方文档中单独把网络向导列出来写一大篇文章就可以看出来。从L1L7都有所涉及,openstack所有的服务都是通过网络练习起来。像glance一样,neutron本身并提供网络服务,它的大部分功能都是通过Plugin提供的,除了DHCPL3-agent,这些信息在配置服务的过程中能体现出来。

Neutron本身有2种模式,一种是provider networks,指的是运营商提供网络,可以说是外网,还有一种是Self-service networks,这是私人网络,可以说内网,但是第二种网络模式包含第一种,所以基本上都会选择第二种部署方式,对外提供服务用外网,对内使用内网,因此部署openstack一般都会使用2张网卡。

controller上配置数据库,赋权等操作。

[root@controller~]# mysql -u root -p

MariaDB[(none)]> CREATE DATABASE neutron;

QueryOK, 1 row affected (0.09 sec)

MariaDB[(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost'  IDENTIFIED BY 'neutron';

QueryOK, 0 rows affected (0.36 sec)

MariaDB[(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%'    IDENTIFIED BY 'neutron'; 

QueryOK, 0 rows affected (0.00 sec)

MariaDB[(none)]> flush privileges;

QueryOK, 0 rows affected (0.09 sec)

创建neutron用户,将admin角色绑定到用户上。

[root@controller~]# openstack user create --domain default --password-prompt neutron

UserPassword:

RepeatUser Password: #neutron

[root@controller~]# openstack role add --project service --user neutron admin

创建neutron网络服务以及三种API接口。

[root@controller~]# openstack service create --name neutron \

>   --description "OpenStackNetworking" network

[root@controller~]# openstack endpoint create --region RegionOne \

>   network public http://controller:9696

[root@controller~]# openstack endpoint create --region RegionOne   network internal http://controller:9696

[root@controller~]# openstack endpoint create --region RegionOne   network admin http://controller:9696

网络配置,安装组件。

[root@controller~]# yum install openstack-neutron openstack-neutron-ml2   openstack-neutron-linuxbridge ebtables -y

修改neutron配置文件。

[root@controller~]# vim /etc/neutron/neutron.conf

[default]

......

core_plugin= ml2

service_plugins= router

allow_overlapping_ips= True

auth_strategy=keystone

rpc_backend=rabbit

notify_nova_on_port_status_changes= True

notify_nova_on_port_data_changes= True

[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

修改ML2配置文件

[root@controller~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2]

......

type_drivers= flat,vlan,vxlan

tenant_network_types= vxlan

mechanism_drivers= linuxbridge,l2population

extension_drivers= port_security

[ml2_type_flat]

......

flat_networks= provider

[ml2_type_vxlan]

...

vni_ranges= 1:1000

[securitygroup]

...

enable_ipset= True

设置桥接代理配置文件。

[root@controller~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]

......

physical_interface_mappings=provider:eno33554984#内网网卡

[vxlan]

......

enable_vxlan= true

local_ip= 192.168.10.200 #controller ip

l2_population= true

[securitygroup]

......

enable_security_group= true

firewall_driver=neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

修改Layer-3 代理配置文件。

[root@controller~]# vim /etc/neutron/l3_agent.ini

[DEFAULT]

......

interface_driver= neutron.agent.linux.interface.BridgeInterfaceDriver

external_network_bridge=

修改DHCP代理配置文件。

[root@controller~]# vim /etc/neutron/dhcp_agent.ini

[DEFAULT]

......

interface_driver= neutron.agent.linux.interface.BridgeInterfaceDriver

dhcp_driver= neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = true

修改元数据代理配置文件。

vim/etc/neutron/metadata_agent.ini

[DEFAULT]

......

nova_metadata_ip= controller

metadata_proxy_shared_secret= meta #元数据共享的一个密码,之后会用到。

nova配置文件中修改neutron的参数。

[root@controller~]# vim /etc/nova/nova.conf

[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= meta

设置软连接

[root@controller~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

同步数据库。

[root@controllerneutron]# su -s /bin/sh -c "neutron-db-manage --config-file/etc/neutron/neutron.conf \

>   --config-file /etc/neutron/plugins/ml2/ml2_conf.iniupgrade head" neutron

出现OK成功。

重启nova-api服务

[root@controllerneutron]# systemctl restart openstack-nova-api.service

设置开机启动并启动neutron服务。

#systemctl enable neutron-server.service \

  neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \

  neutron-metadata-agent.service

#systemctl enable neutron-l3-agent.service

#systemctl start neutron-server.service \

  neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \

  neutron-metadata-agent.service

#systemctlstart neutron-l3-agent.service

配置完控制节点,配置compute节点的网络服务。

[root@compute~]# yum install -y openstack-neutron-linuxbridge ebtables ipset

修改neutron配置文件

[root@compute~]# vim /etc/neutron/neutron.conf

[DEFAULT]

......

rpc_backend= rabbit

auth_strategy= keystone

[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

[oslo_concurrency]

.....

lock_path= /var/lib/neutron/tmp

[oslo_messaging_rabbit]

......

rabbit_host= controller

rabbit_userid= openstack

rabbit_password= openstack

修改linux桥接代理的配置文件

[root@compute~]# vim /etc/neutron/plugins/ml2/linuxbridge.ini

[linux_bridge]

......

physical_interface_mappings= provider:eno33554984

[securitygroup]

.....

firewall_driver= neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

enable_security_group= true

[vxlan]

......

enable_vxlan= true

local_ip= 192.168.10.201 #内网IP

l2_population= true

修改novaneutron模块的配置信息。

[root@compute~]# vim /etc/nova/nova.conf

[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

重启compute服务。

#systemctlrestart openstack-nova-compute.service

设置neutron开机启动。

#systemctlenable neutron-linuxbridge-agent.service

#systemctl start neutron-linuxbridge-agent.service

验证neutron服务,出现5个笑脸说明OK。

[root@controller~]# neutron agent-list

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

|id           | agent_type   | host      | availability_zone | alive | admin_state_up | binary        |

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

|7476f2bf-    | DHCP agent   | controller | nova              | :-)  | True           | neutron-dhcp- |

|dced-44d6-8a |              |            |                   |       |                | agent         |

|a0-2aab951b1 |              |            |                   |       |                |               |

|961          |              |            |                   |       |                |               |

|82319909-a4b | Linux bridge | compute   |                   | :-)   | True           | neutron-      |

|2-47d9-ae42- | agent        |            |                   |       |                | linuxbridge-  |

|288282ad3972 |              |            |                   |       |                | agent         |

|b465f93f-    | Metadata     | controller |                   | :-)   | True          | neutron-      |

|90c3-4cde-   | agent        |            |                   |       |                | metadata-     |

|949c-        |              |            |                   |       |                | agent         |

|47c205a74f65 |              |            |                   |       |                |               |

|e662d628-327 | L3 agent     | controller| nova              | :-)   | True           | neutron-l3-ag |

|b-4695-92e1- |              |            |                   |       |                | ent           |

|76da38806b05 |              |            |                   |       |                |               |

|fa84105f-d49 | Linux bridge | controller |                   | :-)   | True           | neutron-      |

|7-4b64-9a53- | agent        |            |                   |       |                | linuxbridge-  |

|3b1f074e459e |              |            |                   |       |                | agent         |

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

[root@compute~]# neutron ext-list

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

|alias                     | name                                          |

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

|default-subnetpools       | DefaultSubnetpools                           |

|network-ip-availability   | Network IPAvailability                       |

|network_availability_zone | Network Availability Zone                     |

|auto-allocated-topology   | AutoAllocated Topology Services             |

|ext-gw-mode               | Neutron L3Configurable external gateway mode |

|binding                   | PortBinding                                  |

|agent                     | agent                                         |

|subnet_allocation         | SubnetAllocation                             |

|l3_agent_scheduler        | L3 AgentScheduler                            |

|tag                       | Tagsupport                                  |

|external-net              | Neutronexternal network                      |

|net-mtu     

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
一、前言 Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和BUG跟踪系统,例如 Perforce 、SVN、CVS、TD等等。这种 Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线
一、Ansible介绍 1 、简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory
挂载概念简述 : 根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“ 挂载 ”,此目录即为“ 挂载点 ”,解除此关联关系的过程称之为“ 卸载 ” 1.挂载:根文件系统外通过关联至根文件系统上的某个目录来实现访问 2.挂载点:mount_point,用于作为另一个文件系统的访问入口; (1) 事先存在; (2) 应该使用未被或不会被其它进程使用到的目录; (3) 挂载点下原有的文件将会被隐藏; 挂载与卸载 挂载方法 :mount DECE MOUNT_
mha下载地址,需要翻墙 https://code.google.com/p/mysql-master-ha/ 管理软件 mha4mysql-manager-0.52-0.noarch.rpm 节点软件 mha4mysql-node-0.52-0.noarch.rpm 环境介绍Centos6.7X64192.168.30.210monitor192.168.30.211db1(master)192.168.30.212db2(备master)192.168.30.213db3192.168.30.214d
我在刚开始接触IO重定向时,经历了由懂到不懂然后了然的过程,当然现在的我也不可能说对于IO重定向就彻底懂了,只是在解决一些问题或实现某些结果时不会因为IO重定向的问题而迷惑了。 什么叫IO重定向? 为了解释这个问题,我们要先明白什么叫IO,什么叫做程序的数据流。 什么叫IO? 在Linux或计算机领域IO指的是信息的输入和输出。 在Linux中可用于输入的设备:文件(Linux中一切皆文件) 具体包括:键盘设备、文件系统上的常规文件、网卡等。 在Linux中用于输出的设备:文件 具体包括:显示器、文件系统
认真的测试过网上的大多数文章和版本,真正能一次性测试通过的文章太少了,需要反复的推敲,反复的查阅资料,才能真正的测试成功,所以,在此背景下,总结了Rsync,加上自己的理解分享出来; 1、 原理篇 Rsync,故名思议,是一个远程数据同步工具,可以镜像整个目录树和文件系统,也可以保持源文件的权限,时间和软硬链接,可以优化数据,文件重复数据的删除,也可以在LAN/WAN之间快速的同步多台主机的数据,这主要得益于Rsync的压缩和Rsync的核心算法,其算法,是本地和远程两台主机之间的文件达到同步并保持一致,

运维监控平台之ganglia - 2016-08-29 17:08:10

1、ganglia简介 Ganglia 是一款为 HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以 监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的 gmond 守护进程来采 集 CPU 、内存、硬盘利用率、 I/O 负载、网络流量情况等方面的数据,然后汇总到 gmetad 守护进程下,使用 rrdtool 存储数据,最后将历史数据以曲线方式通过 PHP 页面呈现。 Ganglia 的特点如下: 良好的扩展性,分层架构设计能够适应大规模服务器集群的需要 负载开销低,支持高并发 广
本文主要介绍zabbix在linux及windows下客户端的安装,网卡流量监控配置。 一、linux客户端安装 1. 编译软件 #useraddzabbix-s/sbin/nologin-M#./configure--prefix=/usr/local/zabbix-agent--enable-agent#makemakeinstall 2. 修改 agetn 配置 Server=127.0.0.1,192.168.115.31#本机即是agent和server127.0.0.1地址不可删除Server
通过定时执行python脚本,可以实现定期批量访问网站,如果发现网站打不开,第一时间发邮件到管理员邮箱进行预警 这里用的是python3.5 需要安装的插件: smtplib:发邮件需要用到 pycurl:访问网站时会需要用到 linecache:在读取txt网站清单时需要用到 具体思路: python程序从txt里面批量读取到网站的信息,通过Curl.py模拟浏览器去访问网站,并且把访问的结果写入到以自己的网站名称-日期.txt格式的文件中记录;有几种情况: 1、如果发现打不开了,直接发邮件提示网站已经
vSphere部署系列之09——HA和DRS群集管理 群集(Cluster)是将多台物理主机组织起来,群集管理其中所有主机的资源,形成一个大的资源池。群集中的所有的虚拟机可在池中的任意主机上自由移动,并且群集可做到快速扩容和HA故障冗余。群集的前提条件是要有共享存储,所有虚拟机及其配置文件必须驻留在共享存储器上。 在前面的博文章节中,已搭建了比较基础的实验环境,实现了vCenter对ESXi主机的管理,网络管理、共享存储管理。在这种情况下,各物理主机之间的计算资源(CPU、内存)是完全独立的,在某台主机出