系统版本及环境
Openstack介绍
Openstack安装前准备工作
参考文档:https://docs.openstack.org/newton/zh_CN/install-guide-rdo/
1,启用Openstack库(两个节点都需要 新加的计算节点都需要安装一下三个否则在后面yum安装的时候会找不到包名)
在CentOS中, ``extras``仓库提供用于启用 OpenStack 仓库的RPM包。 CentOS 默认启用``extras``仓库,因此你可以直接安装用于启用OpenStack仓库的包。
yum install centos-release-openstack-newton
2,安装 OpenStack 客户端(两个节点都需要)
yum install python-openstackclient
3,RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux
包实现对OpenStack服务的安全策略进行自动管理:(两个节点都需要)
yum install openstack-selinux
4,安装数据库服务 (node1上面需要安装以下都是)
yum install mariadb mariadb-server python2-PyMySQL
数据库配置/etc/my.cnf.d/openstack.cnf
在[mysqld]中,设置“bind-address”值为控制节点的管理网络IP地址以是的其他节点可以通过管理网络访问访问数据库。设置其他关键字来设置一些有用的选项和UTF-8编码:
[mysqld]
bind-address = 192.168.0.112
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
PS:数据库默认的超时时间较长,后期需要修改
启动MySQL并且设置自启动
systemctl enable mariadb.service
systemctl start mariadb.service
设置MySQL安全
mysql_secure_installation
5,在控制节点安装消息队列 参考 https://docs.openstack.org/newton/zh_CN/install-guide-rdo/environment-messaging.html
yum install rabbitmq-server
启动消息队列并且设置自启动
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
添加openstack用户
rabbitmqctl add_user openstack openstack
PS:这里最后那个openstack是密码
修改主机名以后需要重启主机才能设置openstack用户否则报错
给openstack用户设置权限
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
有一个web界面监控的插件
使用命令列出所以插件
rabbitmq-plugins list
其中rabbitmq_management用于web界面管理
启动
rabbitmq-plugins enable rabbitmq_management
默认启动端口为15672
lsof -i:15672
在浏览器输入地址加端口号登陆http://192.168.0.112:15672/
默认用户名和密码均为guest
PS:使用火狐浏览器登陆,使用其他可能会出现空白页面
6,身份认证包(在数据库服务操作)
先决条件
创建数据库(进入MySQL命令行操作)
create database keystone;
create database glance;
create database nova;
create database nova_api;
create database neutron;
create database cinder;
授权
grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone';
grant all on keystone.* to 'keystone'@'%' identified by 'keystone';
grant all on glance.* to 'glance'@'localhost' identified by 'glance';
grant all on glance.* to 'glance'@'%' identified by 'glance';
grant all on nova.* to 'nova'@'localhost' identified by 'nova';
grant all on nova.* to 'nova'@'%' identified by 'nova';
grant all on nova_api.* to 'nova'@'localhost' identified by 'nova';
grant all on nova_api.* to 'nova'@'%' identified by 'nova';
grant all on neutron.* to 'neutron'@'localhost' identified by 'neutron';
grant all on neutron.* to 'neutron'@'%' identified by 'neutron';
grant all on cinder.* to 'cinder'@'%' identified by 'cinder';
grant all on cinder.* to 'cinder'@'localhost' identified by 'cinder';
验证
安装keystone
yum install openstack-keystone httpd mod_wsgi
配置文件
vim /etc/keystone/keystone.conf
在[database]下修改(640行左右)
connection = mysql+pymysql://keystone:keystone@192.168.0.112/keystone
初始化数据库认证库(使用的是keystone用户)
su -s /bin/sh -c "keystone-manage db_sync" keystone
检查初始化数据库是否正确
mysql -ukeystone -pkeystone -e "use keystone;show tables;"
有表显示表示数据库初始化正常
修改memcache配置
vim /etc/keystone/keystone.conf
模块[memcache]下面修改
servers = 192.168.0.112:11211
安装memcache
yum -y install memcached python-memcached
启动memcache
systemctl start memcached
systemctl status memcached
systemctl enable memcached
默认memcache配置在文件
cat /etc/sysconfig/memcached 下
修改一下把127.0.0.1修改成本机IP地址
修改令牌提供者(配置文件还是/etc/keystone/keystone.conf)
在[token]部分,配置Fernet UUID令牌的提供者。
provider = fernet
driver = memcache
查看配置
初始化Fernet key
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
在/etc/keystone下面生成这两个配置文件
初始化标准认证服务(admin为admin用户的密码修改对应的服务器ip地址)
keystone-manage bootstrap --bootstrap-password admin \
--bootstrap-admin-url http://192.168.0.112:35357/v3/ \
--bootstrap-internal-url http://192.168.0.112:35357/v3/ \
--bootstrap-public-url http://192.168.0.112:5000/v3/ \
--bootstrap-region-id RegionOne
查看MySQL数据库的keystone库可以看到刚刚命令创建的信息
配置Apache Http服务
a,编辑``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 选项为控制节点:
ServerName 192.168.0.112:80
b,创建一个链接到``/usr/share/keystone/wsgi-keystone.conf``文件
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
PS:该配置作用为apache和python进行通信
查看配置(监听了两个端口5000和35357)要记住每一个服务的端口
c,启动httpd
systemctl enable httpd
systemctl start httpd
启动httpd及启动了keystone
验证
d,配置admin用户
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.0.112:35357/v3
export OS_IDENTITY_API_VERSION=3
用户名admin 密码admin 项目admin 域default(相当于公有云的区域)admin用的端口是35357 版本是3
验证(类似于刚刚在数据库select)
openstack user list
openstack project list
openstack service list
openstack endpoint list
8,创建域、项目、用户和角色
a,本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建``service``项目
openstack project create --domain default \
--description "Service Project" service
查看项目是否创建成功(nova 等放在这个项目里面其实也可以放在admin这样是模块化清晰)
b,常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo
项目和用户。
创建demo项目
openstack project create --domain default \
--description "Demo Project" demo
创建demo用户(密码输入demo)
openstack user create --domain default \
--password-prompt demo
创建user角色(这个角色是keystone的)
openstack role create user
添加 user``角色到 ``demo
项目和用户(把demo用户添加到demo项目并且赋予user角色)
openstack role add --project demo --user demo user
创建其他用户
创建glance用户把用户添加到service项目并且赋予admin角色(密码glance)
openstack user create --domain default --password-prompt glance
openstack role add --project service --user glance admin
创建nove用户用户把用户添加到service项目并且赋予admin角色(密码nova)
openstack user create --domain default --password-prompt nova
openstack role add --project demo --user nova admin
创建neutron用户用户把用户添加到service项目并且赋予admin角色(密码neutron)
openstack user create --domain default --password-prompt neutron
openstack role add --project demo --user neutron admin
创建cinder用户用户把用户添加到service项目并且赋予admin角色(密码cinder)
openstack user create --domain default --password-prompt cinder
openstack role add --project demo --user cinder admin
验证(用户有6个用户有3个项目有3个角色_memer_不是我创建的可能是系统默认的)
PS:假如创建错误了使用类似openstack user delete ID命令删除
验证操作
撤销临时环境变量``OS_AUTH_URL``和``OS_PASSWORD``
unset OS_AUTH_URL OS_PASSWORD
作为 admin
用户,请求认证令牌:
openstack --os-auth-url http://192.168.0.112:35357/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
输入admin的密码admin后如果出现以下代表验证成功
如果输入密码错误报以下提示
使用demo用户验证(端口是5000项目是demo用户的demo)
openstack --os-auth-url http://192.168.0.112:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name demo --os-username demo token issue
创建 OpenStack 客户端环境脚本
编辑admin-openstack文档添加以下内容
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://192.168.0.112:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
编辑文件 demo-openrc
并添加如下内容
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://192.168.0.112:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
验证
source admin-openstack
openstack token issue
source demo-openstack
openstack token issue
7,镜像包
PS:简单来说,本指南描述了使用`file``作为后端配置镜像服务,能够上传并存储在一个托管镜像服务的控制节点目录中。默认情况下,这个目录是 /var/lib/glance/images/。
在你继续后面的操作之前,请确保控制节点上的这个目录下至少有几个G的可用空间。请记住,因为对于控制节点来说一般“文件”后端都是本地的,部署多glance节点的场景不是很常见。
创建glance库 及glance用户并授权(上面已完成)
添加 admin
角色到 glance
用户和 service
项目上(上面已完成)
创建``glance``服务实体(描述可以自定义后面的image是类型必须写对)
openstack service create --name glance \
--description "OpenStack Image" image
PS:以上执行可能会报错
执行以下命令后在执行
source admin-openstack
创建镜像服务的 API 端点:
openstack endpoint create --region RegionOne \
image public http://192.168.0.112:9292
openstack endpoint create --region RegionOne \
image internal http://192.168.0.112:9292
openstack endpoint create --region RegionOne \
image admin http://192.168.0.112:9292
验证
openstack endpoint list
安装glance
yum install openstack-glance
修改配置文件
编辑文件 /etc/glance/glance-api.conf
在 [database]
部分,配置数据库访问
connection = mysql+pymysql://glance:glance@192.168.0.112/glance
修改配置文件vim /etc/glance/glance-registry.conf
在[database]
connection = mysql+pymysql://glance:glance@192.168.0.112/glance
同步数据库
su -s /bin/sh -c "glance-manage db_sync" glance
PS:同步数据库有警告可以忽略
查看
mysql -uroot -plym5401061 -e 'use glance;show tables;'
/etc/glance/glance-api.conf在 [keystone_authtoken]
和 [paste_deploy]
部分,配置认证服务访问
[keystone_authtoken]
auth_uri = http://192.168.0.112:5000
auth_url = http://192.168.0.112:35357
memcached_servers = 192.168.0.112:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor = keystone
/etc/glance/glance-api.conf在 [glance_store]
部分,配置本地文件系统存储和镜像文件位置:
(默认配置文件注释打开即可)
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
/etc/glance/glance-registry.conf[keystone_authtoken]
和 [paste_deploy]
部分,配置认证服务访问
[keystone_authtoken]
auth_uri = http://192.168.0.112:5000
auth_url = http://192.168.0.112:35357
memcached_servers = 192.168.0.112:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor = keystone
检查配置
启动并且设置开机启动
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
确认镜像的上传并验证属性(没有返回就是正确)
openstack image list
官方验证方法
source admin-openstack
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
openstack image list
8,nova包
首先安装控制节点
yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler
编辑``/etc/nova/nova.conf``文件并完成下面的操作:
在``[DEFAULT]``部分,只启用计算和元数据API:
enabled_apis = osapi_compute,metadata
在``[api_database]``和``[database]``部分,配置数据库的连接:
[api_database]
connection = mysql+pymysql://nova:nova@192.168.0.112/nova_api
[database]
connection = mysql+pymysql://nova:nova@192.168.0.112/nova
在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:
[DEFAULT]
transport_url=rabbit://openstack:openstack@192.168.0.112
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://192.168.0.112:5000
auth_url = http://192.168.0.112:35357
memcached_servers = 192.168.0.112:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova
PS:官方文档的my_ip不配置了
在 ``[DEFAULT]``部分,启用网络服务支持
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
PS:默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用``nova.virt.firewall.NoopFirewallDriver``防火墙服务来禁用掉计算服务内置的防火墙服务
在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.0.112
在 [glance]
区域,配置镜像服务 API 的位置:
[glance]
api_servers=http://192.168.0.112:9292
在 [oslo_concurrency]
部分,配置锁路径:
[oslo_concurrency]
lock_path=/var/lib/nova/tmp
查看所有修改的配置
同步Compute 数据库
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova
PS:api的没有提示,db sync有警告
验证
mysql -h 192.168.0.112 -u nova -pnova -e 'use nova;show tables;'
启动并且设置开机自启动
systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
创建nova服务实体
openstack service create --name nova \
--description "OpenStack Compute" compute
创建 Compute 服务 API 端点 :
openstack endpoint create --region RegionOne \
compute public http://192.168.0.112:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne \
compute internal http://192.168.0.112:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne \
compute admin http://192.168.0.112:8774/v2.1/%\(tenant_id\)s
验证
openstack host list
PS:这个命令失败提示如下
因为前面没有给nova用户添加admin角色,解决方法
openstack role add --project service --user nova admin
验证成功
看到3个服务状态是up
以上就安装完控制节点了,下面安装计算节点
在node2上面安装
安装软件包
yum install openstack-nova-compute
修改配置文件,直接把控制节点的nova.conf拷贝过来,先把数据库配置删除
修改[vnc]
enabled=true
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.0.115
xvpvncproxy_base_url=http://192.168.0.112:6080/console
PS:计算节点多只有vncserver_proxyclient_address配置不一样,其他一样
vncserver_proxyclient_address为计算节点IP地址
确定您的计算节点是否支持虚拟机的硬件加速(结果不为0即可)
egrep -c '(vmx|svm)' /proc/cpuinfo
修改配置在[libvirt]下
[libvirt]
virt_type=kvm
启动计算服务及其依赖,并将其配置为随系统自动启动:
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
启动后会自动注册
在控制节点验证
openstack compute service list
PS:需要在安装前确认主机名并且永不修改
9,网络包
在控制节点上面安装
先按照官方文档安装提供者网络
安装组件
yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables
编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作
在 [database]
部分,配置数据库访问:
[database]
connection = mysql+pymysql://neutron:neutron@192.168.0.112/neutron
在``[DEFAULT]``部分,启用ML2插件并禁用其他插件:
[DEFAULT]
core_plugin = ml2
service_plugins =
在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:
transport_url = rabbit://openstack:openstack@192.168.0.112
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://192.168.0.112:5000
auth_url = http://192.168.0.112:35357
memcached_servers = 192.168.0.112:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = neutron
在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化
[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
[nova]
auth_url = http://192.168.0.112:35357
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = nova
password = nova
在 [oslo_concurrency]
部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
配置 Modular Layer 2 (ML2) 插件
编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作
在``[ml2]``部分,启用flat和VLAN网络:
[ml2]
...
type_drivers = flat,vlan,local
PS:官方文档没有local我自己加上去的,如果没有会导致后面启动失败neutron-server查看日志如下
tail -f /var/log/neutron/server.log
在``[ml2]``部分,禁用私有网络:
[ml2]
...
mechanism_drivers = linuxbridge
在``[ml2]`` 部分,启用端口安全扩展驱动:
[ml2]
...
extension_drivers = port_security
在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络:
[ml2_type_flat]
...
flat_networks = provider
在 ``[securitygroup]``部分,启用 ipset 增加安全组的方便性:
[securitygroup]
...
enable_ipset = True
配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
- 编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
- 在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge]physical_interface_mappings = provider:eth0
PS:后面eth0是公共网络接口名称
在``[vxlan]``部分,禁止VXLAN覆盖网络:
[vxlan]
enable_vxlan = False
在 ``[securitygroup]``部分,启用安全组并配置 Linux 桥接 iptables 防火墙驱动:
[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置DHCP代理
编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作
在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
配置元数据代理
编辑``/etc/neutron/metadata_agent.ini``文件并完成以下操作:
在``[DEFAULT]`` 部分,配置元数据主机以及共享密码:
[DEFAULT]
...
nova_metadata_ip = 192.168.0.112
metadata_proxy_shared_secret = oldboy
配置计算服务来使用网络服务
编辑``/etc/nova/nova.conf``文件并完成以下操作:
在``[neutron]``部分,配置访问参数,启用元数据代理并设置密码:
[neutron]
url = http://192.168.0.112:9696
auth_url = http://192.168.0.112: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 = oldboy
PS:metadata_proxy_shared_secret是上面配置的密码
改完需要重启
完成安装
网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini``指向ML2插件配置文件
/etc/neutron/plugins/ml2/ml2_conf.ini``。如果超链接不存在,使用下面的命令创建它:
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
同步数据库
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
同步有信息,最后有确定或者ok
重启计算API 服务:
systemctl restart openstack-nova-api.service
当系统启动时,启动 Networking 服务并配置它启动。
对于两种网络选项1:
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
PS:官方文档的对于网络选项2不执行
创建``neutron``服务实体
openstack service create --name neutron \
--description "OpenStack Networking" network
检查
创建网络服务API端点
openstack endpoint create --region RegionOne \
network public http://192.168.0.112:9696
openstack endpoint create --region RegionOne \
network internal http://192.168.0.112:9696
openstack endpoint create --region RegionOne \
network admin http://192.168.0.112:9696
验证
添加``admin`` 角色到``neutron`` 用户:
openstack role add --project service --user neutron admin
验证网络节点
neutron agent-list
看到三个笑脸就表示控制节点正常
在node2安装计算节点
安装组件
yum install openstack-neutron-linuxbridge ebtables ipset
编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作
在``[database]`` 部分,注释所有``connection`` 项,因为计算节点不直接访问数据库。
在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限
[DEFAULT]
...
transport_url = rabbit://openstack:openstack@192.168.0.112
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://192.168.0.112:5000
auth_url = http://192.168.0.112:35357
memcached_servers = 192.168.0.112: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
过滤查看一下
配置Linuxbridge代理
把控制节点的/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件复制过来即可
配置计算服务来使用网络服务
编辑``/etc/nova/nova.conf``文件并完成下面的操作
在``[neutron]`` 部分,配置访问参数:
[neutron]
url = http://192.168.0.112:9696
auth_url = http://192.168.0.112:35357
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
PS:再安装其他计算节点直接把配置文件拷贝过去即可
完成安装
重启计算服务
systemctl restart openstack-nova-compute.service
启动Linuxbridge代理并配置它开机自启动
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
验证,在控制节点
neutron agent-list
PS:看到4个笑脸代表neutron控制节点和计算节点均配置完毕
PS:安装完创建虚拟机之前使用命令检查,如果正常基本创建虚拟机没有问题
neutron agent-list
nova service-list
检查环境
查看端口
3306 MySQL
11211 Memcache
9292 9191 glance
15672 rabbitmqctl的web界面
53 DNS
6080 VNC
8774 8775 nova
5000 keystone
5672 35357 keystone admin
9696
创建提供者网络
在控制节点上,加载 admin
凭证来获取管理员能执行的命令访问权限:
source admin-openstack
openstack network create --share --external \
--provider-physical-network provider \
--provider-network-type flat provider
share创建共享网络 网络类型单一扁平网络
查看
neutron net-list
子网是空的
创建子网
openstack subnet create --network provider \
--allocation-pool start=192.168.0.200,end=192.168.0.210 \
--dns-nameserver 192.168.0.1 --gateway 192.168.0.1 \
--subnet-range 192.168.0.0/24 provider-subet
分配的地址是从192.168.0.200-192.168.0.210 dns和网关都是192.168.0.1 子网地址是192.168.0.0 子网名称是provider-subet
检查
neutron subnet-list
创建m1.nano类型
默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的``m1.nano``规格的主机。若单纯为了测试的目的,请使用``m1.nano``规格的主机来加载CirrOS镜像
使用的是admin的环境变量
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
生成一个键值对
生成和添加秘钥对:
source demo-openstack
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
PS:环境变量是demo的,以下使用的都是demo的环境变量,千万不要搞错,否则创建会失败,或者创建以后错误。
验证公钥的添加:
openstack keypair list
增加安全组规则
默认情况下, ``default``安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,我们推荐至少允许ICMP (ping) 和安全shell(SSH)规则。
openstack security group rule create --proto icmp default
允许安全 shell (SSH) 的访问
openstack security group rule create --proto tcp --dst-port 22 default
启动一个实例
列出可用类型:
openstack flavor list
列出可用镜像
列出可用网络
openstack network list
列出可用的安全组:
openstack security group list
启动实例
openstack server create --flavor m1.nano --image cirros --nic net-id=1cef260f-9e0b-416e-be71-80aeb3e344df --security-group default --key-name mykey provider-instance
PS:net-id为刚刚列出的网络id
查看刚刚创建的实例
openstack server list
创建完毕在控制和计算节点会自动生成一个名称一样的桥接网卡
计算节点的
获取你势力的 Virtual Network Computing (VNC) 会话URL并从web浏览器访问它
openstack console url show provider-instance
PS:使用ip地址替换127.0.0.1
使用火狐浏览器
用户名和密码有提示
验证能否ping通网关和公网
ping 192.168.0.1
ping www.baidu.com
10,安装配置Horizon
Dashboard(horizon)是一个web接口,使得云平台管理员以及用户可以管理不同的Openstack资源以及服务。
这个部署示例使用的是 Apache Web 服务器。
安装在node2上面(如果安装在控制节点可能会导致包冲突)两台机器的时间必须完全一致
安装软件包
yum install openstack-dashboard
编辑文件 /etc/openstack-dashboard/local_settings
并完成如下动作
在 controller
节点上配置仪表盘以使用 OpenStack 服务:(这里是控制节点代表是是keystone的ip地址)
OPENSTACK_HOST = "192.168.0.112"
允许所有主机访问仪表板:
ALLOWED_HOSTS = ['*', ]
配置 memcached
会话存储服务(官方文档有本次未配置):
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
启用第3版认证API:
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
启用对域的支持(共有云有用途,私有云一般一个域即可)
只有openstack v3版本支持域v2版本不正常
查看默认域使用命令openstack domain list
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
配置API版本:
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}
通过仪表盘创建用户时的默认域配置为 default
:
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"
通过仪表盘创建的用户默认角色配置为 user
:
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
如果您选择网络参数1,禁用支持3层网络服务
OPENSTACK_NEUTRON_NETWORK = {
...
'enable_router': False,
'enable_quotas': False,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False,
'enable_fip_topology_check': False,
}
可以选择性地配置时区:
TIME_ZONE = "Asia/Shanghai"
重启web服务器以及会话存储服务(因为本次未配置memcached所以不用启动memcached):
systemctl restart httpd.service memcached.service
使用火狐登陆http://192.168.0.115/dashboard/
默认域default 用户名admin 密码admin
admin可以看到所有主机,可以使用demo(密码demo)登陆只能查看demo用户自己创建的主机
子网的网络地址不够用可以通过以下方法添加(使用admin登陆)
可以通过数据库表查看
学习:SOA 消息队列