OpenStack之Ocata单控部署测试

本着学以致用的原则,学习到新的东西一定要亲自去实践操作,就像别人回来给你描述那里的风景是多么多么美好,你如果不亲自去走一遭看一遍是体会不到的,要不然你大爷永远还是你大爷!P话!^_^O(∩_∩)O哈哈~~~~~

(仅供参考)

简介:

Ocata与以往版本主要区别在于引入了cell(单元格),cell v2 自 Newton 版本引入 ,Ocata 版本变为必要组件,以后默认部署都会初始化一个单 cell 的架构。

OpenStack 在控制平面上的性能瓶颈主要在 Message Queue 和 Database 。尤其是 Message Queue , 随着计算节点的增加,性能变的越来越差,因为openstack里每个资源和接口都是通过消息队列来通信的

引入Cells功能主要是以解决OpenStack集群的扩展性问题。

与以往版本部署区别主要在nova 这块,会多出nova_cell 数据库的创建,以及placement参与调度服务的配置等。以下开始部署测试:

一、环境准备

1. 前提准备

三台虚拟机配置至少CPU 4c MEM 4G的虚拟机(控制节点 + 计算几点 + Cinder节点)

安装CentOS7.2系统(最小化安装, + 关闭防火墙 + 关闭selinux  + 主机互信 + hosts文件)

# systemctl stop firewalld.service

# systemctl disable firewalld.service

配置使用公司O 版内部源

# curl -O 172.30.120.147/repo.files/ocataCentOS74.x86_64.repo

安装相关基础工具

# yum install net-tools wget vim ntpdate bash-completion -y

2. 更改hostname

# hostnamectl set-hostname controller1

然后每个节点配置/etc/hosts文件如下

172.30.126.4 controller1

172.30.126.5 cinder

172.30.126.6 compute1

3. 安装NTP同步系统时间或者chrony

# ntpdate cn.pool.ntp.org

然后查看运行date命令查看时间是否同步成功,注意,openstack是分布式架构的,每个节点都不能有时间差!另外,也把这个命令加到开机启动里面去

# echo "ntpdate cn.pool.ntp.org" >> /etc/rc.d/rc.local

# chmod +x /etc/rc.d/rc.local

#vi /etc/ntp.conf

#ntpq -p

二、 搭建Mariadb

1. 安装mariadb数据库

#yum install mariadb-server mariadb-client

2. 配置mariadb

# vim /etc/my.cnf.d/mariadb-server.cnf

在mysqld区块添加如下内容:

[mysqld]

default-storage-engine = innodb

innodb_file_per_table

collation-server = utf8_general_ci

init-connect = ‘SET NAMES utf8‘

character-set-server = utf8

bind-address = 172.30.126.4

3、启动数据库及设置mariadb开机启动

# systemctl enable mariadb.service

# systemctl restart mariadb.service

# systemctl status mariadb.service

# systemctl list-unit-files |grep mariadb.service

4. 配置mariadb,给mariadb设置密码

# mysql_secure_installation

三、安装RabbitMQ

1. 每个节点都安装erlang

# yum install -y erlang

2. 每个节点都安装RabbitMQ

# yum install -y rabbitmq-server

3. 每个节点都启动rabbitmq及设置开机启动

# systemctl enable rabbitmq-server.service

# systemctl restart rabbitmq-server.service

# systemctl status rabbitmq-server.service

# systemctl list-unit-files |grep rabbitmq-server.service

  1. 创建openstack

# rabbitmqctl add_user openstack passw0rd

5. 将openstack用户赋予权限

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

# rabbitmqctl set_user_tags openstack administrator

# rabbitmqctl list_users

6. 看下监听端口 rabbitmq用的是5672端口

# netstat -ntlp |grep 5672

7. 查看RabbitMQ插件

# /usr/lib/rabbitmq/bin/rabbitmq-plugins list

8. 打开RabbitMQ相关插件

# /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management mochiweb webmachine rabbitmq_web_dispatch

amqp_client rabbitmq_management_agent

打开相关插件后,重启下rabbitmq服务

systemctl restart rabbitmq-server

浏览器输入:http://172.30.126.4:15672 默认用户名密码:guest/guest

通过这个界面,可以能很直观的看到rabbitmq的运行和负载情况

9. 查看rabbitmq状态

用浏览器登录http://172.30.126.4:15672 输入openstack/passw0rd也可以查看状态信息:

四、安装配置Keystone

1、创建keystone数据库

MariaDB [(none)]>create database keystone;

2、创建数据库keystone用户&root用户及赋予权限

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

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

MariaDB [(none)]>flush privileges;

3、安装keystone和memcached

# yum -y install openstack-keystone httpd mod_wsgi python-openstackclient memcached python-memcached openstack-utils

4、启动memcache服务并设置开机自启动

# systemctl enable memcached.service

# systemctl restart memcached.service

# systemctl status memcached.service

5、配置/etc/keystone/keystone.conf文件

# cp /etc/keystone/keystone.conf  /etc/keystone/keystone.conf.bak   做好备份

# >/etc/keystone/keystone.conf 清空源配置文件 从新写入

#

openstack-config --set /etc/keystone/keystone.conf DEFAULT transport_url rabbit://openstack:[email protected]

openstack-config --set /etc/keystone/keystone.conf database connection mysql://keystone:[email protected]/keystone

openstack-config --set /etc/keystone/keystone.conf cache backend oslo_cache.memcache_pool

openstack-config --set /etc/keystone/keystone.conf cache enabled true

openstack-config --set /etc/keystone/keystone.conf cache memcache_servers controller1:11211

openstack-config --set /etc/keystone/keystone.conf memcache servers controller1:11211

openstack-config --set /etc/keystone/keystone.conf token expiration 3600

openstack-config --set /etc/keystone/keystone.conf token provider fernet

6、配置httpd.conf文件&memcached文件     配置前先看看原文件

# sed -i "s/#ServerName www.example.com:80/ServerName controller/" /etc/httpd/conf/httpd.conf

# sed -i ‘s/OPTIONS*.*/OPTIONS="-l 127.0.0.1,::1,172.30.126.4"/‘ /etc/sysconfig/memcached

7、配置keystone与httpd结合

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

8、数据库同步

# su -s /bin/sh -c "keystone-manage db_sync" keystone  同步完一定要查看keystone 数据库是否有表存在

有说明同步成功

9、初始化fernet

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

# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

10、启动httpd,并设置httpd开机启动

# systemctl enable httpd.service

# systemctl restart httpd.service

# systemctl status httpd.service

# systemctl list-unit-files |grep httpd.service

11、创建 admin 用户角色

keystone-manage bootstrap \

>  --bootstrap-password passw0rd \

>  --bootstrap-username admin \

>  --bootstrap-project-name admin \

>  --bootstrap-role-name admin \

>  --bootstrap-service-name keystone \

>  --bootstrap-region-id RegionOne \

>  --bootstrap-admin-url http://controller1:35357/v3 \

>  --bootstrap-internal-url http://controller1:35357/v3 \

>  --bootstrap-public-url http://controller1:5000/v3

验证一下:

# openstack project list --os-username admin --os-project-name admin --os-user-domain-id default --os-project-domain-id

default --os-identity-api-version 3 --os-auth-url http://controller1:5000 --os-password passw0rd

12. 创建admin用户环境变量,创建/root/admin-openrc 文件并写入如下内容:

# vim /root/admin-openrc

添加以下内容:

export OS_USER_DOMAIN_ID=default

export OS_PROJECT_DOMAIN_ID=default

export OS_USERNAME=admin

export OS_PROJECT_NAME=admin

export OS_PASSWORD=passw0rd

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

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

13、创建service项目

# source /root/admin-openrc

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

14、创建demo项目

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

15、创建demo用户

# openstack user create --domain default demo --password passw0rd

注意:passw0rd为demo用户密码

16、创建user角色将demo用户赋予user角色

# openstack role create user

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

17、验证keystone

# unset OS_TOKEN OS_URL

# openstack --os-auth-url http://controller1:35357/v3 --os-project-domain-name default --os-user-domain-name default --

os-project-name admin --os-username admin token issue --os-password passw0rd

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

os-project-name demo --os-username demo token issue --os-password passw0rd

五、安装配置glance

1、创建glance数据库

MariaDB [(none)]>CREATE DATABASE glance;

2、创建数据库用户并赋予权限

MariaDB [(none)]>GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘localhost‘ IDENTIFIED BY ‘passw0rd‘;

MariaDB [(none)]>GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘%‘ IDENTIFIED BY ‘passw0rd‘;

3、创建glance用户及赋予admin权限

# source /root/admin-openrc

# openstack user create --domain default glance --password passw0rd

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

4、创建image服务

# openstack service create --name glance --description "OpenStack Image service" image

5、创建glance的endpoint 分别为 public  internal  admin

# openstack endpoint create --region RegionOne image public http://controller1:9292

# openstack endpoint create --region RegionOne image internal http://controller1:9292

# openstack endpoint create --region RegionOne image admin http://controller1:9292

6、安装glance相关rpm包

# yum install openstack-glance -y

7、修改glance配置文件/etc/glance/glance-api.conf

# cp /etc/glance/glance-api.conf  /etc/glance/glance-api.conf.bak

# >/etc/glance/glance-api.conf

#openstack-config --set /etc/glance/glance-api.conf DEFAULT transport_url rabbit://openstack:[email protected]

openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:[email protected]/glance

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller1:5000

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller1:35357

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers controller1:11211

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name default

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name default

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password passw0rd

openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service

openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone

openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http

openstack-config --set /etc/glance/glance-api.conf glance_store default_store file

openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/

8、修改glance配置文件/etc/glance/glance-registry.conf:

# cp /etc/glance/glance-registry.conf /etc/glance/glance-registry.conf.bak

# >/etc/glance/glance-registry.conf

配置如下:

[DEFAULT]

transport_url = rabbit://openstack:[email protected]

[database]

connection = mysql+pymysql://glance:[email protected]/glance

[keystone_authtoken]

auth_uri = http://controller1:5000

auth_url = http://controller1:35357

memcached_servers = controller1:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = passw0rd

[paste_deploy]

flavor = keystone

9、同步glance数据库

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

10、启动glance及设置开机启动

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

# systemctl restart openstack-glance-api.service openstack-glance-registry.service

# systemctl status openstack-glance-api.service openstack-glance-registry.service

12、上传个小镜像到glance

# source /root/admin-openrc

# glance image-create --name "cirros-0.3.4-x86_64" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --containerformat bare --visibility public --progress

查看镜像列表:

# glance image-list

六、安装配置nova

1、创建nova数据库

MariaDB [(none)]> create database nova;

MariaDB [(none)]> create database nova_api;

MariaDB [(none)]> create database nova_cell0;

2、创建数据库用户并赋予权限

grant all privileges on nova.* to ‘nova‘@‘localhost‘ identified by ‘passw0rd‘;

MariaDB [(none)]>grant all privileges on nova.* to ‘nova‘@‘%‘ identified by ‘passw0rd‘;

MariaDB [(none)]> grant all privileges on nova_api.* to ‘nova‘@‘localhost‘ identified by ‘passw0rd‘;

MariaDB [(none)]> grant all privileges on nova_api.* to ‘nova‘@‘%‘ identified by ‘passw0rd‘;

MariaDB [(none)]> grant all privileges on nova_cell0.* to ‘nova‘@‘localhost‘ identified by ‘passw0rd‘;

MariaDB [(none)]> grant all privileges on nova_cell0.* to ‘nova‘@‘%‘ identified by ‘passw0rd‘;

MariaDB [(none)]> grant all privileges on *.* to ‘root‘@‘controller1‘ identified by ‘passw0rd‘;

注:查看授权列表信息:

MariaDB [(none)]> select distinct concat(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) as query from mysql.user;

取消之前某个授权MariaDB [(none)]> revoke alter on *.* to ‘root‘@‘controller1‘ identified by‘passw0rd‘;

3、创建nova用户及赋予admin权限

# source /root/admin-openrc

# openstack user create --domain default nova --password passw0rd

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

4、创建computer服务

# openstack service create --name nova --description "OpenStack Compute" compute

5、创建nova的endpoint

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

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

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

6、安装nova相关软件

# yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-cert openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler

7、配置nova的配置文件/etc/nova/nova.conf

# cp /etc/nova/nova.conf /etc/nova/nova.conf.bak

# >/etc/nova/nova.conf

#vi /etc/nova/nova.conf

[DEFAULT]

enabled_apis = osapi_compute,metadata

auth_strategy = keystone

my_ip = 172.30.126.4

use_neutron = True

firewall_driver = nova.virt.firewall.NoopFirewallDriver

transport_url = rabbit://openstack:[email protected]

[database]

connection = mysql+pymysql://nova:[email protected]/nova

[api_database]

connection = mysql+pymysql://nova:[email protected]/nova_api

[scheduler]

discover_hosts_in_cells_interval = -1

[keystone_authtoken]

auth_uri = http://controller1:5000

auth_url = http://controller1:35357

memcached_servers = controller1:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = passw0rd

service_token_roles_required = True

[vnc]

vncserver_listen = 172.30.126.4

vncserver_proxyclient_address = 172.30.126.4

[glance]

api_servers = http://controller1:9292

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

8、设置cell(单元格)

同步下nova数据库

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

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

设置cell_v2关联上创建好的数据库nova_cell0

# nova-manage cell_v2 map_cell0 --database_connection mysql+pymysql://root:[email protected]/nova_cell0

创建一个常规cell,名字叫cell1,这个单元格里面将会包含计算节点

# nova-manage cell_v2 create_cell --verbose --name cell1 --database_connection

mysql+pymysql://root:[email protected]/nova_cell0 --transport-url rabbit://openstack:[email protected]:5672/

检查部署是否正常,后面再执行

# nova-status upgrade check   (如果还没有计算节点检查肯定会报错)

创建和映射cell0,并将现有计算主机和实例映射到单元格中  最后在执行

# nova-manage cell_v2 simple_cell_setup   没有主机会报错

查看已经创建好的单元格列表

# nova-manage cell_v2 list_cells --verbose

注意,如果有新添加的计算节点,需要运行下面命令来发现,并且添加到单元格中

# nova-manage cell_v2 discover_hosts

可以在控制节点的nova.conf文件里[scheduler]模块下添加 discover_hosts_in_cells_interval=-1 这个设置来自动发现

9、安装placement

注意:从Ocata开始,需要安装配置placement参与nova调度了,不然虚拟机将无法创建!

# yum install -y openstack-nova-placement-api

创建placement用户和placement 服务

# openstack user create --domain default placement --password passw0rd

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

# openstack service create --name placement --description "OpenStack Placement" placement

创建placement的 endpoint

# openstack endpoint create --region RegionOne placement public http://controller1:8778

# openstack endpoint create --region RegionOne placement admin http://controller1:8778

# openstack endpoint create --region RegionOne placement internal http://controller1:8778

把placement 整合到nova.conf里

[placement]

auth_url = http://controller1:35357

memcached_servers = controller1:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = passw0rd

os_region_name = RegionOne

配置修改00-nova-placement-api.conf文件,这步没做创建虚拟机的时候会出现禁止访问资源的问题

# cd /etc/httpd/conf.d/

# cp 00-nova-placement-api.conf 00-nova-placement-api.conf.bak

# >00-nova-placement-api.conf

# vim 00-nova-placement-api.conf

添加以下内容:

Listen 8778

<VirtualHost *:8778>

WSGIProcessGroup nova-placement-api

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

WSGIDaemonProcess nova-placement-api processes=3 threads=1 user=nova group=nova

WSGIScriptAlias / /usr/bin/nova-placement-api

<Directory "/">

Order allow,deny

Allow from all

Require all granted

</Directory>

<IfVersion >= 2.4>

ErrorLogFormat "%M"

</IfVersion>

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

</VirtualHost>

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

<Location /nova-placement-api>

SetHandler wsgi-script

Options +ExecCGI

WSGIProcessGroup nova-placement-api

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

</Location>

重启下httpd服务

# systemctl restart httpd

检查下是否配置成功

# nova-status upgrade check

10、设置nova相关服务开机启动

# systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

启动nova服务:

# systemctl restart openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

查看nova服务:

# systemctl status openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

# systemctl list-unit-files |grep openstack-nova-*

11、验证nova服务

# unset OS_TOKEN OS_URL

# source /root/admin-openrc

# nova service-list

# openstack endpoint list 查看是否有结果正确输出

七、安装配置neutron

网络架构参考: 图片来源于网络宝哥的OCATA单控部署文档

1、创建neutron数据库

MariaDB [(none)]> create database neutron;

2、创建数据库用户并赋予权限

MariaDB [(none)]> grant all privileges on neutron.* to ‘neutron‘@‘localhost‘ identified by ‘passw0rd‘;

MariaDB [(none)]> grant all privileges on neutron.* to ‘neutron‘@‘%‘ identified by ‘passw0rd‘;

3、创建neutron用户及赋予admin权限

# source /root/admin-openrc

# openstack user create --domain default neutron --password passw0rd

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

4、创建network服务

# openstack service create --name neutron --description "OpenStack Networking" network

5、创建endpoint

# openstack endpoint create --region RegionOne network public http://controller1:9696

# openstack endpoint create --region RegionOne network internal http://controller1:9696

# openstack endpoint create --region RegionOne network admin http://controller1:9696

6、安装neutron相关软件

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

7、配置neutron配置文件/etc/neutron/neutron.conf

# cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak

# >/etc/neutron/neutron.conf

#/etc/neutron/neutron.conf

[DEFAULT]

core_plugin = ml2

service_plugins = router

allow_overlapping_ips = True

auth_strategy = keystone

transport_url = rabbit://openstack:[email protected]

notify_nova_on_port_status_changes = True

notify_nova_on_port_data_changes = True

[keystone_authtoken]

auth_uri = http://controller1:5000

auth_url = http://controller1:35357

memcached_servers = controller1:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = passw0rd

[database]

connection = mysql+pymysql://neutron:[email protected]/neutron

[nova]

auth_url = http://controller1:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = nova

password = passw0rd

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

8、配置/etc/neutron/plugins/ml2/ml2_conf.ini

[DEFAULT]

[ml2]

type_drivers = flat,vlan,vxlan

mechanism_drivers = linuxbridge,l2population

extension_drivers = port_security

tenant_network_types = vxlan

path_mtu = 1500

[ml2_type_flat]

flat_networks = provider

[ml2_type_geneve]

[ml2_type_gre]

[ml2_type_vlan]

[ml2_type_vxlan]

vni_ranges = 1:1000

[securitygroup]

enable_ipset = True

9、配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[DEFAULT]

debug = false

[agent]

prevent_arp_spoofing = True

[linux_bridge]

physical_interface_mappings = provider:eno50338560

[securitygroup]

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

[vxlan]

enable_vxlan = True

local_ip = 172.30.125.4

l2_population = True

注意eno50338560是定义的外网网卡,这里是125网段,做floating_ip 用

local_ip 定义的是隧道网络,vxLan下 vm-linuxbridge->vxlan ------tun-----vxlan->linuxbridge-vm

10、配置 /etc/neutron/l3_agent.ini

[DEFAULT]

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

external_network_bridge =

debug = false

11、配置/etc/neutron/dhcp_agent.ini

[DEFAULT]

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = True

verbose = True

debug = false

12、重新配置/etc/nova/nova.conf,配置这步的目的是让compute节点能使用上neutron网络

[neutron]

url = http://controller1:9696

auth_url = http://controller1:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

region_name = RegionOne

project_name = service

username = neutron

password = passw0rd

service_metadata_proxy = True

metadata_proxy_shared_secret = passw0rd

13、将dhcp-option-force=26,1450写入/etc/neutron/dnsmasq-neutron.conf

# echo "dhcp-option-force=26,1450" >/etc/neutron/dnsmasq-neutron.conf

14、配置/etc/neutron/metadata_agent.ini

[DEFAULT]

nova_metadata_ip = controller1

metadata_proxy_shared_secret = passw0rd

metadata_workers = 4

verbose = True

debug = false

nova_metadata_protocol = http

15、创建硬链接

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

16、同步数据库

# 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

17、重启nova服务,因为刚才改了nova.conf

# systemctl restart openstack-nova-api.service

# systemctl status openstack-nova-api.service

18、重启neutron服务并设置开机启动

# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service

# systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service

# systemctl status neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service

19、启动neutron-l3-agent.service并设置开机启动

# systemctl enable neutron-l3-agent.service

# systemctl restart neutron-l3-agent.service

# systemctl status neutron-l3-agent.service

20、执行验证

# source /root/admin-openrc

# neutron ext-list

# neutron agent-list

21、创建vxLan模式网络,让虚拟机能外出

A. 首先先执行环境变量

# source /root/admin-openrc

B. 创建flat模式的public网络,注意这个public是外出网络,必须是flat模式的

# neutron --debug net-create --shared provider --router:external True --provider:network_type flat --

provider:physical_network provider

# neutron subnet-create provider 172.30.125.0/24 --name provider-sub --allocation-pool start=172.30.125.7,end=172.30.125.14

-dns-nameserver 8.8.8.8 --gateway 172.30.125.254

C. 创建名为private的私有网络, 网络模式为vxlan

# neutron net-create private --provider:network_type vxlan --router:external False --shared

D. 创建名为private-subnet的私有网络子网,网段为192.168.1.0, 这个网段就是虚拟机获取的私有的IP地址

# neutron subnet-create private --name private-subnet --gateway 192.168.1.1 192.168.1.0/24

F. 创建路由,在界面上操作

路由名称随便命名,这里写"router1", 管理员状态,选择"上"(up),外部网络选择"provider"

八、安装Dashboard

1、安装dashboard相关软件包

# yum install openstack-dashboard -y

2、修改配置文件/etc/openstack-dashboard/local_settings

# vim /etc/openstack-dashboard/local_settings

3、启动dashboard服务并设置开机启动

# systemctl restart httpd.service memcached.service

# systemctl status httpd.service memcached.service

到此,Controller节点搭建完毕,打开浏览器即可访问horizon界面

九、安装配置cinder

1、创建数据库用户并赋予权限

MariaDB [(none)]> create database cinder;

MariaDB [(none)]>  grant all privileges on cinder.* to ‘cinder‘@‘localhost‘ identified by ‘passw0rd‘;

MariaDB [(none)]> grant all privileges on cinder.* to ‘cinder‘@‘%‘ identified by ‘passw0rd‘;

2、创建cinder用户并赋予admin权限

# source /root/admin-openrc

# openstack user create --domain default cinder --password passw0rd

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

3、创建volume服务

# openstack service create --name cinder --description "OpenStack Block Storage" volume

# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2

4、创建endpoint

# openstack endpoint create --region RegionOne volume public http://controller1:8776/v1/%\(tenant_id\)s

# openstack endpoint create --region RegionOne volume internal http://controller1:8776/v1/%\(tenant_id\)s

# openstack endpoint create --region RegionOne volume admin http://controller1:8776/v1/%\(tenant_id\)s

# openstack endpoint create --region RegionOne volumev2 public http://controller1:8776/v2/%\(tenant_id\)s

# openstack endpoint create --region RegionOne volumev2 internal http://controller1:8776/v2/%\(tenant_id\)s

# openstack endpoint create --region RegionOne volumev2 admin http://controller1:8776/v2/%\(tenant_id\)s

5、安装cinder相关服务

# yum install openstack-cinder -y

6、配置cinder配置文件

# cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak

# >/etc/cinder/cinder.conf

[DEFAULT]

my_ip = 172.30.126.4

auth_strategy = keystone

transport_url = rabbit://openstack:[email protected]

[database]

connection = mysql+pymysql://cinder:[email protected]/cinder

[keystone_authtoken]

auth_uri = http://controller1:5000

auth_url = http://controller1:35357

memcached_servers = controller1:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = passw0rd

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

7、上同步数据库

# su -s /bin/sh -c "cinder-manage db sync" cinder  #同步完一定要查看数据库中是否有表存在

8、在controller上启动cinder服务,并设置开机启动

# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service

# systemctl status openstack-cinder-api.service openstack-cinder-scheduler.service

9、

10、安装Cinder节点   从新创建一个节点

Cinder节点这里我们需要额外的添加一个硬盘(/dev/sdb)用作cinder的存储服务 (这一步是在cinder节点

操作的)

# yum install lvm2 -y

10、启动服务并设置为开机自启 (注意!这一步是在cinder节点操作的)

# systemctl enable lvm2-lvmetad.service

# systemctl start lvm2-lvmetad.service

# systemctl status lvm2-lvmetad.service

11、创建lvm, 这里的/dev/sdb就是额外添加的硬盘 (注意!这一步是在cinder节点操作的)

# fdisk -l

# pvcreate /dev/sdb

# vgcreate cinder-volumes /dev/sdb

12. 编辑存储节点lvm.conf文件 (注意!这一步是在cinder节点操作的)

# vim /etc/lvm/lvm.conf

在devices 下面添加 filter = [ "a/sda/", "a/sdb/", "r/.*/"] ,130行 ,如图:

然后重启下lvm2服务:

# systemctl restart lvm2-lvmetad.service

# systemctl status lvm2-lvmetad.service

13、安装openstack-cinder、targetcli (注意!这一步是在cinder节点操作的)

# yum install openstack-cinder openstack-utils targetcli python-keystone ntpdate -y

14、配置cinder配置文件 (注意!这一步是在cinder节点操作的)

# cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak

# >/etc/cinder/cinder.conf

[DEFAULT]

auth_strategy = keystone

my_ip = 172.30.126.5

enabled_backends = lvm

glance_api_servers = http://controller1:9292

glance_api_version = 2

enable_v1_api = True

enable_v2_api = True

enable_v3_api = True

storage_availability_zone = nova

default_availability_zone = nova

os_region_name = RegionOne

api_paste_config = /etc/cinder/api-paste.ini

transport_url = rabbit://openstack:[email protected]

[database]

connection = mysql+pymysql://cinder:[email protected]/cinder

[keystone_authtoken]

auth_uri = http://controller1:5000

auth_url = http://controller1:35357

memcached_servers = controller1:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = passw0rd

[lvm]

volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

volume_group = cinder-volumes

iscsi_protocol = iscsi

iscsi_helper = lioadm

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

15、启动openstack-cinder-volume和target并设置开机启动 (注意!这一步是在cinder节点操作的)

# systemctl enable openstack-cinder-volume.service target.service

# systemctl restart openstack-cinder-volume.service target.service

# systemctl status openstack-cinder-volume.service target.service

16、验证cinder服务是否正常

# source /root/admin-openrc

# cinder service-list

 

 

Compute节点部署

一、安装相关依赖包  (centos7.2系统会有几个包版本冲突,自行下载升级解决)

# yum install openstack-selinux python-openstackclient yum-plugin-priorities openstack-nova-compute openstack-utils

1. 配置nova.conf

# cp /etc/nova/nova.conf /etc/nova/nova.conf.bak

# >/etc/nova/nova.conf

# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone

# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 172.30.126.6

# openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True

# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver

# openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:[email protected]

# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller1:5000

# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller1:35357

# openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller1:11211

# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password

# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default

# openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default

# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service

# openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova

# openstack-config --set /etc/nova/nova.conf keystone_authtoken password passw0rd

# openstack-config --set /etc/nova/nova.conf placement auth_uri http://controller1:5000

# openstack-config --set /etc/nova/nova.conf placement auth_url http://controller1:35357

# openstack-config --set /etc/nova/nova.conf placement memcached_servers controller1:11211

# openstack-config --set /etc/nova/nova.conf placement auth_type password

# openstack-config --set /etc/nova/nova.conf placement project_domain_name default

# openstack-config --set /etc/nova/nova.conf placement user_domain_name default

# openstack-config --set /etc/nova/nova.conf placement project_name service

# openstack-config --set /etc/nova/nova.conf placement username nova

# openstack-config --set /etc/nova/nova.conf placement password passw0rd

# openstack-config --set /etc/nova/nova.conf placement os_region_name RegionOne

# openstack-config --set /etc/nova/nova.conf vnc enabled True

# openstack-config --set /etc/nova/nova.conf vnc keymap en-us

# openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0

# openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address 172.30.126.6

# openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://172.30.126.4:6080/vnc_auto.html

# openstack-config --set /etc/nova/nova.conf glance api_servers http://controller1:9292

# openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp

# openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu  #如果是物理机记得改为kvm

2018-1-9-20:39

2. 设置libvirtd.service 和openstack-nova-compute.service开机启动

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

# systemctl restart libvirtd.service openstack-nova-compute.service

# systemctl status libvirtd.service openstack-nova-compute.service

3. 到controller上执行验证

# source /root/admin-openrc

# openstack compute service list

二、安装Neutron

1. 安装相关软件包

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

2. 配置neutron.conf

# cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak

# >/etc/neutron/neutron.conf

# openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone

# openstack-config --set /etc/neutron/neutron.conf DEFAULT advertise_mtu True

# openstack-config --set /etc/neutron/neutron.conf DEFAULT dhcp_agents_per_network 2

# openstack-config --set /etc/neutron/neutron.conf DEFAULT control_exchange neutron

# openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_url http://controller1:8774/v2

# openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:[email protected]

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller1:5000

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller1:35357

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller1:11211

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron

# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password passw0rd

# openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp

3. 配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini

# openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings

provider:eno50338560

# openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan True

# openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 172.30.126.6

# openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population True

# openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group True

# openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver

neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

注意provider后面那个eno50338560网卡名做floating_ip 网卡的名称。

4. 配置nova.conf

# openstack-config --set /etc/nova/nova.conf neutron url http://controller1:9696

# openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller1:35357

# openstack-config --set /etc/nova/nova.conf neutron auth_type password

# openstack-config --set /etc/nova/nova.conf neutron project_domain_name default

# openstack-config --set /etc/nova/nova.conf neutron user_domain_name default

# openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne

# openstack-config --set /etc/nova/nova.conf neutron project_name service

# openstack-config --set /etc/nova/nova.conf neutron username neutron

# openstack-config --set /etc/nova/nova.conf neutron password passw0rd

5. 重启和enable相关服务

# systemctl restart libvirtd.service openstack-nova-compute.service

# systemctl enable neutron-linuxbridge-agent.service   计算节点只有neutron-agent服务

# systemctl restart neutron-linuxbridge-agent.service

# systemctl status libvirtd.service openstack-nova-compute.service neutron-linuxbridge-agent.service

三、计算节点结合Cinder

1.计算节点要是想用cinder,那么需要配置nova配置文件 (注意!这一步是在计算节点操作的)

# openstack-config --set /etc/nova/nova.conf cinder os_region_name RegionOne

# systemctl restart openstack-nova-compute.service

2.然后在controller上重启nova服务

# systemctl restart openstack-nova-api.service

# systemctl status openstack-nova-api.service

四. 在controler上执行验证

# source /root/admin-openrc

# neutron agent-list

# nova-manage cell_v2 discover_hosts

到此,Compute节点搭建完毕,运行nova host-list可以查看新加入的compute1节点

如果需要再添加另外一个compute节点,只要重复下第二步即可,记得把计算机名和IP地址改下。

创建配额命令

# openstack flavor create m1.tiny --id 1 --ram 512 --disk 1 --vcpus 1

# openstack flavor list

.

四,创建instance

thanks !

It’s over !!!

原文地址:https://www.cnblogs.com/lxqr/p/8496697.html

时间: 2024-11-08 20:08:16

OpenStack之Ocata单控部署测试的相关文章

一、最新Kafka单节点部署+测试 完整

每次学一个东西从基础的开始,循序渐进. 不急不躁,路还很长. 所有教程都是学习汪文君大神的kafka教程的. 一.部署 这里选的kafka版本是 0.10.2.1   下载连接 https://download.csdn.net/download/lsl13551615708/9881118 0.这里我是在自己虚拟机上安装的,虚拟机的安装可以搜一下.如果确实搜不到也不急的话可以留言.虚拟机安装好后记得桥接网络并挂载共享文件. 1.在/usr/local下创建如下路径 /usr/local/kaf

RDO单节点部署openstack (Havana)

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作.OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单.可大规模扩展.丰富.标准统一的云计算管理平台.OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成. OpenStack 是一个旨在为公共及私有云的建设与管理提供软件的开源项目.它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称I

Ubuntu下用devstack单节点部署Openstack

一.实验环境 本实验是在Vmware Workstation下创建的单台Ubuntu服务器版系统中,利用devstack部署的Openstack Pike版. 宿主机:win10 1803  8G内存  256G SSD 虚拟软件:Vmware Workstation 12.5.9 虚拟机系统:Ubuntu Server 16.04.5 LTS  参考博客: https://blog.csdn.net/pfztab/article/details/78632393 https://www.cnb

OpenStack Icehouse私有云实战部署

前言 相信你一定对"云主机"一词并不陌生吧,通过在Web页面选择所需主机配置,即可快速定制一台属于自己的虚拟主机,并实现登陆操作,大大节省了物理资源.但这一过程是如何实现的呢?本文带来OpenStack Icehouse私有云实战部署. OpenStack 简介 OpenStack是由网络主机服务商Rackspace和美国宇航局联合推出的一个开源项目,OpenStack的目标是为所有类型的云提供一个易于实施,可大规模扩展,且功能丰富的解决方案,任何公司或个人都可以搭建自己的云计算环境(

前端笔记——如何控制表单控件中的disabled

0.前言 本文主要说明如何使能或禁止表单控件.表单控件具有disabled属性,通过设置该属性可以禁止所有的input控件,input的更多属性请参考资料[1].下面就通过一个简单的例子说明如何设置和读取disabled属性. [示例页面--代码] <!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <meta charset="utf

Vue.js-----轻量高效的MVVM框架(七、表单控件绑定)

话不多说,先上完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="js/vue.js"></script> <title></title> </head> <body> <h2>表

Python django admin 替换表单控件

测试版本: Python 2.7 Django 1.6.2 models.py from django.db import models class Article(models.Model): title = models.CharField(u'文章标题', max_length=120, blank=True) summary = models.CharField(u'文章摘要', max_length=255, blank=True) admin.py from django.contr

Angular19 自定义表单控件

1 需求 当开发者需要一个特定的表单控件时就需要自己开发一个和默认提供的表单控件用法相似的控件来作为表单控件:自定义的表单控件必须考虑模型和视图之间的数据怎么进行交互 2 官方文档 -> 点击前往 Angular为开发者提供了ControlValueAccessor接口来辅助开发者构建自定义的表单控件,开发者只需要在自定义表单控件类中实现ControlValueAccessor接口中的方法就可以实现模型和视图之间的数据交互 interface ControlValueAccessor { wri

redis3.2.10单实例安装测试

redis3.2.10单实例安装测试 主要是实际使用环境中使用,为了方便快速部署,特意记录如下: # root用户 yum -y install make gcc-c++ cmake bison-devel ncurses-devel readline-devel libaio-devel perl libaio wget lrzsz vim mkdir -p /data useradd -d /data/redis -m redis mkdir -p /data/redis/applicati