openstack-M版安装
有需要搭建相同版本的需要安装包的小伙伴可以评论留言!!!
一.准备两台centos7虚拟机,配置最低2C4G
控制:10.0.0.11
计算:10.0.0.31
二.修改主机名,配置ip,配置hosts,ping网关百度
三.配置yum源
上传openstack包到opt下并解压,上传到计算节点31
控制计算都要配置yum源
开机自动挂光驱
find /etc/yum.repos.d/ -name “CentOS” -exec mv {} /tmp ;
将其他测rpm文件剪切到tmp下
安装基础服务:
1.安装ntp服务,控制节点服务端,计算节点客户端
住配置文件 /etc/chrony.conf(控制)
同步阿里云的服务器,也可配置自己的时间服务器,服务器123456都行
允许计算节点的服务器来访问控制节点的时间服务
重启服务
systemctl restart chronyd
计算节点时间同步设置
vim /etc/chrony.conf
同步控制节点服务
systemctl restart chronyd
验证:两边同时执行date命令,看时间是否同步
#####################################################
如果用了上面的安装包,此步骤不用操作
公网安装步骤,私网不用
Openstack的包是发行版的一部分
mirrors.aliyun.com
安装公网的openstack源,才能安装openstack
进入阿里云官网,
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
注:
openstack源的来源
执行 yum makecache
完成后执行yum list|grep openstack
就能看到yum的仓库包
如果要安装o版,就执行
Yum install centos-release-openstack-ocata.noarch -y
#############################################################
安装openstack客户端和openstack-selinux(所有节点都要执行)
执行yum -y install python-openstackclient openstack-selinux
安装mariadb(控制节点安装)
yum -y install mariadb mariadb-server python2-PyMySQL
前两个数据库,后面一个python连接数据库模块包,python2代表版本为2
python -V查看python版本
在控制节点上将以下命令写入/etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 10.0.0.11 #监听ip地址:本地
default-storage-engine = innodb #默认存储引擎
innodb_file_per_table #为每一张表独立表空间文件
max_connections = 4096 #最大连接数
collation-server = utf8_general_ci
character-set-server = utf8
#最后两行,用默认字符集utf8
systemctl start mariadb启动服务
systemctl enable mariadb 开机自起
mysql_secure_installation 执行数据库安全初始化,不执行的话,同步数据库,创表将会报错
需要输入当前用户的root密码,空的直接回车
设置root密码,可设置,可不设(不安全)
移除匿名用户y
禁止root远程登录 y
移除test数据库和访问他的权限 y
重载权限表y
消息队列(服务与服务之间通信)(控制节点)
安装rabbitmq并创建用户
yum -y install rabbitmq-server
systemctl start rabbitmq-server.server
systemctl enable rabbitmq-server.server
rabbitmqctl add_user openstack RABBIT_PASS 添加用户,配置密码
rabbitmqctl set_permissions openstack “." ".” ".*"授权,可读可写,可配置
5672给客户端,集群之间同步数据25672
rabbitmq-plugins enable rabbitmq_management 启用rabbitmq管理插件,为后面做监控准备
验证:默认账户密码guest/guest
安装memcached,缓存token(控制节点)
yum -y install python-memcached memcached
sed -i ‘s#127.0.0.1#10.0.0.11#g’ /etc/sysconfig/memcached 监听10.0.0.11,不监听其他服务器服务访问
systemctl restart memcached.service e
systemctl enable memcached.service
参考文档:openstack从入门到放弃site:blog 51cto.com
Heat----编排服务
Cellometer-----监控计费
Keystone 认证服务
功能:认证管理,授权管理,服务目录
认证:账户密码
授权:授权管理
服务目录:相当于电话本。存放一些服务的url
Keystone 认证方式:uuid,PKI ,Fernet
都是生成一段随机字符串的方法
Openstack服务安装的通用步骤:
1.创库授权
2.在keystone创建用户,关联角色
3.在keystone上创建服务,注册api(访问服务的url)(服务目录)
4.安装服务相关的软件包
5.修改配置文件(数据库的连接信息,rabbitmq连接信息,keystone认证授权信息)
6.其他配置
7.同步数据库,创建表
安装keystone
创库授权
create database keystone; 创建一个名为keystone的数据库
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@‘localhost’ IDENTIFIED BY ‘KEYSTONE_DBPASS’; 为数据库创建了一个用户keystone,密码为KEYSTONE_DBPASS,并允许本机能够访问
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@‘%’ IDENTIFIED BY ‘KEYSTONE_DBPASS’; 允许其他服务器访问keystone这个数据库
直接exit 退出
安装keystone软件包
yum -y install openstack-keystone httpd mod_wsgi
修改配置文件
备份配置文件,过滤出去除以空格,#开头的字段,将他写入配置文件
修改主配置文件
yum install openstack-utils -y 安装openstack-utils工具
openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token ADMIN_TOKEN
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet
进入主配置文件查看
[DEFAULT]
admin_token = ADMIN_TOKEN
#通过管理员token来创建账户密码
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
#数据库的连接信息 协议://连接数据库账户密码:连接的主机:数据库名称
[token]
provider = fernet
#令牌的提供者
检验md5值:
同步数据库
su -s /bin/sh -c “keystone-manage db_sync” keystone
#意思是切换到keystone用户下,使用/bin/sh 执行keystone-manage db_sync命令
mysql keystone -e ‘show tables;’ 进入keystone数据库执行show tables命令,可以查看到表格数据
初始化fernet
执行keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone 将多出一个文件夹
配置httpd
echo “ServerName controller” >>/etc/httpd/conf/httpd.conf 让httpd启动的更快
写httpd主配置文件
echo ’ Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
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>
’ >>/etc/httpd/conf.d/wsgi-keystone.conf
启动服务
systemctl enable httpd.service
systemctl restart httpd.service
创建服务和注册api
环境变量
export OS_TOKEN=ADMIN_TOKEN #配置认证令牌
export OS_URL=http://controller:35357/v3 #配置端点url
export OS_IDENTITY_API_VERSION=3 #配置认证api版本
检验:查看环境变量
openstack service create
–name keystone --description “OpenStack Identity” identity
#创建keystone服务,描述为OpenStack Identity openstack认证服务,最后关联到identity
openstack endpoint create --region RegionOne
identity public http://controller:5000/v3
#endpoint:访问接口,普通用户
openstack endpoint create --region RegionOne
identity internal http://controller:5000/v3
#endpoint:访问接口,普通用户
openstack endpoint create --region RegionOne
identity admin http://controller:35357/v3
#endpoint:访问接口,admin管理员用户
创建域,项目(租户),用户及角色
域:地域,区域
项目(租户):
用户:项目的子账户
角色:用户的权限
openstack domain create --description “Default Domain” default
#创建域:描述为Default Domain,默认域
openstack project create --domain default
–description “Admin Project” admin
#创建项目admin
openstack user create --domain default
–password ADMIN_PASS admin
#创建用户admin,指定admin密码为ADMIN_PASS
openstack role create admin
#创建角色admin
openstack role add --project admin --user admin admin
#在admin的项目上,给admin用户赋予admin角色
openstack project create --domain default
–description “Service Project” service
#service项目里面放系统用户的帐号,网络,计算节点,存储等等
清空环境变量(unset±----或者登出)
环境变量配置
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_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
验证
将环境变量写入配置文件,防止登出自动取消环境变量,文件写在root目录下面
vim admin-openrc
每次登陆先启用环境变量
source admin-openrc
查看环境变量
验证:
设置开机自启环境变量在~目录下面
vim .bashrc
验证:
先退出登录,重登
验证keystone是否正常的命令
openstack token issue
安装glance镜像服务
作用:允许用户上传下载查看有哪些镜像列表
Glance服务的两个组件:
glance-api
接收镜像API的调用,诸如镜像发现、恢复、存储。响应外部的api调用请求
glance-registry
存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。(简说:修改镜像的属性)
进入数据库
mysql
创建glance数据库
CREATE DATABASE glance;
对glance数据库授权,
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘localhost’
IDENTIFIED BY ‘GLANCE_DBPASS’;
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘%’
IDENTIFIED BY ‘GLANCE_DBPASS’;
在keystone创建glance用户关联角色
openstack user create --domain default --password GLANCE_DBPASS glance
openstack role add --project service --user glance admin
验证:
查看keystone里面相应的表格
mysql keystone -e “show tables;”|grep role
mysql keystone -e “show tables;”|grep user
mysql keystone -e “show tables;”|grep project
在keystone上创建服务和注册api
创建glance服务实体
openstack service create --name glance
–description “OpenStack Image” image
创建镜像服务的api端点
openstack endpoint create --region RegionOne
image public http://controller:9292
openstack endpoint create --region RegionOne
image internal http://controller:9292
openstack endpoint create --region RegionOne
image admin http://controller:9292
安装服务相应的软件包
yum -y install openstack-glance
编辑配置文件/etc/glance/glance-api.conf
cp -p /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak#先对主配置文件备份
grep -Ev ‘^$|#’ /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf去掉空白和#字符
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@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_DBPASS
[paste_deploy]
flavor = keystone
#在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问(让glance使用keystone做认证)
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
#在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置
编辑配置文件/etc/glance/glance-registry.conf
cp -p /etc/glance/glance-registry.conf /etc/glance/glance-registry.conf.bak#备份配置文件
grep -Ev ‘^$|#’ /etc/glance/glance-registry.conf.bak >/etc/glance/glance-registry.conf去掉主配置文件的空白和#字符
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@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_DBPASS
[paste_deploy]
flavor = keystone
#在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问
验证:md5值
同步数据库
su -s /bin/sh -c “glance-manage db_sync” glance
mysql glance -e "show tables;"查看是否生成表文件
启动服务;开机自启
systemctl enable openstack-glance-api.service
openstack-glance-registry.service
systemctl start openstack-glance-api.service
openstack-glance-registry.service
验证:
重点关注9292端口,原因:注册api时绑定的端口是9292
上传一个镜像
openstack image create “cirros”
–file cirros-0.3.4-x86_64-disk.img
–disk-format qcow2 --container-format bare
–public
上传镜像所有人可见
如果要删除镜像,先删数据库信息,再删除物理文件。
Nova計算服务(交流通过消息队列,实现实时通讯)
Nova計算服务(除了nova-compute在计算节点上,其他都在控制节点上)
nova-api :接受并相应所有的计算服务请求,管理虚拟机(云主机)生命周期
nova-compute(多个宿主机):真正管理虚拟机(创建虚拟机,nova-compute调用libvirt)
nova-scheduler:nova调度器(挑选出最合适的nova-compute来创建虚拟机,当nova-compute起来后,自动在数据库中注册他的信息,然后每隔一分钟汇报一次nova-compute宿主机上所剩下的cpu,内存,磁盘)
nova-conductor:帮助nova-compute代理修改数据库中的虚拟机状态(帮助nova-compute链接数据库,所有nova-compute上不需要填写数据库的链接信息)
nova-network:早期openstack版本管理虚拟机网络(已弃用,neutron)
nova-consoleauth和nova-novncproxy:nova-consoleauth(做验证,有它才能通过vnc来管理vm)web版的vnc来直接操作云主机
novncproxy:web版vnc客户端
nova-api-metadata:接受来自虚拟机发送的元数据请求(配合neutron-metadata-agent,来实现虚拟机的定制化操作)
安装和配置
控制节点上:
1.数据库创库授权
CREATE DATABASE nova_api;
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@‘localhost’
IDENTIFIED BY ‘NOVA_DBPASS’;
GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@‘%’
IDENTIFIED BY ‘NOVA_DBPASS’;
GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@‘localhost’
IDENTIFIED BY ‘NOVA_DBPASS’;
GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@‘%’
IDENTIFIED BY ‘NOVA_DBPASS’;
2.在keystone创建系统用户(glance,nova,neutron)关联角色,创建一个nova用户,并配置密码,将这个用户与admin这个角色进行绑定
openstack user create --domain default
–password NOVA_PASS nova
openstack role add --project service --user nova admin
3.在keystone上创建服务和注册api,(public公共,internal内部,admin管理员。服务目录)
openstack service create --name nova
–description “OpenStack Compute” compute
openstack endpoint create --region RegionOne
compute public http://controller:8774/v2.1/%(tenant_id)s
openstack endpoint create --region RegionOne
compute internal http://controller:8774/v2.1/%(tenant_id)s
openstack endpoint create --region RegionOne
compute admin http://controller:8774/v2.1/%(tenant_id)s
4.安装服务响应的软件包
yum install openstack-nova-api openstack-nova-conductor
openstack-nova-console openstack-nova-novncproxy
openstack-nova-scheduler -y
在python环境中,python包路径在/lib/python2.7/site-packages/
配置主配置文件/etc/nova/nova.conf
cp -p /etc/nova/nova.conf /etc/nova/nova.conf.bak#备份配置文件
grep -Ev ‘^$|#’ /etc/nova/nova.conf.bak >/etc/nova/nova.conf去掉主配置文件的空白和#字符
在[DEFAULT]
部分,只启用计算和元数据API:
[DEFAULT]
enabled_apis = osapi_compute,metadata
在[api_database]
和[database]
部分,配置数据库的连接:
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
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 = nova
password = NOVA_PASS
在 [DEFAULT 部分,配置my_ip
来使用控制节点的管理接口的IP 地址
[DEFAULT]
my_ip = 10.0.0.11
在 [DEFAULT] 部分,使能 Networking 服务:
[DEFAULT]
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
在python环境中,python包路径在/lib/python2.7/site-packages/,默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用nova.virt.firewall.NoopFirewallDriver
防火墙服务来禁用掉计算服务内置的防火墙服务
在[vnc]
部分,配置VNC代理使用控制节点的管理接口IP地址 :
[vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance] 区域,配置镜像服务 API 的位置:
[glance]
api_servers = http://controller:9292
在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
#防止重复执行脚本,当脚本未执行完成时
配置完成后校验md5值
同步compute数据库
su -s /bin/sh -c “nova-manage api_db sync” nova
su -s /bin/sh -c “nova-manage db sync” nova
验证
启动服务,开机自启
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 service-list
请求反馈nova-api,所以nova-api是启动的,检测nova-novncproxy是否启动,查看他的端口和进程
计算节点配置:
nova-compute调用libvirtd来创建虚拟机
yum -y install openstack-nova-compute 安装nova-compute包
yum -y install openstack-utils.noarch 安装后可使用openstack-config命令(可不安装)
cp -p /etc/nova/nova.conf /etc/nova/nova.conf.bak#备份配置文件
grep -Ev ‘^$|#’ /etc/nova/nova.conf.bak > /etc/nova/nova.conf去掉主配置文件的空白和#字符
配置主配置文件
vim /etc/nova/nova.conf
配置RabbitMQ
消息队列的连接
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
配置认证服务访问:
[DEFAULT]
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 = nova
password = NOVA_PASS
配置 my_ip
[DEFAULT]
my_ip = 10.0.0.31
在 [DEFAULT] 部分,使能 Networking 服务
[DEFAULT]
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
#缺省情况下,Compute 使用内置的防火墙服务。由于 Networking 包含了防火墙服务,所以你必须通过使用 nova.virt.firewall.NoopFirewallDriver 来去除 Compute 内置的防火墙服务。
在[vnc]
部分,启用并配置远程控制台访问:
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
在 [glance] 区域,配置镜像服务 API 的位置:
[glance]
api_servers = http://controller:9292
在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
确定您的计算节点是否支持虚拟机的硬件加速。
egrep -c ‘(vmx|svm)’ /proc/cpuinfo
如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。
如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM
在 /etc/nova/nova.conf 文件的 [libvirt] 区域做出如下的编辑:
[libvirt]
virt_type = qemu
完成配置,验证
md5sum /etc/nova/nova.conf
启动服务
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
控制节点(10.0.0.11)执行 nova service-list,成功出现nova-compute状态信息
(采用消息队列,自动加人,自动注册服务,以后加人计算节点同样也是自动加入,无需其他配置)
neutron网络服务
neutron-server 端口(9696) api:接受和响应外部的网络管理请求
neutron-linuxbridge-agent:负责创建桥接网卡
neutron-dhcp-agent: 负责分配ip
neutron-metadata-agent:配合nova-metadata-api实现虚拟机的定制操作
L3-agent:实现三层网络vxlan(网络层)
#只有完成L3,才能完成后面的一些技术,如LBaas(load balance)负载均衡即服务
fwaas防火墙即服务,vpnaas vpn即服务。等等
安装neutron(控制节点)
1.数据库创库授权
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’@‘localhost’
IDENTIFIED BY ‘NEUTRON_DBPASS’;
GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’@‘%’
IDENTIFIED BY ‘NEUTRON_DBPASS’;
2.在keystone创建系统用户(glance,nova,neutron)关联角色
openstack user create --domain default --password NEUTRON_PASS neutron
openstack role add --project service --user neutron admin #将neutron加入admin角色
3.在keystone上创建服务和注册api
openstack service create --name neutron
–description “OpenStack Networking” network
openstack endpoint create --region RegionOne
network public http://controller:9696
openstack endpoint create --region RegionOne
network internal http://controller:9696
openstack endpoint create --region RegionOne
network admin http://controller:9696
4.装包
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
ebtables 类似于iptables
#解:网络虚拟化机制对比
linuxbridge:出现时间早,特别成熟,功能较少,稳定,配置简单
openvswitch(ovs):出现时间晚,功能比较多,稳定性不如linuxbridge,配置复杂
5.修改主配置文件(公共网络)
备份主配置文件
cp -p /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev ‘^KaTeX parse error: Expected 'EOF', got '#' at position 2: |#̲' /etc/neutron/…|#’ /etc/neutron/plugins/ml2/ml2_conf.ini.bak >/etc/neutron/plugins/ml2/ml2_conf.ini
cp -p /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
grep -Ev ‘^KaTeX parse error: Expected 'EOF', got '#' at position 2: |#̲' /etc/neutron/…|#’ /etc/neutron/dhcp_agent.ini.bak >/etc/neutron/dhcp_agent.ini
cp -p /etc/neutron/metadata_agent.ini /etc/neutron/metadata_agent.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/metadata_agent.ini.bak >/etc/neutron/metadata_agent.ini
编辑/etc/neutron/neutron.conf
文件并完成如下操作:
在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
使用你设置的数据库密码替换 NEUTRON_DBPASS 。
在[DEFAULT]
部分,启用ML2插件并禁用其他插件:
[DEFAULT]
core_plugin = ml2
service_plugins =
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
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_PASS
在[DEFAULT]
和[nova]
部分,配置网络服务来通知计算节点的网络拓扑变化:
[DEFAULT]
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
[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_PASS
在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
编辑/etc/neutron/plugins/ml2/ml2_conf.ini
文件并完成以下操作:
在[ml2]
部分,启用flat和VLAN网络:
[ml2]
type_drivers = flat,vlan
在[ml2]
部分,禁用私有网络:
[ml2]
tenant_network_types =
在[ml2]
部分,启用Linuxbridge机制:
[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
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件并且完成以下操作:
在[linux_bridge]
部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge]
physical_interface_mappings = provider:ens33 #网卡名多少就写多少
将PUBLIC_INTERFACE_NAME
替换为底层的物理公共网络接口。请查看:ref:environment-networking for more information。
在[vxlan]
部分,禁止VXLAN覆盖网络:
[vxlan]
enable_vxlan = False
在 [securitygroup]
部分,启用安全组并配置 Linuxbridge iptables firewall driver:
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
编辑/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
配置元数据代理¶
The :term:metadata agent <Metadata agent>
负责提供配置信息,例如:访问实例的凭证
编辑/etc/neutron/metadata_agent.ini
文件并完成以下操作:
在[DEFAULT]
部分,配置元数据主机以及共享密码:
[DEFAULT]
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
为计算服务配置网络服务¶
编辑/etc/nova/nova.conf
文件并完成以下操作:
在[neutron]
部分,配置访问参数,启用元数据代理并设置密码:
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_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
开机自启
systemctl enable neutron-server.service
neutron-linuxbridge-agent.service neutron-dhcp-agent.service
neutron-metadata-agent.service
systemctl start neutron-server.service
neutron-linuxbridge-agent.service neutron-dhcp-agent.service
neutron-metadata-agent.service
#对于网络选项2,同样启用layer-3服务并设置其随系统自启动
#systemctl enable neutron-l3-agent.service
#systemctl start neutron-l3-agent.service
检查neutron服务验证:
neutron安装(计算节点)
1.安装组件
yum install openstack-neutron-linuxbridge ebtables ipset -y
ipset批量控制iptables
openstack-neutron-linuxbridge创建桥接网卡
2.备份主配置文件
cp -p /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev ‘^KaTeX parse error: Expected 'EOF', got '#' at position 2: |#̲' /etc/neutron/…|#’ /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak >/etc/neutron/plugins/ml2/linuxbridge_agent.ini
3. 编辑/etc/neutron/neutron.conf
文件并完成如下操作:
在[database]
部分,注释所有connection
项,因为计算节点不直接访问数据库。
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
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_PASS
在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
配置公共网络
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件并且完成以下操作:
在[linux_bridge]
部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge]
physical_interface_mappings = provider:ens33
将PUBLIC_INTERFACE_NAME
替换为底层的物理公共网络接口。请查看:ref:environment-networking for more information。
在[vxlan]
部分,禁止VXLAN覆盖网络:
[vxlan]
enable_vxlan = False
在 [securitygroup]
部分,启用安全组并配置 Linuxbridge iptables firewall driver:
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
为计算节点配置网络服务¶
编辑/etc/nova/nova.conf
文件并完成下面的操作:
在[neutron]
部分,配置访问参数:
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
完成安装
重启计算服务:
systemctl restart openstack-nova-compute.service
启动Linuxbridge代理并配置它开机自启动:
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
效验:
控制节点执行,可查看到计算节点的访问连接,正常,完成
安装仪表盘horizon web界面
#一般情况下面安装在控制节点·,为了表现一个服务可以处于一台服务器上,这次安装在计算节点上,其实最主要的原因是控制节点资源不够了
#以下配置为安装在控制节点配置
################################################
安装软件包:
yum install openstack-dashboard -y
编辑文件 /etc/openstack-dashboard/local_settings 并完成如下动作:
在 controller 节点上配置仪表盘以使用 OpenStack 服务:
OPENSTACK_HOST = “controller”
允许所有主机访问仪表板:
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
http://%s:5000/v3等价于http://controller:5000/v3
启用对域的支持
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 = “TIME_ZONE”
#使用恰当的时区标识替换TIME_ZONE
。更多信息,参考 list of time zones。
############################################################
重启web服务器以及会话存储服务:
systemctl restart httpd.service memcached.service
修改加入wsgi参数(解决bug)
vim /etc/httpd/conf.d/openstack-dashboard.conf
配置完成后,重启服务
检测
更改用户密码时,环境变量中的密码也要更改
创建和启用一台云主机(控制)
创建网络
neutron net-create --shared --provider:physical_network provider
–provider:network_type flat lcp
创建子网
neutron subnet-create --name lcpsxr
–allocation-pool start=10.0.0.101,end=10.0.0.250
–dns-nameserver 114.114.114.114 --gateway 10.0.0.2
lcp 10.0.0.0/24
2,创建云主机硬件配置方案
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
#最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的m1.nano
规格的主机。若单纯为了测试的目的,请使用m1.nano
规格的主机来加载CirrOS镜像
查看允许创建使用的虚拟机规格,可以自行设置
3.创建秘钥对
ssh-keygen -q -N “” -f ~/.ssh/id_rsa
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
验证公钥的添加:
openstack keypair list
4.创建安全组规则
openstack security group rule create --proto icmp default
openstack security group rule create --proto tcp --dst-port 22 default
查看网络id
启动实例
openstack server create --flavor m1.nano --image cirros
–nic net-id=b1d85620-12de-4260-ae6e-c4869e638805 --security-group default
–key-name mykey lcp
#网络id每个人都不一样
查看,验证
虚拟机存放位置
远程监控虚拟机
修复bug,新版不会出现,虚拟机远程无法配置,(计算节点)
vim /etc/nova/nova.conf
[libvirt]
cpu_mode = none
virt_type = qemu
重启nova-computer和实例
能输入账户密码即可
到这里openstack基本就已经搭建完成了。