OpenStack安装部署笔记

Posted on 2020-06-02 12:45  hrers  阅读(1894)  评论(2编辑  收藏  举报

=================================OpenStack安装部署笔记==================================

注:这里仅是自己学习和理解记录使用的,未做验证,大家不要以这个为准,非常抱歉!


0.环境准备
主机名 核数 内存 eth0(NAT模式) eth1(主机模式) eth2(主机模式)
controller 1u 2G 192.168.1.10
compute 4u 4G 192.168.1.11 172.26.1.11
neutron 4u 2G 192.168.1.12 172.26.1.12 10.0.0.12
block 2u 2G 192.168.1.13

系统:centos7.6-1806
1.初始化
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
关闭网络管理:
systemctl stop NetworkManager
systemctl disable NetworkManager
关闭selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce
更改yum源:
ll |grep '.repo$' |awk '{printf "mv %s %s.bak\n",$NF,$NF}' |bash #批量备份yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum clean all
yum update
重启:
reboot
设置主机名:
hostnamectl set-hostname controller
hostnamectl set-hostname compute
hostnamectl set-hostname nuetron
hostnamectl set-hostname block
设置hosts解析:
cat>>/etc/hosts<<EOF
controller 192.168.1.10
compute 192.168.1.11
nuetron 192.168.1.12
block 192.168.1.13
EOF

2.安装OpenStack预备包
1.安装yum-plugin-priorities包,防止高优先级软件被低优先级软件覆盖
yum -y install yum-plugin-priorities
2.安装epel扩展源
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.安装OpenStack源
#yum -y install http://rdo.fedorapeople.org/openstack-juno/rdo-release-juno.rpm
yum list |grep 'openstack'
yum -y install centos-release-openstack-queens.noarch
4.更新操作系统
yum upgrade
5.安装openstack-selinux自动管理selinux
yum -y install openstack-selinux

----------------------------------------------------------------------------
=============================keystone的部署安装=============================
***部署在controller节点***
3.controller节点安装数据库
1.安装mariadb软件包
yum -y install mariadb-server mariadb MySQL-python
2.编辑/etc/yum.cnf软件,设置绑定ip,默认数据库引擎及默认字符集为UTF-8
[mysql]
bind-address = 192.168.1.10
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
3.启动数据库并设置为开机自启动
systemctl start mariadb
systemctl enable mariadb
4.初始化数据库脚本
mysql_secure_installation

4.安装messaing server服务
1.功能:协调操作和状态信息服务
2.常用的消息代理软件
rabbitMQ、Qpid、ZeroMQ
3.在controller节点安装rabbitMQ
a.安装rabbitMQ软件包
yum -y install rabbitmq-server
b.启动服务并设置开机自启
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
c.rabbitmq默认用户名和密码是guest,可以通过下列命令修改
rabbitmqctl change_password guest new_password

5.安装时间同步服务器
1.安装
yum -y install ntp
2.配置时间服务器
vim /etc/ntp.conf
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
注释掉server...
server 127.127.1.0
fudge 127.127.1.0 stratum 10
3.开启时间同步服务器并设置自启
systemctl start ntpd
systemctl enable ntpd

6.配置安装keystone节点
1.配置先决条件
#创建认证服务数据库
#登录mysql数据库
mysql -u root -p
#创建keystone数据库
create database keystone;
#创建keystone数据库用户,使其可以对keystone数据库有完全控制权
grant all privileges on keystone.* to 'keystone'@'localhost' identified by 'KEYSTONE_PASS'
#生成一个随机值作为管理令牌在初始配置
openssl rand-hex 10;
2.安装和配置认证组件
#安装软件包
yum install -y openstack-keystone python-keystoneclient
#编辑/etc/keystone/keyston.conf
a.修改[DEFAULT]小节,定义初始管理令牌
[DEFAULT]
...
admin_token = 刚生成的随机值
b.修改[database]小节,配置数据库访问
[database]
...
connection = mysql://keystone:KEYSTONE_DBPASS@controller(或填ip地址)/keystons
c.修改[token]小节,配置UUID提供者和SQL驱动
[token]
...
provider = keystone.token.providers.uuid.Provider
drive = keystone.token.persistence.backends.sql.Token
d.(可选)开启详细日志,协助故障排除
[DEFAULT]
....
verbose = True
3.常见通用证书的秘钥,并限制相关文件的访问权限
keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
chown -R keystone:keystone /var/log/keystone
chown -R keystone:keystone /etc/keystone/ssl
chmod -R o-rwx /etc/kystone/ssl
4.初始化keystone数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
5.启动identity服务并设置开机启动
systemctl start openstack-keystone.service
systemctl enable openstack-keystone.service
6.默认情况下,服务器会无限存储到期的令牌,在资源有限的情况下会严重影响服务器的性能,建议用计划任务,每小时删除过期的令牌。
(crontab -l -u keystone 2>&1 |grep -q 'token_flush') ||\
echo '@hourly /usr/bin/keystone-manage token_flush>/var/log/keystone/keystone-tokenflush.log 2>&1'\
>>/var/spool/cron/keystone
7.创建tenants(租户),user(用户)和roles(角色)
#配置先决条件
a.配置管理员令牌
export OS_SERVICE_TOKEN=刚生成的字符串
b.配置端点
export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
#创建用于管理的租户、用户和角色
a.创建admin租户
keystone tenant-create --name admin --description "Admin Tenant"
b.创建admin用户
keystone user-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS
c.创建admin角色
keystone role-create --name admin
d.添加admin租户和用户到admin角色
keystone user-role-add --tenant admin --user admin --role _member_
8.创建一个用于演示的demo租户
a.创建demo租户
keystone tenant-create --name demo --description "Demo Tenant"
b.创建demo用户
keystone user-create --name demo --pass DEMO_PASS --email EMAIL_ADDRESS
c.添加demo租户和用户到_member_角色
keystone user-role-add --tenant demo --user demo --role _member_
9.OpenStack服务也需要一个租户、用户和角色与其他服务进行交互。因此我们创建一个service的租户。任何一个OpenStack服务都要和它关联
keystone tenant-create --name service --description "Service Tenant"
10.创建服务实体和API端点
#在OpenStack环境中,identity服务管理一个服务目录,并使用这个目录在OpenStack环境中定位其他服务。
#为identity服务创建一个服务实体
keystone service-create --name keystone --type identity --description "OpenStack identity"
#OpenStack环境中,identity服务管理目录以及服务相关API端点。服务使用这个目录来沟通其他服务
#OpenStack为每个服务提供了三个API端点:admin(管理),internal(内部),public(公共)
#为OpenStack服务创建API端点
keystone endpoint-create\
--service-id $(keystone service-list |awk '/identity/{print $2}')\
--publicurl http://controller:5000/v2.0\
--internalurl http://controller:5000/v2.0\
--adminurl http://controller:35357/v2.0\
--region regionOne
11.确认操作
a.删除OS_SERVICE_TOKEN和OS_SERVICE_ENDPOINT临时变量
unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
b.使用admin租户和用户请求认证令牌
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 token-get
c.以admin租户和用户身份查看租户列表
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-uri http://controller:35357/v2.0 tenant-list
d.以admin租户和用户的身份查看用户列表
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 user-list
e.以admin租户和用户的身份查看角色列表
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 role-list
f.以demo租户和用户身份请求认证令牌
keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller:35357/v2.0 token-get
g.以demo租户和用户的身份查看用户列表
keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller/v2.0 user-list
12.为OpenStack客户端创建环境变量脚本
#创建admin环境脚本
cat >admin-openrc.sh<<EOF
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PSS
export OS_AUTH_URL=http://controller:35357/v2.0
EOF
#创建demo租户用户环境脚本
cat>demo-openrc.sh<<EOF
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v2.0
EOF
#加载客户端环境脚本
source admin-openrc.sh

-----------------------------------------------------------------------------
===========================glance的安装部署==================================
***部署在controller节点***
1.创建数据库
a.登录数据库
mysql -uroot -p
b.创建glance数据库
create database glance;
c.创建数据库用户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';
d.退出数据库连接
2.启动admin环境脚本
source admin-openrc.sh
3.创建认证服务凭证
a.创建glance用户
keystone user-create --name glance --pass GLANCE_PASS
b.将glance用户连接到service租户和admin角色
keystone user-role-add --user glance --tenant service --role admin
c.创建glance服务
keystone service-create --name glance --type image --description "OpenStack Image Service"
4.为OpenStack镜像服务创建认证服务端点
keystone endpoint-create\
--service-id $(keystone service-list |awk '/image/{print $2}')\
--publicurl http://controller:9292\
--internalurl http://controller:9292\
--adminurl http://controller:9292\
--region regionOne
5.安装软件包
yum -y install openstack-glance python-glanceclient
6.编辑/etc/glance/glance-api.conf文件
a.修改[database]小节,配置数据库连接
[database]
...
connection = mysql://glance:GLANCE_DBPASS@controller/glance
b.修改[keystone_authtoken]和[paste_deploy]小节,配置认证服务访问
[keystone_authtoken]
...
auth_url = http://controller:5000/v2.0
identity_url = http://controller:35357
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS

[paste_deploy]
...
flavor = keystone
c.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
...
verbose = True
7.编辑/etc/glance/glance-registry.conf文件
a.在[database]小节中配置数据库连接
[database]
...
connection = mysql://glance:GLANCE_DBPASS@controller/glance
b.在[keystone_authtoken]和[paste_deploy]小节中配置认证服务访问
[keystone_authtoken]
...
auth_url = http://controller:5000/v2.0
identity_url = http://controller:35357
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS

[paste_deploy]
...
flavor = keystone
c.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
...
verbose = True
d.在[glance_store]小节配置本地文件系统存储和镜像文件的存放路径
[glance_store]
...
default_stone=file
filesystem_stone_datadir=/var/lib/glance/images/
8.初始化镜像服务的数据库
su -s /bin/sh -c "glance-manage db_sync" glance
9.启动服务并设置开机自起
systemctl start openstack-glance-api.service openstack-glance-registry.service
systemctl enable openstack-glance-api.service openstack-glance-registry.service
10.验证安装
a.创建一个临时目录
mkdir /tmp/images
cd /tmp/images
b.下载CirrOS镜像文件到临时目录
wget http://cdn.download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img (真实环境)
wget ftp://ftp服务器ip/cirros-0.3.3-x86_64-disk.img (实验环境)
c.运行admin环境脚本,以便执行管理命令
source admin-openrc.sh
d.上传镜像文件到镜像服务器
glance image-create --name "cirros-0.3.3-x86_64" --file cirros-0.3.3-x86_64-disk.img\
--disk-format qcow2 --container-format bare --is-public True --progress
--progress :显示上传进度
e.确认镜像文件上传并验证属性
glance image-list

--------------------------------------------------------------------------
===========================nova的安装部署=================================
***部署在controller节点***
1.安装时间同步服务
yum -y install ntpdate
2.controller节点配置数据库
a.使用数据库管理员root登录数据库
mysql -uroot -p
b.创建nova数据库
create database nova;
c.创建数据库用户nova,并授权nova用户对nova数据库的完全控制权限
grant all privileges on nova.* to 'nova'@'localhost' identified by 'NOVA_DBPASS';
grant all privileges on nova.* to 'nova'@'%' identified by 'NOVA_DBPASS';
d.退出数据库连接
3.执行admin环境脚本
source admin-openrc.sh
4.在认证服务中创建计算服务的认证信息
a.创建nova用户
keystone user-create --name nova --pass NOVA_PASS
b.链接nova用户到service租户和admin角色
keystone user-role-add --user nova --tenant service --role admin
c.创建nova服务
keystone service-create --name nova --type compute --description "OpenStack Compute"
5.创建计算服务端点
keystone endpoint-create \
--service-id $(keystone service-list | awk '/compute/{print $2}')\
--publicurl http://controller:8744/v2/%\(tenant_id\)s\
--internalurl http://controller:8744/v2/%\(tenant_id\)s\
--adminurl http://controller:8744/v2/%\(tenant_id\)s\
--region regionOne
6.安装软件包
yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
7.编辑/etc/nova/nova.conf文件
a.编辑[database]小节,配置数据库访问
[database]
...
connection=mysql://nova:NOVA_DBPASS@controller/nova
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务
[DEFAULT]
...
auth_strategy=keystone

[keystone_authtoken]
...
aurh_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=nova
admin_password=NOVA_PASS
d.编辑[DEFAULT]小节,配置my_ip选项为controller节点的管理接口ip
[DEFAULT]
...
my_ip=192.168.1.10
e.编辑[DEFAULT]小节,配置VNCdialing服务的使用controller节点的管理接口ip
[DEFAULT]
...
vncserver_listen=192.168.1.10
vncserver_proxyclient_address=192.168.1.10
f.编辑[glance]小节,配置镜像服务器的位置
[glance]
...
host=controller
g.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
...
verbose=True
8.初始化计算数据库
su -s /bin/sh -c "nova-manage db sync" nova
9.启动服务并设置开机自启
systemctl start 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 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
-----------------------------------------------------------------------
***部署在compute节点***
10.安装并配置计算虚拟化组件
1.安装软件包
yum -y install openstack-nova-compute sysfsutils
2.编辑/etc/nova/nova.conf文件
a.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
b.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问
[DEFAULT]
...
auth_strategy=keystone

[keystone_authtoken]
...
auth_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=nova
admin_password=NOVA_PASS
c.编辑[DEFAULT]小节,配置my_ip配置项
[DEFAULT]
...
my_ip=MANAGEMENT_INTERFACE_IP_ADDRESS(192.168.1.11)
d.编辑[DEFAULT]小节,开启并配置远程控制台访问
[DEFAULT]
...
vnc_enabled=True
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=MANAGEMENT_INTERFACE_IP_ADDRESS(192.168.1.11)
novncproxy_base_url=http://controller:6080/vnc_auto.html #生成不同租户的连接地址
e.编辑[glance]小节,配置镜像服务器位置
[glance]
...
host=controller
f.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
...
verbose=True
3.完成安装
1.确认你的节点是否支持虚拟化
egrep -c '(vmx|svm)' /proc/cpuinfo
如果返回值>=1,则说明你的计算节点硬件支持虚拟化,无需额外配置
如果返回值=0,则说明你的计算节点不支持虚拟化,你必须配置libvirt由使用KVM改为QEMU
在/etc/nova/nova.conf文件中编辑[libvirt]小节
[libvirt]
...
virt_type=qemu
2.启动计算服务以及依赖服务,并设置开机自启
systemctl start libvirtd.service openstack-nova-compute.service
systemctl enable libvirtd.service openstack-nova-compute.service
4.在controller节点验证安装
1.启动admin环境脚本
source admin-openrc.sh
2.列出服务组件确认每一个进程启动成功
nova service-list
3.列出镜像服务中的镜像列表,确认连接认证服务器和镜像服务器成功
nova image-list
---------------------------------------------------------------------------------
==============================neutron的安装部署==================================
***controller节点部署***
1.创建数据库
a.使用root用户连接数据库
mysql -uroot -p
b.创建neutron数据库
create database neutron;
c.创建数据库用户neutron,并授予neutron用户对neutron数据库完全控制住权限
grant all privileges on neutron.* to 'neutron'@'localhost' identified by 'NEUTRON_DBPASS';
grant all privileges on neutron.* to 'neutron'@'%' identified by 'NEUTRON_DBPASS';
d.退出数据库
2.执行admin环境变量脚本
source admin-openrc.sh
3.在认证服务中创建网络服务的认证信息
a.创建neutron用户
keystone user-create --name neutron --pass NEUTRON_PASS
b.连接neutron用户到service租户和admin角色
keystone user-role-add --user neutron --tenant service --role admin
c.创建neutron服务
keystone service-create --name neutron --type network --description "OpenStack Networking"
d.创建neutron服务端点
keystone endpoint-create\
--service-id $(keystone service-list | awk '/network/{print $2}')\
--publicurl http://controller:9696\
--adminurl http://controller:9696\
--internalurl http://controller:9696\
--region regionOne
4.安装网络服务组件
yum install -y openstack-neutron openstack-neutron-ml2 python-neutronclient which
5.配置网络服务组件,编辑/etc/neutron/neutron.conf文件
a.编辑[database]小节,配置数据库访问
[database]
...
connection=mysql://neutron:NEUTRON_DBPASS@controller/neutron
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
d.编辑[DEFAULT]小节,启动Modular Layer2(ML2)插件,路由服务和重叠ip地址功能
[DEFAULT]
...
core_plugin=ml2
service_plugins=router
e.编辑[DEFAULT]小节,配置当网络拓扑结构发生变化时通知计算服务
[DEFAULT]
...
notify_nova_on_port_status_changes=True
notify_nova_on_port_data_changes=True
nova_url=http://controller:8774/v2.0
nova_admin_auth_url=http://controller:35357/v2.0
nova_region_name=regionOne
nova_admin_username=nova
nova_admin_tenant_id=SERVICE_TENANT_ID
nova_admin_password=NOVA_PASS
注:可通过keystone tenant-get service,获取service租户ID
f.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
...
verbose=True
6.配置Modular Layer2(ML2)plug-in
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件
a.编辑[ml2]小节,启动flat和generic routing encapsulation(GRE)网络类型驱动,配置GRE租户网络和OVS驱动机制
[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.编辑[ml2_type_gre]小节,配置隧道标识范围
[ml2_type_gre]
...
tunnel_id_ranges=1:1000
c.编辑[securitygroup]小节,启用安全组,启用ipset并配置OVS防火墙驱动
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
7.配置计算服务使用neutron
默认情况下,计算服务使用传统网络,我们需要重新配置
编辑/etc/nova/nova.conf文件
a.编辑[ DEFAULT]小节,配置API接口和驱动程序
[DEFAULT]
...
network_api_class=nova.network.neutronv2.api.API
security_group_api=neutron
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDrive
firewall_drive=nova.virt.firewall.NoopFirewallDriver
b.编辑[neutron]小节,配置访问参数
[neutron]
...
url=http://controller:9696
auth_strategy=keystone
admin_auth_url=http://controller:35357/v2.0
admin_tenant_name=service
admin_username=neutron
admin_password=NEUTRON_DBPASS
8.完成配置
a.为ML2插件配置文件创建连接文件
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
b.初始化数据库
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron
c.重新启动计算服务
systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service
d.启动网络服务并配置开机自动启动
systemctl start neutron-server.service
systemctl enable neutron-server.service
9.验证
a.执行admin环境变量脚本
source admin-openrc.sh
b.列出加载的扩展模块,确认成功启动neutron-server进程
neutron ext-list

---------------------------------------------------------------------------------
***neutron节点安装***
10.安装ntp时间服务器同步时间
yum -y install ntpdate
11. 编辑/etc/sysctl.conf文件
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
12.使更改生效
sysctl -p
13.安装网络组件
yum -y install openstack-neutron-ml2 openstack-neutron-openvswitch
14.配置网络通用组件
网络通用组件配置包含认证机制,消息队列及插件
编辑/etc/neutron/neutron.conf文件
a.编辑[database]小节,注释任何connection选项。因为network节点不能直接连接数据库
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问
[DEFAULT]
...
auth_strategy=keystone

[keystone_authtoken]
...
auth_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_DBPASS
d.编辑[DEFAULT]小节,启用Modular Layer2(ML2)插件,路由服务和重叠ip地址功能
[DEFAULT]
...
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True
e.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
...
verbose=True
15.配置Modular Layer 2(ML2)plug-in
ML2插件使用Open vSwitch (OVS)机制虚拟机实例提供网络框架
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件
a.编辑[ml2]小节,启用flat和generic routing encapsulation(GRE)网络类型驱动,配置GRE租户网络和OVS驱动机制
[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.编辑[ml2_type_flat]小节,配置外部网络
[ml2_type_flat]
...
flat_networks=external
c.编辑[ml2_type_gre]小节,配置隧道标识范围
[ml2_type_gre]
...
tunnel_id_ranges=1:1000
d.编辑[securitygroup]小节,启用安全组,启用ipset并配置OVS防火墙驱动
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
e.编辑[ovs]小节,配置Open vSwitch(OVS)代理
[ovs]
...
local_ip=INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS(192.168.1.12)
tunnel_type=gre
enable_tunneling=True
bridge_mapping=external:br-ex
16.配置Layer-3(L3)agent
编辑/etc/neutron/l3_agent.ini文件并完成下列配置
a.编辑[DEFAULT]小节,配置驱动,启用网络命名空间,配置外部网络桥接
[DEFAULT]
...
interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces=True
external_network_bridge=bt-ex
b.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
...
verbose=True
17.配置DHCP agent
编辑/etc/neutron/dhcp_agent.ini文件
a.编辑[DEFAULT]小节,配置驱动和启动命名空间
[DEFAULT]
...
interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq
use_namespaces=True
b.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
...
verbose=True
18.(可选,在VMware虚拟机中可能是必要的!)配置DHCP选项,将MUT改为1454bytes,以改善网络性能
a.编辑/etc/neutron/dhcp_agent.ini文件
编辑[DEFAULT]小节,启用dnsmasq配置
[DEFAULT]
...
dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf
b.创建并编辑/etc/neutron/dnsmasq-neutron.conf文件
启用DHCP MTU选项(26)并配置值为1454bytes
dhcp-option-force=26,1454
user=neutron
group=neutron
c.终止任何已经存在的dnsmasq运行
pkill dnsmasq
19.配置metadata agent
1.编辑/etc/neutron/metadata_agent.ini文件并完成下列配置
a.编辑[DEFAULT]小节,配置访问参数
[DEFAULT]
...
auth_url=http://controller:5000/v2.0
auth_region=regionOne
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
b.编辑[DEFAULT]小节,配置元数据主机
[DEFAULT]
...
nova_metadata_ip=controller
c.编辑[DEFAULT]小节,配置元数据代理共享机密暗号
[DEFAULT]
...
metadata_proxy_shared_secret=METADATA_SECRET
d.(可选)在[DEFAULT]小节配置详细日志输出,方便排错
[DEFAULT]
...
verbose=True
20.在controller节点,编辑/etc/nova/nova.conf文件并完成下列配置
编辑[neutron]小节,启用元数据代理并配置机密暗号
[neutron]
...
service_metadata_proxy=True
metadata_proxy_shared_secret=METADATA_SECRET
21.在controller节点,重新启动compute API服务
systemctl restart openstack-nova-api.service
22.配置Open vSwitch(OVS)服务
a.启动OVS服务并配置开机自动启动
systemctl start openvswitch.service
systemctl enable openvswitch.service
b.添加外部网桥
ovs-vsctl add-br br-ex
c.添加一个端口到外部网桥,用于连接外部物理网络
ovs-vsctl add-port br-ex INTERFACE_NAME
注:将INTERFACE_NAME换成实际连接外部网卡接口名,如eth2或eno50332208
23.完成安装
1.创建网络服务初始化脚本的符号连接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
cp /usr/lib/systemd/system/neutron-openvswitch-agnet.service /usr/lib/systemd/system/neutron-openvswitch-agnet.service.orig
sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agnet.service
2.启动网络服务并设置开机自启
systemctl start neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata_agent.service neutron-ovs-cleanup.service
systemctl enable neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata_agent.service neutron-ovs-cleanup.service
24.验证(在controller节点执行下列命令)
1.执行admin环境变量脚本
source admin-openrc.sh
2.列出neutron代理,确认启动neutron agents成功
neutron agent-list

----------------------------------------------------------------------------------
***computea节点上安装部署***
1.配置/etc/sysctl.conf文件
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
2.使/etc/sysctl.conf文件中的更改生效
sysctl -p
3.安装网络组件
yum -y install openstack-neutron-ml2 openstack-neutron-openvswitch
4.配置网络通用组件
a.编辑[database]小节,注释左右connection配置项,因为计算节点不能直接连接数据库
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问
[DEFAULT]
...
auth_strategy=keystone

[keystone_authtoken]
...
auth_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
d.编辑[DEFAULT]小节,启用Modular Layer2(ML2)插件,路由服务和重叠ip地址功能
[DEFAULT]
...
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True
e.(可选)在[DEFAULT]小节中配置详细日志输出,方便管理排错
[DEFAULT]
...
verbose=True
5.配置Modular Layer 2 (ML2)plug-in
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成下列操作
a.编辑[ml2]小节,启用flat和generic routing encapsulation(GRE)网络类型驱动,GRE租户网络和OVS机制驱动
[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.编辑[ml2_type_gre]小节,配置隧道标识符(id)范围
[ml2_type_gre]
...
tunnel_id_ranges=1:1000
c.编辑[securitygroup]小节,启用安全组,IPset并配置OVS iptables防火墙驱动
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_drive=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
d.编辑[ovs]小节,配置Open vSwitch (OVS)agent
[ovs]
...
local_ip=INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
tunnel_type=gre
enable_tunneling=True
6.配置Open vSwich (OVS)service
启动OVS服务并设置开机自动启动
systemctl enable openvswitch.service
systemctl start openvswitch.service
7.配置计算服务使用网络
编辑/etc/nova/nova.conf文件并完成下列操作
a.编辑[DEFAULT]小节,配置API接口和驱动
[DEFAULT]
...
network_api_class=nova.network.neutronv2.api.API
security_group_api=neutron
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDrive
firewall_drive=nova.virt.firewall.NoopFirewallDriver
b.编辑[neutron]小节,配置访问参数
[neutron]
...
url=http://controller:9696
auth_strategy=keystone
admin_auth_url=http://controller:35357/v2.0
admin_tenant_name=service
admin_username-neutron
admin_password=NEUTRON_PASS
8.完成安装
1.创建网络服务初始化脚本的符号连接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
cp /usr/lib/systemd/system/neutron-openvswitch-agent.service /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig
sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agent.service
2.重启计算服务
systemctl restart openstack-nova-compute.service
3.启动OVS代理服务并设置开机自动启动
systemctl start neutron-openvswitch-agent.service
systemctl enable neutron-openvswitch-agent.service
9.验证(在controller节点执行下列命令)
1.执行admin环境变量脚本
source admin-openrc.sh
2.列出neutron代理,确认启动neutron agents成功
neutron agent-list

-----------------------------------------------------------------------------
创建一个外部网络:
1.执行admin环境变量脚本
source admin-openrc.sh
2.创建网络
neutron net-create ext-net --shared --router:external True --provider:physical_network external --provider:network_type flat
创建一个外部网络的子网:
创建子网
neutron subnet-create ext-net --name ext-subnet\
--allocation-pool start=FLOATING_IP_START,end=FLOATING_IP_END\
--disable-dhcp --gateway EXTERNAL_NETWORK_GATEWAY EXTERNAL_NETWORK_CIDR
FLOATING_IP_START=起始ip
FLOATING_IP_END=结束ip
EXTERNAL_NETWORK_GATEWAY=外部网络网关
EXTERNAL_NETWORK_CIDR=外部网络网段

例如:外网网段为10.0.0.0/24,浮动地址范围为:10.0.0.100~10.0.0.200,网关为:10.0.0.1
neutron subnet-create ext-net --name ext-subnet\
--allocation-pool start=10.0.0.100,end=10.0.0.200\
--disable-dhcp --gateway 10.0.0.1 10.0.0.0/24

创建一个租户网络:
1.执行demo环境变量脚本
source demo-openrc.sh
2.创建租户网络
neutron net-create demo-net

创建一个租户网络的子网:
创建子网
neutron subnet-create demo-net --name demo-subnet \
--gateway TENANT_NETWORK_GATEWAY TENANT_NETWORK_CIDR
TENANT_NETWORK_GATEWAY=租户网的网关
TENANT_NETWORK_CIDR=租户网的网段

例如:租户网的网段为192.168.2.0/24,网关为192.168.2.1(网关通常默认为1)
neutron subnet-create demo-net --name demo-subnet\
--gateway 192.168.2.1 192.168.2.0/24

在租户网络创建一个路由器,用来连接外部网和租户网
1.创建路由器
neutron router-create demo-router
2.附加路由器到demo租户的子网
neutron router-interface-add demo-router demo-subnet
3.通过设置网关,使路由器附加到外部网
neutron router-gateway-set demo-router ext-net

确认连接
1.查看路由器获取到的ip
neutron router-list

------------------------------------------------------------------------
============================cinder组件的安装部署=========================
***controller节点部署***
1.创建数据库
a.以数据库管理员root身份连接数据库
mysql -uroot -p
b.创建cinder数据库
create database cinder;
c.创建数据库用户cinder,并授权cinder用户对cinder数据库的完全控制权限
grant all priviles on cinder.* to 'cinder'@'localhost' identified by 'CINDER_DBPASS';
grant all priviles on cinder.* to 'cinder'@'%' identified by 'CINDER_DBPASS';
d.退出数据库连接
2.执行admin环境变量脚本
source admin-openrc.sh
3.在认证服务中创建网络服务的认证信息
a.创建cinder用户
keystone user-create --name cinder --pass CINDER_PASS
b.链接cinder用户到service租户和admin角色
keystone user-role-add --user cinder --tenant service --role admin
c.创建cinder服务
keystone service-create --name cinder --type volume --description "OpenStack Blocak Storage"
keystone service-create --anme cinderv2 --type volumev2 --description "OpenStack Blocak Storage"
d.创建块存储服务端点
keystone endpoint-create\
--service-id $(keystone service-list |awk '/volume/{print $2}')\
--publicurl http://controller:8776/v1/%\(tenant_id\)s\
--internalurl http://controller:8776/v1/%\(tenant_id\)s\
--adminurl http://controller:8776/v1/%\(tenant_id\)s\
--region regionOne
keystone endpoint-create\
--service-id $(keystone service-list |awk '/volumev2/{print $2}')\
--publicurl http://controller:8776/v2/%\(tenant_id\)s\
--internalurl http://controller:8776/v2/%\(tenant_id\)s\
--adminurl http://controller:8776/v2/%\(tenant_id\)s\
--region regionOne
4.安装并配置块存储控制组件
1.安装软件包
yum -y install openstack-cinder python-cinderclient python-oslo-db
2.编辑/etc/cinder/cinder.conf文件
a.编辑[database]小节,配置数据库连接
[database]
...
connection=mysql://cinder:CINDER_DBPASS@controller/cinder
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问
[DEFAULT]
...
auth_strategy=keystone

[keystone_authtoken]
...
auth_uri=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASS
d.编辑[DEFAULT]小节,配置my_ip选项为controller节点的控制接口ip
[DEFAULT]
...
my_ip=192.168.1.10
e.(可选)在[DEFAULT]小节中配置详细的日志输出,方便排错
[DEFAULT]
...
verbose=True
3.初始化存储服务数据库
su -s /bin/sh -c "cinder-manage db sync" cinder
4.完成安装,启动块存储服务并设置开机自动启动
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
------------------------------------------------------------------------------------
***block节点安装部署***
1.添加一个新的硬盘(如:sdb),并将全部空间分成一个区
2.配置网卡信息
IP address:192.168.1.13
Network mask:255.255.255.0
Default gateway:192.168.1.254
3.设置主机名为block,并添加对应的hosts解析。设置NTP服务
4.安装LVM软件包
yum -y install lvm2
5.启动LVM服务并设置开机自动启动
systemctl start lvm2-lvmetad.service
systemctl enable lvm2-lvmetad.service
6.创建物理卷/dev/sdb1(名字不要改)
pvcreate /dev/sdb1
7.创建卷组cinder-volumes(名字不要改)
vgcreate cinder-volumes /dev/sdb1
8.编辑/etc/lvm/lvm.conf文件,使系统只扫描启用LVM的磁盘。防止识别其他非LVM磁盘对块存储服务造成的影响
编辑devices小节,添加过滤器允许/dev/sdb磁盘,拒绝其他设备
devices{
...
filter=["a/sdb/","r/.*/"]
警告:如果你的系统磁盘使用了LVM,则必须添加系统盘到过滤器中
filter=["a/sdb","a/sdb/","r/.*/"]
同样,如果compute节点的系统盘也使用了LVM,则也需要修改/etc/lvm/lvm.conf.并添加过滤器
filter=["a/sdb/","r/.*/"]
}
9.安装并配置块存储控制组件
1.安装软件包
yum -y install openstack-cinder targetcli python-oslo-db MySQL-python
2.编辑/etc/cinder/cinder.conf文件
a.编辑[database]小节,配置数据库访问
[database]
...
connection=mysql://cinder:CINDER_DBPASS@controller/cinder
b.编辑[DEFAULT]小节,配置RabbitMQ消息代理访问
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问
[DEFAULT]
...
auth_strategy=keystone

[keystone_authtoken]
...
aurh_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASS
d.编辑[DEFAULT]小节,配置my_ip配置项
[DEFAULT]
...
my_ip=MANAGEMENT_INTERFACE_IP_ADDRESS
e.编辑[DEFAULT]小节,配置镜像服务器位置
[DEFAULT]
...
glance_host=controller
f.编辑[DEFAULT]小节,配置块存储服务使用lioadm ISCSI服务
[DEFAULT]
...
iscsi_helper=lioadm
g.(可选)在[DEFAULT]小节中配置详细日志输出,方便排错
[DEFAULT]
verbose=True
3.完成安装
启动块存储volume服务和ISCSI服务,并设置开机自启
systemctl start openstack-cinder-volume.service target.service
systemctl enable openstack-cinder-volume.service target.service
4.验证(在controller几点完成以下操作)
1.执行admin环境变量脚本
source admin-openrc.sh
2.列出服务组件确认每个进程启动成功
cinder service-list
3.执行demo用户环境变量脚本
source demo-openrc.sh
4.创建1GB卷
cinder create --display-name demo-volume1 1
5.确认卷已创建并可用
cinder list

------------------------------------------------------------------------------------
====================================================================================
************************************实例创建****************************************
1.创建秘钥对
大多数云镜像使用公钥认证,这有别与传统的用户名/密码认证。在启动一个实例之前,你必须使用ssh-keygen命令生成一个秘钥对,并将秘钥对添到你的OpenStack环境
1.执行demo环境变量脚本
source demo-openrc.sh
2.生成秘钥对
ssh-keygen
3.添加公钥到OpenStack环境中
nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-key
4.验证公钥是否添加成功
nova keypair-list

2.启动一个实例
要启动一个实例,你必须最少指定flavor(云主机类型),image name(镜像名),network(网络),security group(安全组),key(秘钥)和instance name(实例名)。
1.flavor用来指定一个虚拟的独立分配的资源。包括cpu、内存和存储
查看可用的flavor
nova flavor-list
2.列出可用的镜像
nova image-list
3.列出可用的网络
neutron net-list
4.列出可用的安全组
nova secgroup-list
5.启动实例
nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=DEMO_NET_ID --security-group default --key-name demo-key demo-instance1
6.查看实例
nova list
7.通过虚拟控制台访问实例
查看实例访问url
nova get-vnc-console demo-instance1 novnc

3.远程访问实例
1.添加规则名为default的安全组
a.允许ICMP协议(ping)
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
b.允许ssh协议
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
2.在ext-net外部网络创建一个浮动ip地址
neutron floatingip-create ext-net
3.分配浮动ip地址到实例
nova floating-ip-associate demo-instance1 创建的浮动ip地址
4.检查浮动ip地址状态
nova list
5.从任何一个可以和ext-net网络通信的主机测试连通性
ping -c 4 浮动IP地址
6.从任何一个可以和ext-net网络通信的主机上通过ssh访问实例
ssh 用户@浮动IP地址
或将私钥文件复制到外部客户端,通过秘钥对验证登录
ssh -i id_rsa 用户@浮动IP地址

4.实例添加额外的云硬盘
1.执行demo环境变量脚本
source demo-openrc.sh
2.列出卷
nova volume-list
3.附加demo-volume1卷到demo-instance1实例
nova volume-attach demo-instance1 云盘UUID
4.列出卷
nova volume-list
5.实例查看磁盘
lsblk
6.分区磁盘
fdisk
7.格式化磁盘
mkfs -t ext4 /dev/vdb1
8.挂载
mount -t ext4 /dev/vdb1 /data
9.查看挂载
lsblk/df -h

5.图形界面操作
登录dashboard进程实例的相关操作